Gemma 指令调优 (IT) 模型旨在处理对话互动,从简单的问答交流到多轮对话,都能轻松应对。本指南介绍了如何设置与 Gemma 对话的提示格式,以及如何构建多轮对话。
提示格式
Gemma IT 模型使用特殊的控制令牌来分隔对话轮次。直接向分词器发送提示时需要这些令牌,但聊天感知框架通常会自动应用这些令牌。
单轮提示
单轮提示包含一条用户消息和一个模型回答标记:
<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 自动处理聊天格式:
Hugging Face Transformer
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
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 的 API(例如 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)