3つの役割
チャットはメッセージのリストとして保存され、各メッセージには誰からのものかを示す役割(role)が含まれます。
system— 会話全体を枠組みづける常時適用される指示です。アシスタントが誰であるか、何をすべきで何をすべきでないかを定義します。チャット内の誰かが発言するものではなく、モデルを展開する担当者によって記述されます。user— ユーザーが質問したことや発言した内容です。assistant— モデルが返答した内容です。
一部のプロバイダーは、同じ概念に対して別の名称を使用します。assistant の代わりに model を使用したり、システム指示用に別のフィールドを設けたり、指示用に developer を使用したりします。また、モデルが呼び出した関数から返された結果に対して tool という役割を追加するものもあります。構造自体は同じです。
モデルが実際に読み取る内容
モデルはオブジェクトのリストではなく、1つのフラットなトークンシーケンスを読み取ります。チャットテンプレートは、各ターンの開始と終了、および誰のターンであるかを示す特殊なトークンを挿入することで、メッセージをそのシーケンスに変換します。モデルはインストラクションチューニングの過程でこれらのマーカーを学習しました。これにより、モデルはユーザーの発言が終了したこと、自分の発言のターンであること、そしていつ停止すべきかを認識します。
<|im_start|>system You are the support assistant.<|im_end|> <|im_start|>user How do I reset my password?<|im_end|> <|im_start|>assistant Open Settings → Security and choose Reset password.<|im_end|>
各モデルファミリーには独自のテンプレートがあります。誤ったものを使用したり、全く使用しなかったりすると、モデルがその形式で見たことのない入力が生成され、品質が急激に低下します。ホスト型トレーニングサービスでは適切なテンプレートが自動的に適用されます。オープンモデルの場合、Hugging Face Transformersなどのライブラリがトークナイザーと共にテンプレートを保存しています。
役割がトレーニングをどのように形成するか
教師ありファインチューニングでは、役割が何を学習するかを決定します。モデルは assistant メッセージを生成するようにトレーニングされます。system と user のメッセージはモデルが読み取るコンテキストですが、記述するようにはトレーニングされません。そのため、チャットのデータセットは、ユーザーのように質問するのではなく、アシスタントのように回答するようにモデルに教えるのです。
役割は、システムプロンプトがなぜそれほど重要であるかも説明しています。特定のシステムメッセージでファインチューニングされたモデルは、そのメッセージが存在する状態での動作を学習します。そのため、実行時に同じ指示を受け取ったときに、トレーニングされたモデルに最も近い動作をします。
system: 「あなたは請求書作成製品のサポートアシスタントです。短い番号付きの手順で回答してください。」user: 「請求書にVAT番号を追加するにはどうすればよいですか?」assistant: 「1. 設定 → 会社情報 を開きます。2. VAT番号を入力します。3. 保存します — これで新しい請求書に表示されるようになります。」- トレーニングにおいて、最初の2つのメッセージはコンテキストです。3つ目は、そのコンテキストが与えられたときにモデルが記述するように学習する内容です。
ほとんどのトレーニング形式で適用されるルール
- ターンはuserとassistantの間で交互に入れ替わります。
- システムメッセージの後、会話はuserから始まります。
- 通常、一番最初に1つのシステムメッセージがあります。
- 何かを学習させる場合、レコードはassistantメッセージで終了します。
よくある間違い
- トレーニング中は指示をuserメッセージに配置し、実行時はシステムプロンプトに配置する、あるいはその逆を行うこと。
- あるシステムプロンプトでトレーニングを行い、別のシステムプロンプトで展開すること。
- チャットテンプレートを使用せず、オープンモデルの入力を手動でフォーマットすること。
- ほとんどの形式で拒否される、同じ役割からの連続したメッセージを残すこと。
参考文献および関連資料
外部ソースは新しいタブで開きます。
- 01Chat templatesHugging Face Transformers docs · huggingface.co実際のテンプレートを使用して、メッセージがモデルの入力にどのように変換されるか。
- 02Chat TemplatesHugging Face LLM Course · huggingface.coファインチューニングにおける役割とテンプレートに関するコースの章。
- 03Model Spec (2025/12/18)OpenAI · model-spec.openai.comあるプロバイダーがsystem、developer、userの各メッセージからの指示をどのようにランク付けしているか。
- 04Training language models to follow instructions with human feedbackOuyang et al., 2022 · arXiv · arxiv.org指示に従い、ターンを交代する動作がどこから来るのか。