TRL documentation

أدوات قوالب المحادثة

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

أدوات قوالب المحادثة

لمراجعة عامة للقوالب المحادثة المرفقة مع TRL والمنطق وراء رقع التدريب، راجع قوالب المحادثة.

clone_chat_template

trl.clone_chat_template

< >

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

المعاملات

  • model (PreTrainedModel) — النموذج الذي سيتم تحديثه.
  • tokenizer (PreTrainedTokenizerBase) — المُرمِّز الذي سيتم تحديثه.
  • source_tokenizer_path (str) — المسار أو المعرّف لمُجزِّئ الرموز المُدرَّب مسبقًا الذي سيتم نسخه منه.
  • resize_to_multiple_of (int أو None، اختياري، القيمة الافتراضية 64) — سيتم تغيير حجم طبقة التضمين (embedding) لتناسب حجم المفردات الجديد. إذا لم تكن هذه القيمة None، فسيتم تقريب حجم المفردات الجديد إلى أقرب مضاعف لهذه القيمة.

يعيد

النموذج (PreTrainedModel)

تم تحديث النموذج مع إعادة تعيين حجم تضمينات الرموز (token embeddings) وإعداد رمز نهاية الجملة (EOS token). tokenizer (PreTrainedTokenizerBase): تم تحديث مُجزّئ الرموز (tokenizer) مع تطبيق قالب المحادثة والرموز الخاصة. added_tokens (list[int]): قائمة بالرموز التي أُضيفت إلى مُجزّئ الرموز من مُجزّئ الرموز المصدر.

ينشئ نسخة من قالب المحادثة من مُرمِّز المصدر إلى مُرمِّز الهدف ويحدّث النموذج وفقاً لذلك.

تقوم هذه الدالة بما يلي:

  • ينسخ قالب المحادثة من مُرمِّز المصدر إلى مُرمِّز الهدف.
  • يضيف أي رموز جديدة من مُجزّئ المصدر إلى مُجزّئ الهدف.
  • يُعيّن رمز EOS ويزامنّه بين مُجزّئ النص والنموذج.
  • يعيد تحديد أبعاد تضمينات الرموز (token embeddings) للنموذج لتتوافق مع حجم المفردات الجديد، مع إمكانية تقريبه لأعلى إلى مضاعف لقيمة محددة. في مثل هذه الحالات، تُضاف رموز وهمية إلى مُجزّئ النص (tokenizer) لضمان تطابق حجم المفردات مع أبعاد التضمين.

مثال:

>>> 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

المعاملات

  • processing_class (PreTrainedTokenizerBase أو ProcessorMixin) — مثال على مُجزِّئ أو مُعالِج للتحقق منه.

يعيد

bool

True إذا حافظ قالب المحادثة على البادئات، وإلا False.

تحقق مما إذا كانت قالب المحادثة يحافظ على البادئات عند تطبيقه.

يقوم قالب المحادثة الذي يحافظ على البادئة بعرض الرسائل السابقة بشكل متطابق بغض النظر عن الرسائل التي تليها. هذه الخاصية مطلوبة بواسطة _get_tool_suffix_ids، الذي يستخرج رموس تنسيق استجابة الأداة من خلال مقارنة عمليات الترميز مع وجود رسائل الأداة المضافة وبدونها.

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

المعاملات

  • processing_class (PreTrainedTokenizerBase أو ProcessorMixin) — مثال على مُجزِّئ أو مُعالِج للتحقق منه.

يعيد

str أو None

قالب محادثة متوافق مع التدريب، أو None إذا لم تكن هناك حاجة إلى أي ترقيع.

احصل على قالب محادثة متوافق مع التدريب، إذا لزم الأمر.

يعيد قالب محادثة مُعدّل يحافظ على البادئة ويتضمن علامات {%% generation %%} / {%% endgeneration %%} لإخفاء الخسارة الخاصة بالمساعد فقط. يعيد None إذا كان القالب يحقق بالفعل كلا الشرطين. القوالب المدعومة مذكورة في قوالب التدريب.

مثال:

>>> 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