0Pricing
AI Agents · レッスン

System、User、Assistantのロール

現代のチャットAPIにおける3つのメッセージロールと、それらがモデルの信頼や従う指示に与える影響を理解します。

「System、User、Assistantのロール」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。

3つの役割、1つの会話

すべてのチャットAPIでは、次の3つのメッセージ役割を使用します。

  • system — メタ指示、ペルソナ、ルール
  • user — 人間または上流システムからの入力
  • assistant — モデルの出力

役割が存在する理由

モデルは、これらの役割を異なるものとして扱うように学習されています。systemの役割が最も高く信頼され、userメッセージが最も低くなります。

これにより、ユーザー入力に攻撃者が入力した内容よりも、自分の指示が優先されることをモデルが理解できます。

systemスロットはあなたのもの

systemメッセージは、モデルとの契約です。ここには次の内容を記述します。

  • アイデンティティと目標
  • 厳格なルール(Xを決して明かさない、常にYを実行するなど)
  • 出力形式の要件
  • ツールの使用ポリシー

systemは安定させ、userは動的にする

セッション中、systemメッセージはほとんど変更しないようにします。ターンごとに変わる内容は、userメッセージに記述します。

このパターンにより、プロンプトキャッシュも利用できるようになります。詳しくは「コスト最適化」コースを参照してください。

例:カスタマーサポートエージェント

一般的な構成は次のとおりです。

messages = [
    {'role': 'system', 'content': '''
You are SupportBot, the customer-support agent for Acme Corp.
You help with order status, returns, and product info.
You never share internal pricing or roadmap info.
Answer in 2-3 sentences. Use the search_orders tool when asked about orders.
'''},
    {'role': 'user', 'content': 'Where is my order #1234?'},
]
for m in messages:
    print(f"[{m['role']}] {m['content'].strip()}")

複数のsystemメッセージ

ほとんどのAPIは、systemメッセージを1つしかサポートしていません。指示を階層化する必要がある場合は、指示を連結するか、systemコンテンツ内で別々のXMLセクションを使用してください。

assistantメッセージとメモリ

過去のassistantターンはコンテキストの一部です。モデルは自分の過去の出力を確認できるため、一貫性を保てます。

そのため、前のターンでモデルが「はい、ルールに従います」と答えていると、実際にルールに従うよう促されます。

assistantターンの事前入力(Anthropic)

Anthropicでは、モデルが続けて生成するテキストをassistantメッセージの先頭に設定できます。

messages = [
    {'role': 'user', 'content': 'Return a JSON object with name and age.'},
    {'role': 'assistant', 'content': '{'}
]
# The model continues from '{', forcing JSON output.
for m in messages:
    print(f"{m['role']}: {m['content']}")
print("The model continues from '{', forcing JSON output.")

toolの役割

最新のAPIには、4つ目の役割としてtool(OpenAI)や、tool_resultを含むコンテンツブロック(Anthropic)が追加されています。

モデルが要求した関数を実行した後、toolメッセージを追加します。

役割を混同するミス

よくあるバグは次のとおりです。

  • ツールの結果をuserメッセージに入れる — 信頼階層が混乱します
  • tool_call_idの送信を忘れる — APIエラーになります
  • userまたはassistantメッセージが2つ連続する — ほとんどのAPIで拒否されます

指示の階層

OpenAIは、次のようなモデル仕様を公開しています。

"競合が発生した場合、モデルは階層の上位にある指示に従う必要があります。platform > developer (system) > user > tool。"

Anthropicにも同様のガイダンスがあります。systemスロットが優先されます。

役割スロット

「内部価格を決して公開しない」のような厳格なルールは、どこに記述すべきですか?

まとめ

3つの役割には、それぞれ異なる信頼レベルがあります。ルールにはsystem、入力にはuser、再現する過去の出力にはassistantを使用します。関数呼び出しの後にはtoolメッセージを追加してください。

よくある質問

「System、User、Assistantのロール」レッスンは無料ですか?

はい。「System、User、Assistantのロール」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。

「System、User、Assistantのロール」で何を学びますか?

現代のチャットAPIにおける3つのメッセージロールと、それらがモデルの信頼や従う指示に与える影響を理解します。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Agentsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「System、User、Assistantのロール」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Agentsレッスンでコードを書いて実行できますか?

はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Zero-shot、Few-shot、Chain-of-Thought
  2. System、User、Assistantのロール
  3. 出力フォーマット(JSON、XML、Markdown)
  4. 入力へのPrompt Injectionを防ぐ
← AI Agentsに戻る