Gemma とのチャット: 基本的な会話とマルチターンの会話

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 の指示チューニング済みモデルは、usermodel の 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)

次のステップ