手順

エージェントの指示は、モデルが何をすべきかについて詳細なガイダンスを提供します。これらの指示は自然言語で提供されます。

手順を作成する

手順には次のいずれかを含めることができます。

  • 全体的な目標。
  • どのように振る舞うか。
  • 使用するペルソナ。
  • サブエージェントのリスト。表示名で参照されます(形式: {@AGENT: Agent Name})。
  • 特定のツールを使用するための指示。表示名で参照され、{@TOOL: tool_name} の形式で指定されます。
  • 変数への参照。スネークケースの変数名が中かっこで囲まれています({variable_name})。

ルート エージェントの例:

CURRENT CUSTOMER: {username}

You are the main Weather Agent coordinating multiple agents.
Your primary responsibility is to provide weather information.
Use {@TOOL: get_weather} ONLY for specific weather requests 
(for example, 'weather in London').

If you know the user's name, always greet them by their name.

You have specialized sub-agents:
  1. Greeting Agent: Handles simple greetings like 'Hi', 'Hello'.
  2. Farewell Agent: Handles simple farewells like 'Bye', 'See you'.

Analyze the user's query. 
If it's a greeting, call {@AGENT: Greeting Agent} 
If it's a farewell, call {@AGENT: Farewell Agent} 
If it's a weather request, handle it yourself using {@TOOL: get_weather} 

For anything else, respond appropriately or state you cannot handle it.

構文のハイライト表示

カスタム指示エディタで、変数ツールエージェントが適切な構文({variable_name}{@TOOL: tool_name}{@AGENT: Agent Name})で参照されると、色付きの「チップ」でハイライト表示され、構文が認識されたことが示されます。

これらのリファレンスを簡単に挿入できるように、手順エディタには 2 つのショートカットが用意されています。

  • @ と入力すると、[エージェント]、[ツール]、[変数] の 3 つのオプションを含むコンテキスト メニューが開きます。このメニューは、矢印キーと Tab キーで移動するか、クリックして移動できます。オプションを選択すると、参照が完了するまで他のオプションが表示され、完了するとチップになります。
  • { と入力すると、クイック挿入に使用できる変数を示すコンテキスト メニューが開きます。

言語サポート

エージェントのプロンプトと手順を設計する際は、エージェントが最もよく理解できるように、常に英語を使用してください。エージェントがユーザーとやり取りする際に、エンドユーザーの入力言語を検出し、特に指示がない限り、同じ言語で自動的に応答できます。

エージェントが特定の言語でのみ話す(または話さない)ようにする場合は、サポートについて説明する指示を含める必要があります。たとえば、エージェントがイタリア語でのみ応答するようにする場合は、指示に「イタリア語のみを話し、他の言語は話さない」を含めることができます。

サポートされている言語の一覧については、言語リファレンスをご覧ください。

再構成の手順

自然言語で指示を入力できますが、XML 構造を使用して指示をフォーマットすると、エージェントのパフォーマンスが向上する可能性があります。これにより、モデルが指示をより適切に実行できるようになります。Google では、手順を構造化するために使用できるタグを含む標準の XML 構造を提供しています。自然言語の指示を入力したら、指示パネルの上にある [指示を再構成] ボタンをクリックして、指示を推奨の XML 構造にフォーマットできます。

次の表に、推奨される XML タグとその使用方法を示します。

タグ 説明
role エージェントのコア機能または責任を定義します。
persona エージェントの個性、トーン、行動ガイドラインを説明します。
primary_goal <persona> 内で、エージェントの主な目的を指定します。
constraints エージェントが従う必要のあるルールまたは制限を一覧表示します。
taskflow 会話フローをサブタスクの連続としてアウトライン表示します。
subtask <taskflow> 内の会話フローの特定の部分。1 つ以上のステップを含む。
step <subtask> 内の、トリガーとアクションを含む個々のステップ。
trigger <step> 内で、ステップを開始する条件またはユーザー入力。
action <step> 内で、ステップがトリガーされたときにエージェントが取るべきアクション。
examples 特定のシナリオでエージェントの動作をガイドする少数ショットの例が含まれています。

推奨される XML 構造を使用した同じ手順の例を次に示します。

CURRENT CUSTOMER: {username}

<role>The main Weather Agent coordinating multiple agents.</role>

<persona>
    <primary_goal>To provide weather information.</primary_goal>
    How to handle prohibited topics and violations: Respond appropriately or
    state inability to handle the request.
    General guidelines: Follow the constraints and task flow precisely.
</persona>

<constraints>
    1. Use {@TOOL: get_weather} ONLY for specific weather requests 
      (for example, 'weather in London').
    2. If the user's name is known (from the 'CURRENT CUSTOMER' context), always
      greet them by their name.
</constraints>

<taskflow>
    These define the conversational subtasks that you can take. Each subtask
    has a sequence of steps that should be taken in order.
    <subtask name="Initial Greeting">
        <step name="Check for Username and Greet">
            <trigger>Start of conversation or new user interaction.</trigger>
            <action>If a username is provided in the 'CURRENT CUSTOMER' context,
              greet the user by their name. Otherwise, proceed without a 
              personalized greeting.
            </action>
        </step>
    </subtask>
    <subtask name="Query Analysis and Routing">
        <step name="Analyze User Query">
            <trigger>User provides a query.</trigger>
            <action>Determine the intent of the user's query 
              (greeting, farewell, weather request, or other).
            </action>
        </step>
        <step name="Handle Greeting">
            <trigger>User query is identified as a simple greeting
              (e.g., 'Hi', 'Hello').
            </trigger>
            <action>Call {@AGENT: Greeting Agent}.</action>
        </step>
        <step name="Handle Farewell">
            <trigger>User query is identified as a simple farewell
              (e.g., 'Bye', 'See you').
            </trigger>
            <action>Call {@AGENT: Farewell Agent}.</action>
        </step>
        <step name="Handle Weather Request">
            <trigger>User query is identified as a specific weather request
              (e.g., 'weather in London').
            </trigger>
            <action>Use {@TOOL: get_weather} to retrieve weather information and
              provide it to the user.
            </action>
        </step>
        <step name="Handle Other Queries">
            <trigger>User query does not fall into greeting, farewell, or
              specific weather request categories.
            </trigger>
            <action>Respond appropriately to the query or state that the request
              cannot be handled.
            </action>
        </step>
    </subtask>
</taskflow>
<examples>
</examples>

インラインの少数ショットの例

少数ショット プロンプトは、大規模言語モデル(LLM)に少数の例を提供して、その動作、トーン、ロジックをガイドする手法です。エージェントのコンテキストでは、「インラインの少数ショットの例」とは、これらの例を個別の UI ペインではなく、エージェントの指示内に直接配置することを指します。この方法では、抽象的な指示と具体的な実行の間のギャップを埋めることで、モデルが複雑な要件を理解できるようにします。

少数ショットの例を使用するタイミング

少数ショットの例は調整に有効なツールですが、戦略的に使用する必要があります。次のシナリオでは、追加することを検討してください。

  • 品質の問題を解決する: 主に、モデルが指示を常に誤解している特定の失敗を修正するために例を使用します。
  • 複雑な形式: エージェントが非常に特殊な非標準形式でデータを出力する必要がある場合。
  • ニュアンスのあるロジック: 意思決定プロセスの微妙なニュアンスを捉えるために「if-then」の指示だけでは不十分な場合。

ベスト プラクティスと警告

少数ショットの例は効果的ですが、エージェントのパフォーマンスの低下を避けるために、慎重にキュレートする必要があります。

  • 使用は控えめに: 例を多く追加しすぎると、エージェントが「過学習」する可能性があります。つまり、例に厳密に従い、新しいユーザー クエリに一般化する能力を失う可能性があります。
  • 包括的ではなく説明的である: ユーザーが入力する可能性のあるすべてのクエリを列挙する必要はありません。例は、ルックアップ データベースとしてではなく、モデルの推論パターンのガイダンスとして使用することを目的としています。
  • 手順から始める: 動作の問題を解決する際は、まず明確でわかりやすい手順を試してください。指示だけでは目的の結果が得られない場合にのみ、フューショットを追加します。

少数ショットの例のコンポーネント

エージェントの標準的な少数ショットの例は、会話のターンをシミュレートする 4 つの異なるコンポーネントで構成されています。

コンポーネント タグ / 構文 説明
ユーザー [user] エンドユーザーの入力またはクエリを表します。
モデル [model] エージェントのテキスト レスポンスまたは思考プロセスを表します。
ツールの入力 tool_code エージェントが外部ツールや関数への入力や「呼び出し」をどのように構造化するか(特定の引数や構文など)を示します。
ツールの出力 tool_outputs ツールから返されるデータをシミュレートし、エージェントに最終回答でそのデータを解釈して利用する方法を教えます。

少量のサンプルには次の形式を使用する必要があります。

<examples>
  EXAMPLE 1:
  Begin example
  [user]
  What's the weather in London?
  [model]
  ```tool_code
  get_weather(location="London")
  ```
  ```tool_outputs
  {"temperature": "15 C", "condition": "Cloudy"}
  ```
  [model]
  The weather in London is 15 C and Cloudy.
  End example
</examples>

手順を絞り込む

手順の内容の一部を選択すると、[絞り込む] ボタンが表示されます。このボタンをクリックすると、AI を使用して選択したコンテンツを改善できます。[要件] フィールドに、選択したコンテンツをどのように改善したいかについての情報を入力します。

エージェントの回答の形式を設定する

エージェントに、テキスト レスポンスの形式を指定して、読みやすくすることができます。書式設定に関する指示のベスト プラクティスは次のとおりです。

チャンクと空白文字

  • 密度の高い段落は書かないでください。ユーザーは読みません。スキャンします。
  • テキスト ブロックは最大 1 ~ 2 文に制限します。
  • 個別のアイデアごとに改行を挿入して、空白を作成します。

戦略的な強調

  • 最も重要なデータポイントは太字にして、すぐに目に入るようにする必要があります。
  • 常に太字: 商品名価格日付注文番号締め切り
  • : 「クラシック T シャツ$25.00 です。」

テキストの上にリストを表示する

  • 2 つ以上の項目や手順を言及した場合は、箇条書きまたは番号付きリストに自動的に変換します。
  • オプションには標準の記号(-)を使用し、手順には番号付きリスト(1.)を使用します。

グローバル手順

エージェント固有の指示を定義するだけでなく、エージェント アプリケーションの詳細設定でグローバル指示を定義することもできます。

エージェント アプリケーションのすべてのエージェントはグローバル指示を継承し、エージェント固有の指示に加えて、会話の各ターンでモデルに送信されます。

グローバル手順は、すべてのエージェントが知っておくべき一般的な情報に適しています。たとえば、ブランドのトーン、一般的な「すべきこととすべきでないこと」、グローバルに共有される変数、顧客プロファイルなどです。