با شروع از Gemma 4، توکنهای کنترل جدیدی را معرفی میکنیم. برای Gemma 3 و پایینتر، به سند قبلی مراجعه کنید.
بخشهای زیر توکنهای کنترلی مورد استفاده توسط Gemma 4 و موارد استفاده آنها را مشخص میکنند. توجه داشته باشید که توکنهای کنترلی در توکنساز ما رزرو شده و مختص آن هستند.
- نشانه برای نشان دادن یک دستورالعمل سیستم:
system - توکن برای نشان دادن نوبت کاربر:
user - توکن برای نشان دادن نوبت مدل:
model - نشانه برای نشان دادن شروع یک گفتگو نوبت:
<|turn> - توکن برای نشان دادن پایان یک گفتگو 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 از توکنهای کنترلی تخصصی استفاده میکند که استدلال داخلی (تفکر) را از اقدامات خارجی (فراخوانی تابع) متمایز میکنند. این توکنها به مدل اجازه میدهند تا قبل از ارائه پاسخ نهایی یا تعامل با ابزارهای خارجی، منطق پیچیده را پردازش کند.
فراخوانی تابع
جما ۴ با شش توکن ویژه آموزش داده شده است تا چرخه حیات «استفاده از ابزار» را مدیریت کند.
| جفت توکن | هدف |
|---|---|
<|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|>
در نهایت، جما پاسخ ابزار را میخواند و به کاربر پاسخ میدهد.
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_callوtool_responseیک "تماس دستی" (handshake) بین مدل و محیط برنامه شما را تسهیل میکنند. برنامه،tool_callرا رهگیری میکند، کد زیرین را اجرا میکند و نتیجه را به مدل درون توکنهایtool_responseبرمیگرداند. - رفتار مدل: مدلهای بزرگتر (مثلاً gemma-4-26B-A4B-it، gemma-4-31B-it) ممکن است گاهی اوقات حتی زمانی که حالت تفکر به صراحت خاموش است، یک کانال فکری ایجاد کنند. برای تثبیت رفتار مدل در این موارد مرزی، اضافه کردن یک توکن تفکر خالی به اعلان را در نظر بگیرید.
نکته: تنظیم دقیق مدلهای بزرگ با مجموعه دادههای بدون تفکر
هنگام تنظیم دقیق مدلهای بزرگتر Gemma با مجموعه دادهای که شامل تفکر نمیشود، میتوانید با اضافه کردن کانال خالی به دستورات آموزشی خود به نتایج بهتری دست یابید:
<|turn>model
<|channel>thought
<channel|>
نکته: کارایی تفکر تطبیقی با استفاده از دستورالعملهای سیستمی
در حالی که «تفکر» در Gemma 4 رسماً به عنوان یک ویژگی بولی روشن یا خاموش پشتیبانی میشود، این مدل قابلیتهای فوقالعاده قوی در دنبال کردن دستورالعمل دارد که به شما امکان میدهد رفتار تفکر آن را به صورت پویا تنظیم کنید.
به جای تکیه بر یک پارامتر چارچوب کدگذاری شده برای تفکر "بالا" یا "پایین"، میتوانید از دستورالعملهای سیستمی (SI) برای هدایت مدل به حالت تفکر کاهشیافته استفاده کنید. با آموزش صریح مدل برای تفکر کارآمد یا در عمق پایینتر (مفهومی که ما به آن دستورالعمل تفکر "پایین" میگوییم)، میتوانید به کارایی تفکر تطبیقی دست یابید.
- کاهش هزینه: آزمایشها نشان دادهاند که اعمال دستورالعمل سیستم تفکر «پایین» میتواند تعداد توکنهای تفکر تولید شده را تقریباً 20٪ کاهش دهد.
- اثبات مفهوم: از آنجا که این رفتار محصول جانبی قابلیت آموزشپذیری مدل است و نه یک آموزش خاص، هیچ دستورالعمل «کامل» واحدی وجود ندارد. دستورالعمل «LOW» اثبات مفهوم است.
- سفارشیسازی: ما به شدت توسعهدهندگان را تشویق میکنیم که با دستورالعملهای سیستمی سفارشی خود بازی کنند. شما میتوانید عمق، طول و سبک فرآیند تفکر مدل را به دقت تنظیم کنید تا تعادل کاملی بین تأخیر، هزینه و کیفیت خروجی برای موارد استفاده خاص خود برقرار کنید.