چت با جما: مکالمات پایه و چند نوبتی

مدل‌های تنظیم‌شده با دستورالعمل (IT) جما برای مدیریت تعاملات مکالمه‌ای، از تبادلات پرسش و پاسخ تکی گرفته تا گفتگوهای چند نوبتی گسترده، طراحی شده‌اند. این راهنما نحوه قالب‌بندی پیام‌ها برای چت با جما و نحوه ایجاد گفتگوهای چند نوبتی را توضیح می‌دهد.

قالب‌بندی سریع

مدل‌های فناوری اطلاعات Gemma از توکن‌های کنترلی ویژه‌ای برای مشخص کردن نوبت‌های مکالمه استفاده می‌کنند. این توکن‌ها هنگام ارسال مستقیم پیام‌ها به توکن‌ساز مورد نیاز هستند، اما معمولاً توسط چارچوب‌های آگاه از چت به صورت خودکار اعمال می‌شوند.

اعلان تک نوبتی

یک اعلان تک نوبتی شامل یک پیام کاربر و یک نشانگر پاسخ مدل است:

<start_of_turn>user
What is the speed of light?<end_of_turn>
<start_of_turn>model

اعلان چند نوبتی

مکالمات چند نوبتی، چندین تبادل را زنجیره می‌کنند. هر نوبت در توکن‌های کنترلی یکسانی قرار می‌گیرد:

<start_of_turn>user
What is the speed of light?<end_of_turn>
<start_of_turn>model
The speed of light in a vacuum is approximately 299,792,458 meters per second.<end_of_turn>
<start_of_turn>user
How long does it take light to reach Earth from the Sun?<end_of_turn>
<start_of_turn>model

مدل، پاسخی برای آخرین نوبت <start_of_turn>model تولید می‌کند.

دستورالعمل‌های سیستم

مدل‌های تنظیم‌شده توسط دستورالعمل Gemma طوری طراحی شده‌اند که فقط با دو نقش کار کنند: user و model . بنابراین، نقش system یا نوبت سیستم پشتیبانی نمی‌شود.

به جای استفاده از یک نقش سیستمی جداگانه، دستورالعمل‌های سطح سیستم را مستقیماً در اعلان اولیه کاربر ارائه دهید. قابلیت‌های دنبال کردن دستورالعمل مدل به Gemma اجازه می‌دهد تا دستورالعمل‌ها را به طور مؤثر تفسیر کند. به عنوان مثال:

مدل‌های Gemma 3 و بالاتر از دستورالعمل‌های سیستمی پشتیبانی می‌کنند که رفتار، شخصیت یا محدودیت‌های مدل را برای کل مکالمه تعریف می‌کنند. دستورالعمل سیستمی را قبل از نوبت اولین کاربر قرار دهید:

<start_of_turn>user
Only reply like a pirate.

What is the answer to life the universe and everything?<end_of_turn>
<start_of_turn>model
Arrr, 'tis 42,<end_of_turn>

برای جزئیات بیشتر، به دستورالعمل‌های اعلان و سیستم مراجعه کنید.

پشتیبانی از چارچوب

اکثر فریم‌ورک‌ها قالب‌بندی چت را به‌طور خودکار از طریق قالب چت یا API مکالمه خود مدیریت می‌کنند:

مبدل‌های چهره در آغوش گرفته

from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("google/gemma-3-1b-it")
model = AutoModelForCausalLM.from_pretrained("google/gemma-3-1b-it")

messages = [
    {"role": "user", "content": "What is machine learning?"},
]

inputs = tokenizer.apply_chat_template(
    messages,
    return_tensors="pt",
    add_generation_prompt=True,
)

outputs = model.generate(**inputs, max_new_tokens=256)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

اولاما

ollama run gemma3:1b "What is machine learning?"

برای چت چند نوبتی، از حالت تعاملی استفاده کنید:

ollama run gemma3:1b
>>> What is machine learning?
...
>>> How is it different from deep learning?

رابط‌های برنامه‌نویسی کاربردی سازگار با OpenAI

هنگام استفاده از چارچوب‌هایی که یک API سازگار با OpenAI را در معرض نمایش قرار می‌دهند (مانند vLLM، llama.cpp یا LM Studio)، پیام‌ها را با استفاده از قالب messages استاندارد ارسال کنید:

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="unused")

response = client.chat.completions.create(
    model="google/gemma-3-1b-it",
    messages=[
        {"role": "user", "content": "What is machine learning?"},
    ],
)
print(response.choices[0].message.content)

مراحل بعدی