Gemma の指示チューニング(IT)モデルは、単一の質問と回答のやり取りから、拡張されたマルチターンのダイアログまで、会話型のインタラクションを処理するように設計されています。このガイドでは、Gemma とのチャット用にプロンプトの形式を設定する方法と、マルチターンの会話を構築する方法について説明します。
プロンプト形式
Gemma IT モデルは、特別な制御トークンを使用して会話のターンを区切ります。これらのトークンは、プロンプトをトークナイザーに直接送信する場合に必要ですが、通常はチャット対応フレームワークによって自動的に適用されます。
シングルターン プロンプト
シングルターンのプロンプトは、1 つのユーザー メッセージとモデルのレスポンス マーカーで構成されます。
<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 の 2 つのロールでのみ動作するように設計されています。そのため、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 Transformers
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)