TRL documentation

Utilitas template chat

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.17.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Utilitas template chat

Untuk ringkasan tentang template chat yang disertakan dengan TRL dan alasan di balik patch pelatihan, lihat Template Chat.

clone_chat_template

trl.clone_chat_template

< >

( model: PreTrainedModeltokenizer: PreTrainedTokenizerBasesource_tokenizer_path: strresize_to_multiple_of: int | None = 64 ) → model (PreTrainedModel)

Parameter

  • model (PreTrainedModel) — Model yang akan diperbarui.
  • tokenizer (PreTrainedTokenizerBase) — Tokenizer yang akan diperbarui.
  • source_tokenizer_path (str) — Path atau identifier dari pretrained tokenizer yang akan dikloning.
  • resize_to_multiple_of (int atau None, opsional, default 64) — Lapisan embedding akan di-resize ke ukuran kosakata baru. Jika ini bukan None, ukuran kosakata baru akan dibulatkan ke atas ke kelipatan terdekat dari nilai ini.

Mengembalikan

model (PreTrainedModel)

Model diperbarui dengan token embeddings yang di-resize dan token EOS yang dikonfigurasi. tokenizer (PreTrainedTokenizerBase): Tokenizer diperbarui dengan chat template dan special tokens yang diterapkan. added_tokens (list[int]): Daftar token yang ditambahkan ke tokenizer dari tokenizer sumber.

Mengklon template chat dari tokenizer sumber ke tokenizer target dan memperbarui model secara sesuai.

Fungsi ini:

  • Menyalin template chat dari tokenizer sumber ke tokenizer target.
  • Menambahkan token baru apa pun dari tokenizer sumber ke tokenizer target.
  • Mengatur dan menyinkronkan token EOS di antara tokenizer dan model.
  • Mengubah ukuran token embeddings model agar sesuai dengan ukuran kosakata baru, dengan opsi pembulatan ke atas menjadi kelipatan dari nilai yang ditentukan. Dalam kasus seperti itu, token dummy ditambahkan ke tokenizer untuk memastikan ukuran kosakata sesuai dengan dimensi embedding.

Contoh:

>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> from trl import clone_chat_template

>>> model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-1B")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.2-1B")
>>> model, tokenizer, added_tokens = clone_chat_template(model, tokenizer, "Qwen/Qwen3-0.6B")

is_chat_template_prefix_preserving

trl.chat_template_utils.is_chat_template_prefix_preserving

< >

( processing_class: transformers.tokenization_utils_base.PreTrainedTokenizerBase | transformers.processing_utils.ProcessorMixin ) → bool

Parameter

  • processing_class (PreTrainedTokenizerBase atau ProcessorMixin) — Instans tokenizer atau processor untuk diperiksa.

Mengembalikan

bool

True jika template chat mempertahankan prefiks, False jika tidak.

Periksa apakah template chat mempertahankan prefiks saat diterapkan.

Template chat yang mempertahankan prefiks merender pesan-pesan sebelumnya secara identik terlepas dari pesan apa pun yang mengikutinya. Sifat ini diperlukan oleh _get_tool_suffix_ids, yang mengekstrak token format respons alat dengan membandingkan tokenisasi dengan dan tanpa pesan alat yang ditambahkan.

get_training_chat_template

trl.get_training_chat_template

< >

( processing_class: transformers.tokenization_utils_base.PreTrainedTokenizerBase | transformers.processing_utils.ProcessorMixin | None = Nonetokenizer: transformers.tokenization_utils_base.PreTrainedTokenizerBase | None = None ) → str or None

Parameter

  • processing_class (PreTrainedTokenizerBase atau ProcessorMixin) — Instans tokenizer atau processor untuk diperiksa.

Mengembalikan

str atau None

Template chat yang kompatibel dengan pelatihan, atau None jika tidak diperlukan patching.

Dapatkan template chat yang kompatibel dengan pelatihan, jika diperlukan.

Mengembalikan template chat yang telah di-patch, bersifat prefix-preserving, dan mencakup penanda {%% generation %%} / {%% endgeneration %%} untuk masking loss khusus asisten. Mengembalikan None jika template sudah memenuhi kedua persyaratan tersebut. Template yang didukung tercantum dalam Training templates.

Contoh:

>>> from trl.chat_template_utils import get_training_chat_template
>>> from transformers import AutoTokenizer

>>> tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-0.6B")
>>> messages1 = [
...     {"role": "user", "content": "What is 2 * 3?"},
...     {
...         "role": "assistant",
...         "content": "",
...         "tool_calls": [{"type": "function", "function": {"name": "multiply", "arguments": {"a": 2, "b": 3}}}],
...     },
... ]
>>> messages2 = messages1 + [
...     {"role": "tool", "name": "multiply", "content": "6"},
... ]
>>> tokenizer.apply_chat_template(messages1, tokenize=False)
'<|im_start|>user\nWhat is 2 * 3?<|im_end|>\n<|im_start|>assistant\n<think>\n\n</think>\n\n<tool_call>\n{"name": "multiply", "arguments": {"a": 2, "b": 3}}\n</tool_call><|im_end|>\n'

>>> tokenizer.apply_chat_template(messages2, tokenize=False, add_generation_prompt=True)
'<|im_start|>user\nWhat is 2 * 3?<|im_end|>\n<|im_start|>assistant\n<tool_call>\n{"name": "multiply", "arguments": {"a": 2, "b": 3}}\n</tool_call><|im_end|>\n<|im_start|>user\n<tool_response>\n6\n</tool_response><|im_end|>\n<|im_start|>assistant\n'

>>> #                                                        ^ think tags missing
>>> chat_template = get_training_chat_template(tokenizer)
>>> tokenizer.apply_chat_template(messages1, tokenize=False, chat_template=chat_template)
'<|im_start|>user\nWhat is 2 * 3?<|im_end|>\n<|im_start|>assistant\n<think>\n\n</think>\n\n<tool_call>\n{"name": "multiply", "arguments": {"a": 2, "b": 3}}\n</tool_call><|im_end|>\n'

>>> tokenizer.apply_chat_template(
...     messages2, tokenize=False, add_generation_prompt=True, chat_template=chat_template
... )
'<|im_start|>user\nWhat is 2 * 3?<|im_end|>\n<|im_start|>assistant\n<think>\n\n</think>\n\n<tool_call>\n{"name": "multiply", "arguments": {"a": 2, "b": 3}}\n</tool_call><|im_end|>\n<|im_start|>user\n<tool_response>\n6\n</tool_response><|im_end|>\n<|im_start|>assistant\n'
Update on GitHub