LLM活用・プロンプト

チャットテンプレート ちゃっとてんぷれーと

チャットテンプレート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の過去の回答「〇〇は〜です」
特殊トークン役割の区切りを明示`<

関連用語