Blog›Guides

AIエージェント用システムプロンプトの書き方

AIエージェント向けの効果的なシステムプロンプトを作成する方法を学ぶ:構造、トーン、制約、例、そして一般的な落とし穴。

AIエージェント用システムプロンプトの書き方

AIエージェント用システムプロンプトの書き方

システムプロンプトは、AIエージェントの動作を形作る隠れた指示です。一回限りのユーザークエリとは異なり、システムプロンプトはすべてのやり取りの土台を設定し、エージェントの役割、目標、トーン、境界を定義します。カスタマーサポートボット、コーディングアシスタント、クリエイティブツールのいずれを構築する場合でも、システムプロンプトを習得することは不可欠です。

このガイドでは、核となる原則、実践的なフレームワーク、避けるべき一般的な間違いを説明します。実際の例や追加リソースへのリンクも紹介します。

システムプロンプトとは何か

システムプロンプトは、ユーザー入力の前に言語モデルに与えられる初期指示です。モデルに自分が誰であるか(例:「あなたは親切な法律アシスタントです」)、何をすべきか、どのように振る舞うべきかを伝えます。会話全体を通じて持続し、エージェントの目的の永続的な記憶として機能します。

これは、エージェントの職務記述書と行動規範を一つにまとめたものと考えてください。よく書かれたシステムプロンプトは、汎用モデルを専門ツールに変えることができます。

システムプロンプトがAIエージェントにとって重要な理由

AIエージェントは単なるチャットボット以上のものです。ツールを使用し、APIを呼び出し、複数ステップのタスクを実行できます。システムプロンプトが重要な理由は次の通りです:

  • エージェントの範囲を定義:トピックから逸れるのを防ぎます。
  • 期待値を設定:曖昧なリクエストの処理方法をモデルに伝えます。
  • トーンとスタイルを制御:一貫したブランディングや個性を保証します。
  • 安全性を向上:有害な出力を避けるための境界を設定します。
  • 信頼性を強化:モデルを文脈に基づかせることで幻覚を減らします。
  • 例えば、フライトを予約するエージェントには、航空会社のポリシー、ユーザー設定、キャンセルの処理方法を指定するシステムプロンプトが必要です。これがないと、エージェントがルールを発明したり、制約を無視したりする可能性があります。

    効果的なシステムプロンプトの主要原則

    1. 具体的かつ明確にする

    曖昧な指示は曖昧な出力につながります。「役に立つ」ではなく、「一般的な問題のトラブルシューティングの手順を段階的に提供する」と言いましょう。具体的であればあるほど、モデルはより良く従えます。

    例:

  • 弱い:「あなたは旅行代理店です。」
  • 強い:「あなたはヨーロッパへの格安旅行を専門とする旅行代理店です。常に最も安いフライトオプションを推奨し、手荷物料金に言及し、ルートを提案する前に旅行者の出発都市を尋ねてください。」
  • 2. 役割とペルソナを定義する

    エージェントに明確なアイデンティティを与えます。これは語彙、トーン、生成する応答の種類に影響します。例えば、「フレンドリーな図書館員」は「厳格なデータアナリスト」とは異なる回答をします。

    既存のシステムプロンプトからインスピレーションを得ることができます。例えば、Naval Ravikantの声でのTransformation Architectシステムプロンプトは、ペルソナがやり取り全体をどのように形作るかを示しています。

    3. 境界と制約を設定する

    エージェントができないことを伝えます。これは安全性と信頼性にとって重要です。例えば:

  • 「医療アドバイスを提供しないでください。」
  • 「答えがわからない場合は、『わかりません』と言い、人間の専門家を提案してください。」
  • 「個人ユーザーデータを共有しないでください。」
  • 制約には、「JSONで応答する」や「箇条書きを使用する」などの形式要件も含まれます。

    4. 例を提供する(Few-Shot Learning)

    システムプロンプトに例を含めると、出力品質が劇的に向上します。モデルに良い応答がどのようなものかを示します。これは、特定の形式やスタイルを持つタスクに特に役立ちます。

    例の断片:

    ユーザー:東京の天気は?

    アシスタント:現在の東京の天気は22°C、晴れ、そよ風が吹いています。最高気温は25°C、最低気温は18°Cの見込みです。夜は軽いジャケットをお持ちください。

    5. 明確な構造とフォーマットを使用する

    システムプロンプトをセクション、箇条書き、番号付きリストで整理します。これにより、モデルが解析して従いやすくなります。また、###などの区切り文字を使用して、指示を文脈から分離することもできます。

    6. 反復してテストする

    システムプロンプトは設定したら終わりではありません。さまざまな入力でテストし、結果に基づいて改良する必要があります。エッジケースに注意を払い、それに応じて調整します。これはプロンプトエンジニアリングの核となる部分であり、OpenAIプロンプトエンジニアリングガイドで強調されています。

    システムプロンプトを書くためのステップバイステップフレームワーク

    適応できる実践的なフレームワークは次の通りです:

  • エージェントの目的を定義:その主な機能は何か?エンドユーザーは誰か?
  • ペルソナを選択:どの役割を果たすべきか?どのトーンか?(例:プロフェッショナル、フレンドリー、簡潔)
  • 主要な能力をリストアップ:どのタスクを処理する必要があるか?どのツールやデータにアクセスできるか?
  • 制約を設定:してよいこととしてはいけないことは?法的または倫理的な境界は?
  • 文脈を提供:エージェントが必要とする背景情報を含めます。
  • 例を追加:2〜3のサンプルやり取りを示します。
  • 出力形式を指定:必要に応じて、応答構造を定義します。
  • フォールバック動作を含める:不確かな場合、エージェントは何をすべきか?
  • カスタマーサポートエージェントの例を具体化してみましょう:

    あなたはTechGadgets Inc.のカスタマーサポートアシスタントです。

    あなたの目標は、ユーザーの問題を迅速かつ丁寧に解決することです。

    FAQデータベースと注文システムにアクセスできます。

    ルール:

  • 名前が提供されている場合は、常にユーザーを名前で呼びます。
  • 問題が不良品に関する場合は、交換または返金を提案します。
  • FAQに明示的に記載されていない限り、割引を約束しないでください。
  • 答えがわからない場合は、「確かではありませんが、人間の専門家につなぎます」と言います。
  • トーン:フレンドリー、共感的、簡潔。

    例:

    ユーザー:私のラップトップが起動しません。

    アシスタント:それは残念です。トラブルシューティングしましょう。まず、電源ボタンを10秒間押してみてください。それでもダメな場合、充電器は接続されていますか?

    このフレームワークは多用途です。クリエイティブなタスクでも同様に適応できます。例えば、画像生成用Red Veil Registerシステムプロンプトは、特定の美学で画像ジェネレーターを制約する方法を示しています。

    避けるべき一般的な間違い

    1. 曖昧すぎる

    「役に立つ」や「質問に答える」などの一般的なフレーズを避けます。これらはモデルに十分な方向性を与えません。

    2. 情報を詰め込みすぎる

    過剰な文脈はモデルを混乱させる可能性があります。必要なものに限定します。さらに必要な場合は、プロンプトにすべてを詰め込む代わりに、検索拡張生成(RAG)の使用を検討します。

    3. 安全性とバイアスを無視する

    システムプロンプトは安全性に明示的に対処する必要があります。例えば、「ヘイトスピーチを生成しないでください」や「ステレオタイプを避けてください」などです。これは公開向けエージェントにとって特に重要です。

    4. エッジケースをテストしない

    エージェントは奇妙な入力に遭遇します。タイプミス、曖昧な表現、範囲外の質問でテストし、どのように応答するか確認します。

    5. 更新を忘れる

    製品が進化するにつれて、システムプロンプトも進化させる必要があります。プロンプトをバージョン管理し、定期的に見直します。

    エージェント固有プロンプトの高度なヒント

    AIエージェントは多くの場合、ツールや外部データにアクセスできます。システムプロンプトはそれを考慮する必要があります:

  • ツールの使用:いつ、どのようにツールを使用するかを指定します(例:「数学の問題には計算機を使用してください。」)
  • 多段階推論:エージェントに複雑なタスクを分解するよう促します(「答える前に段階的に考えてください。」)
  • メモリ:エージェントにメモリがある場合、何を覚え、何を忘れるかを定義します。
  • エラー処理:ツールが失敗した場合の応答方法をエージェントに伝えます。
  • 例えば、コーディングエージェントのシステムプロンプトは次のようになります:

    あなたはPythonコーディングアシスタントです。コードインタープリターにアクセスできます。コードを書くように求められたら、最初にアプローチを説明し、次にコードを書き、最後に実行してテストします。コードにエラーがある場合は、デバッグして再試行します。

    これは、一般的な「コードを手伝う」プロンプトよりも効果的です。

    実際の例とインスピレーション

    既存のシステムプロンプトを見るとアイデアが湧きます。ウィキからいくつか紹介します:

  • エージェントセットアップを安全に教えるためのインタラクティブコースシステムプロンプト - セットアッププロセスを通じてユーザーをガイドする方法を示します。
  • システムプロンプト:プロンプトをAperture Geometry / Velvet Traceシーンに書き換える - クリエイティブな変換タスクを示します。
  • 任意の目的地向けデュアルワールド水彩トラベルポスタープロンプト - 画像生成用テンプレート。
  • シネマティックミニチュアワールド広告ポスタープロンプト - もう一つのクリエイティブな例。
  • これらは、システムプロンプトが特定のドメインに合わせて調整できる方法を示しています。

    さらなる読み物とリソース

    理解を深めるには、以下の権威あるガイドをチェックしてください:

  • Anthropicのプロンプトエンジニアリング概要 - Claudeのベストプラクティスをカバー。
  • Google Geminiプロンプティング戦略 - Geminiモデルに焦点。
  • プロンプトエンジニアリングガイド - 包括的なコミュニティリソース。
  • Learn Prompting - 初心者向けチュートリアル。
  • Google Vertex AIプロンプトデザイン - エンタープライズ向け実践的ヒント。
  • Anthropicのビジネス向けプロンプトエンジニアリング - プロンプトをビジネス目標に合わせる方法。
  • これらのリソースは、チェーン・オブ・ソート、フューショットラーニング、評価などの特定のテクニックについて深く掘り下げています。

    次のシステムプロンプトのためのチェックリスト

    最終決定する前に、このチェックリストを確認してください:

  • [ ] 目的が明確に定義されている
  • [ ] ペルソナとトーンが指定されている
  • [ ] 主要な能力がリストアップされている
  • [ ] 制約と境界が設定されている
  • [ ] 例が含まれている(役立つ場合)
  • [ ] 出力形式が指定されている(必要な場合)
  • [ ] フォールバック動作が定義されている
  • [ ] エッジケースでテストされている
  • [ ] 安全性とバイアスについてレビューされている
  • 結論

    システムプロンプトを書くことは、芸術であり科学でもあります。明確さ、具体性、継続的な反復が必要です。上記の原則とフレームワークに従うことで、AIエージェントを信頼性が高く、有用で、安全にするシステムプロンプトを作成できます。

    覚えておいてください、最良のシステムプロンプトは目に見えないものです。エージェントを非常に効果的にガイドするため、ユーザーは背後にある指示に気づきません。シンプルに始め、頻繁にテストし、実際のやり取りに基づいて改良してください。

    さらにインスピレーションを得るには、システムプロンプトコレクションを閲覧するか、生産性関連プロンプトを探索してください。楽しいプロンプティングを!

    Tags
    system prompt·AI agent·prompt engineering·LLM·chatbot·automation·guide