一文定義
チャットテンプレートとは、各LLMが期待する会話フォーマットをJinjaテンプレートで定義する仕組みで、システム・ユーザー・アシスタントのロールを特殊トークンで区切り、正確なトークン化を保証します。
詳細解説
チャットテンプレート(Chat Template)とは、LLMに会話形式でプロンプトを渡す際に、各メッセージのロール(system、user、assistant)をどの特殊トークンや区切り文字で囲むかを定義したフォーマット仕様です。Hugging FaceではJinja2テンプレートエンジンを使って各モデル固有のフォーマットを記述します。
モデルごとにフォーマットが異なるため、間違ったテンプレートを使うと推論精度が著しく低下します。例えばLlama 3は `<|begin_of_text|>`、Mistralは `[INST]` のような独自トークンを使います。ファインチューニング済みモデルはプレトレーニング時に特定のチャットテンプレートで学習されているため、推論時にも同じフォーマットを使う必要があります。
Hugging FaceのTokenizerクラスには `apply_chat_template()` メソッドが用意されており、メッセージのリストを渡すだけで正しくフォーマットされたプロンプト文字列を生成できます。ローカルでLLMを動かす際(Ollama・LM Studio等)やHugging Faceのモデルを直接呼び出す場合に特に重要な知識です。
参考情報・出典
- ▸Chat Templating - Hugging Face Documentation— Hugging Face(参照日: 2026-02-26)
- ▸FastChat Conversation Templates— LMSYS / FastChat(参照日: 2026-02-26)