チャットテンプレート ちゃっとてんぷれーと
チャットテンプレートChat Templateシステムプロンプト会話フォーマットトークナイザーLLM
チャットテンプレートについて教えて
簡単に言うとこんな感じ!
AIとの会話を「誰の発言か」を明確にするための決まったフォーマットだよ!「[システム]: あなたは優秀なアシスタントです [ユーザー]: こんにちは [アシスタント]:」みたいな形式で入力することで、AIが会話の文脈を正しく理解できるんだ!
チャットテンプレートとは
チャットテンプレート(Chat Template) とは、LLMとの会話において「システム」「ユーザー」「アシスタント」の各発言を、モデルが学習時に使ったフォーマットに沿って整形するための構造です。LLMは命令チューニング時に特定の形式で学習しているため、同じ形式で入力することで最大限の性能を発揮します。
各モデルは固有のテンプレートを持っており、例えばLlamaとMistralではシステムプロンプトの区切り文字が異なります。間違ったテンプレートを使うと、モデルが「会話の切れ目」を誤認識し、意図しない動作をする原因になります。HuggingFaceはこの問題を解決するため、各モデルのトークナイザーにチャットテンプレートを埋め込む方式を2023年に標準化しました。
主要モデルのテンプレート比較
【Llama 3 チャットテンプレート】
<|begin_of_text|>
<|start_header_id|>system<|end_header_id|>
あなたは優秀なアシスタントです。<|eot_id|>
<|start_header_id|>user<|end_header_id|>
東京の人口は?<|eot_id|>
<|start_header_id|>assistant<|end_header_id|>
【ChatML形式(GPT-4, Mistral等)】
<|im_start|>system
あなたは優秀なアシスタントです。<|im_end|>
<|im_start|>user
東京の人口は?<|im_end|>
<|im_start|>assistant
歴史と背景
- 2022年:ChatGPTの登場で会話形式のAPIが普及
- 2023年8月:HuggingFaceがトークナイザーへのChat Template組み込みを標準化
- 2023年以降:各モデルが独自のChat Template仕様を公開
- 現在:
tokenizer.apply_chat_template()メソッドで自動フォーマットが一般的に
チャットテンプレートの構成要素
| 要素 | 役割 | 例 |
|---|---|---|
| システムメッセージ | AIの役割・制約を定義 | 「日本語のみで回答してください」 |
| ユーザーメッセージ | 人間の入力 | 「〇〇を教えて」 |
| アシスタントメッセージ | AIの過去の回答 | 「〇〇は〜です」 |
| 特殊トークン | 役割の区切りを明示 | `< |