بدءًا من Gemma 4، سنقدّم رموز تحكّم جديدة. بالنسبة إلى إصدار Gemma 3 والإصدارات الأقدم، يُرجى الاطّلاع على المستند السابق.
تحدّد الأقسام التالية رموز التحكّم التي تستخدمها Gemma 4 وحالات استخدامها. يُرجى العِلم أنّ رموز التحكّم محجوزة ومخصّصة لأداة تقسيم الكلمات.
- رمز مميّز للإشارة إلى تعليمات النظام:
system - الرمز المميز للإشارة إلى دور المستخدم:
user - الرمز المميز للإشارة إلى دور النموذج:
model - رمز مميّز للإشارة إلى بداية دور في الحوار:
<|turn> - الرمز المميّز للإشارة إلى نهاية دور في الحوار:
<turn|>
في ما يلي مثال على حوار:
<|turn>system
You are a helpful assistant.<turn|>
<|turn>user
Hello.<turn|>
الوسائط المتعددة
| الرمز المميز المتعدد الوسائط | الغرض |
|---|---|
<|image> <image|> |
تحديد تضمينات الصور |
<|audio> <audio|> |
الإشارة إلى المحتوى الصوتي المضمّن |
<|image|> <|audio|> |
رموز مميّزة خاصة للعناصر النائبة |
نستخدم رمزين مميزين خاصين للعناصر النائبة (<|image|> و<|audio|>) لتحديد مكان إدراج الرموز المميزة للصور والمقاطع الصوتية. بعد تحويل النص إلى رموز مميزة، يتم استبدال هذه الرموز بالتمثيلات المضمّنة الناعمة الفعلية داخل النموذج.
في ما يلي مثال على حوار:
prompt = """<|turn>user
Describe this image: <|image|>
And translate these audio:
a. <|audio|>
b. <|audio|><turn|>
<|turn>model"""
الرموز المميزة للتحكّم في الوكيل والاستدلال
لدعم سير العمل المستند إلى الوكلاء، تستخدم Gemma رموزًا مميزة متخصصة للتحكّم تحدّد الاستدلال الداخلي (التفكير) من الإجراءات الخارجية (استدعاء الدوال). تسمح هذه الرموز المميزة للنموذج بمعالجة منطق معقّد قبل تقديم رد نهائي أو التفاعل مع أدوات خارجية.
استدعاء الدوال
تم تدريب Gemma 4 على ستة رموز مميّزة خاصة لإدارة مراحل نشاط "استخدام الأدوات".
| زوج الرموز المميزة | الغرض |
|---|---|
<|tool> <tool|> |
تحديد أداة |
<|tool_call> <tool_call|> |
تشير إلى طلب النموذج استخدام أداة. |
<|tool_response> <tool_response|> |
تزويد النموذج بنتيجة تنفيذ الأداة |
محدّد القيم النصية: <|"|>
يتم استخدام رمز مميز واحد، <|"|>، كفاصل بين جميع قيم السلسلة
ضمن كتل البيانات المنظَّمة.
- الغرض: يضمن هذا الرمز المميز التعامل مع أي أحرف خاصة (مثل
{أو}أو,أو علامات الاقتباس) داخل سلسلة على أنّها نص حرفي وليس كجزء من البنية الأساسية للبيانات. - الاستخدام: يجب تضمين جميع السلاسل الحرفية في تعريفات الدوال واستدعاءاتها وردودها باستخدام هذا الرمز المميّز (على سبيل المثال،
key:<|"|>string value<|"|>).
وضع "المفكّر"
لتفعيل وضع التفكير، أدرِج رمز التحكّم <|think|> ضمن تعليمات النظام.
| رمز التحكّم | الغرض |
|---|---|
<|think|> |
تفعيل وضع التفكير |
<|channel> <channel|> |
تشير هذه السمة إلى العملية الداخلية للنموذج. |
في ما يلي مثال على حوار:
<|turn>system
<|think|><turn|>
<|turn>user
What is the water formula?<turn|>
<|turn>model
<|channel>thought
...
<channel|>The most common interpretation of "the water formula" refers...<turn|>
تم تصميم "وضع التفكير" ليتم تفعيله على مستوى المحادثة. يجب دمج ذلك في دورة واحدة للنظام مع تعليمات النظام الأخرى، مثل تعريفات الأدوات.
مثال على الاستدلال واستدعاء الدالة
في عملية تحويل إلى وكيل، قد "يفكّر" النموذج بشكل خاص قبل أن يقرّر استدعاء دالة. تتّبع دورة الحياة التسلسل التالي:
- استفسار المستخدم: يطرح المستخدم سؤالاً.
- الاستدلال الداخلي: يفكّر النموذج بشكل خاص في قناة الأفكار.
- طلب استخدام أداة: يوقف النموذج عملية الإنشاء لطلب استخدام أداة.
- التنفيذ والإدراج: ينفّذ التطبيق الأداة ويضيف الردّ.
- الردّ النهائي: يقرأ النموذج الردّ وينشئ الإجابة النهائية.
يوضّح المثال التالي نموذجًا يستخدم أداة الطقس:
<|turn>system
<|think|>You are a helpful assistant.<|tool>declaration:get_current_temperature{...}<tool|><turn|>
<|turn>user
What's the temperature in London?<turn|>
<|turn>model
<|channel>thought
...
<channel|><|tool_call>call:get_current_temperature{location:<|"|>London<|"|>}<tool_call|><|tool_response>
يجب أن يحلّل تطبيقك ردّ النموذج لاستخراج اسم الدالة
والوسيطات، ثم ينفّذ الدالة، وبعد ذلك يضيف tool_calls وtool_responses إلى سجلّ المحادثات ضمن الدور assistant.
<|turn>model
<|tool_call>call:get_current_weather{location:<|"|>London<|"|>}<tool_call|><|tool_response>response:get_current_weather{temperature:15,weather:<|"|>sunny<|"|>}<tool_response|>
أخيرًا، تقرأ Gemma رد الأداة وتردّ على المستخدم.
The temperature in London is 15 degrees and it is sunny.<turn|>
في ما يلي سجلّ المحادثة الكامل بتنسيق JSON لهذا المثال:
[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "What's the temperature in London?"
},
{
"role": "assistant",
"tool_calls": [
{
"function": {
"name": "get_current_weather",
"arguments": {
"location": "London"
}
}
}
],
"tool_responses": [
{
"name": "get_current_weather",
"response": {
"temperature": 15,
"weather": "sunny"
}
}
],
"content": "The temperature in London is 15 degrees and it is sunny."
}
]
إدارة سياق الأفكار بين الأدوار
تُعد إدارة الأفكار التي يولدها النموذج بشكل سليم أمرًا بالغ الأهمية للحفاظ على الأداء الجيد خلال المحادثات المتعددة الجولات.
- المحادثات العادية المتعددة الأدوار: يجب إزالة (تجريد) الأفكار التي أنشأها النموذج من الدور السابق قبل إعادة سجلّ المحادثة إلى النموذج للدور التالي. إذا أردت إيقاف وضع التفكير في منتصف المحادثة، يمكنك إزالة الرمز المميز
<|think|>عند إزالة الأفكار السابقة. - استخدام الأدوات (استثناء): إذا كانت إحدى جولات المحادثة تتضمّن استدعاء دالة أو أداة، يجب عدم إزالة الأفكار بين عمليات استدعاء الدالة.
مهام سير العمل المستندة إلى الذكاء الاصطناعي الوكيل والمهام الطويلة الأمد
بما أنّ الأفكار الأولية يتم حذفها بين الأدوار العادية، قد يحتاج المطوّرون الذين ينشئون وكلاء يعملون لفترة طويلة إلى الاحتفاظ بسياق الاستدلال لمنع النموذج من الدخول في حلقات استدلال دورية.
- تلخيص الأفكار: من أساليب الاستدلال التي ننصح بها بشدة، استخراج الأفكار السابقة للنموذج وتلخيصها وإعادة إدخالها إلى نافذة السياق كنص عادي.
- قيود التنسيق: بما أنّ Gemma 4 لم يتم تدريبه بشكل صريح على الأفكار الأولية المضمّنة في الطلب (خارج سيناريو استدعاء الأداة المحدّد المذكور أعلاه)، لا يتوقّع النموذج تنسيقًا صارمًا أو محدّدًا لهذه الأفكار المُدرَجة. يمكنك تنسيق الاستنتاج الموجز بأي طريقة تناسب بنية الوكيل المحدّدة.
ملاحظات الدمج
- الحالة الداخلية: يتم عادةً استخدام الرموز المميزة
<|channel>و<channel|>لمعالجة سلسلة الأفكار (CoT). في التطبيقات العادية المخصّصة للمستخدمين، يكون هذا المحتوى مخفيًا عادةً عن المستخدم النهائي. - Tool Loop: يسهّل الرمزان المميّزان
tool_callوtool_responseعملية التواصل بين النموذج وبيئة تطبيقك. يعترض التطبيق علىtool_call، وينفّذ الرمز الأساسي، ويُعيد النتيجة إلى النموذج ضمن الرموز المميزةtool_response. - سلوك النموذج: قد تنشئ النماذج الأكبر حجمًا (مثل gemma-4-26B-A4B-it وgemma-4-31B-it) قناة فكرية في بعض الأحيان حتى عندما يكون وضع التفكير غير مفعّل بشكل صريح. لتحقيق الاستقرار في سلوك النموذج في حالات الاستخدام هذه، ننصحك بإضافة رمز مميّز فارغ للتفكير إلى الطلب.
نصيحة: تحسين النماذج الكبيرة باستخدام مجموعات بيانات لا تتطلّب التفكير
عند ضبط نماذج Gemma الأكبر حجمًا باستخدام مجموعة بيانات لا تتضمّن التفكير، يمكنك تحقيق نتائج أفضل من خلال إضافة القناة الفارغة إلى طلبات التدريب:
<|turn>model
<|channel>thought
<channel|>
نصيحة: كفاءة التفكير التكيّفي باستخدام تعليمات النظام
مع أنّ ميزة "التفكير" في Gemma 4 متاحة رسميًا كخيار ON أو OFF، يتمتّع النموذج بقدرات قوية جدًا على اتّباع التعليمات تتيح لك تعديل سلوك التفكير ديناميكيًا.
بدلاً من الاعتماد على مَعلمة إطار عمل مبرمَجة مسبقًا لتحديد مستوى التفكير "عالي" أو "منخفض"، يمكنك استخدام "تعليمات النظام" (SI) لتوجيه النموذج إلى وضع تفكير أقل. من خلال توجيه النموذج بشكل صريح للتفكير بكفاءة أو بعمق أقل (وهو مفهوم نشير إليه باسم تعليمات التفكير "السطحي")، يمكنك تحقيق كفاءة التفكير التكيّفي.
- انخفاض التكلفة: أظهرت الاختبارات أنّ تطبيق تعليمات نظام التفكير "منخفض" يمكن أن يقلّل عدد الرموز المميزة للتفكير التي يتم إنشاؤها بنسبة %20 تقريبًا.
- إثبات صحة المفهوم: بما أنّ هذا السلوك هو نتيجة ثانوية لقدرة النموذج على الاستجابة للتعليمات وليس نتيجة تدريب محدّد، لا يوجد طلب واحد "مثالي". التعليمات "LOW" هي إثبات للمفهوم.
- التخصيص: ننصح المطوّرين بشدة بتجربة تعليمات النظام المخصّصة الخاصة بهم. يمكنك تحسين عمق عملية التفكير ومدتها وأسلوبها في النموذج لتحقيق التوازن المثالي بين وقت الاستجابة والتكلفة وجودة النتائج لحالات الاستخدام المحدّدة.