ハンドブックの例

各ハンドブックには 1 つ以上の例が必要です。これらの例は、エンドユーザーとハンドブック間のサンプル会話で、エージェントによって実行される会話やアクションが含まれます。 これらは実質的に、LLM の数ショットのプロンプトの例です。

コンソールには、アクションを入力するためのインターフェースがあります。

多言語エージェント

エージェントで複数の言語を処理する場合は、例で各言語を使用する必要があります。

入力サマリーと出力サマリーの例

ハンドブックでは、入力パラメータと出力パラメータに加えて、他のハンドブックと情報を交換するために、入力サマリーを受け取り、出力サマリーを出力できます。サマリーは、ハンドブック間で抽象的なコンテキスト情報を渡すことに役立ちますが、パラメータは、ハンドブック間で構造化され明確に定義されたフィールドを渡す場合に役立ちます。パラメータは、フローとハンドブック間でデータを交換する唯一の方法です。

関連する入力サマリーを例に追加して、実行時に入力サマリーに基づいてアクションを調整するようにハンドブックの条件を設定します。会話の例についての関連する正確な詳細を含む出力サマリーを追加して、何の詳細が要約するために重要であるかをハンドブックに示します。

例の状態

会話の特定の時点で、ハンドブックは次のいずれかの状態になります。

  • OK: ハンドブックは目標を達成し、コントロールが親ハンドブックに移管されます。
  • CANCELLED: ユーザーが、ハンドブックに割り当てられた目標で続行させないことを決定しました。 これで、コントロールが親ハンドブックに移管されます。親ハンドブックが CX フローの場合、ユーザー入力のインテントは、フローの実行前に検出されます。
  • FAILED: なんらかのエラー(ツールから 500 エラーが返されるなど)のため、ハンドブックは目標で続行できません。セッションは、失敗のステータスで終了します。EndInteraction というメッセージがレスポンスに追加されます。
  • ESCALATED: ハンドブックは目標を達成できないと判断し、状況を人間にエスカレーションする必要があると判断しました。セッションは、エスカレーションのステータスで終了します。 EndInteraction というメッセージがレスポンスに追加されます。
  • PENDING: 会話はハンドブック内で継続しています。

最上位の例とそのハンドブックの呼び出しは、参照しているハンドブックに対応する状態で示される必要があります。

選択戦略

選択戦略の設定は、LLM に送信されるハンドブックのプロンプトに例を含めるかどうかを制御します。次のオプションが用意されています。

  • 動的に選択: 現在の会話コンテキストとの関連性に応じて、条件付きで例を含めます。プロンプトがトークンの上限に近づいている場合は、例が省略されることもある。

  • 常に選択: 会話のコンテキストに関係なく、例が常に含まれます。プロンプトがトークンの上限に近づいている場合は、例が省略されることもある

  • 選択しない: 例がプロンプトに含まれることはありません。この例は、ハンドブックのパフォーマンスに影響を与えません。この設定は、テストのために一時的に例を除外する場合に便利です。

アクションを追加

ハンドブックに記載されている例は、一連のアクションで構成されています。これらのアクションの組み合わせはさまざまですが、主にユーザーとハンドブックの間のやり取りと、ユーザーのクエリや要件を満たすために行われるアクションを示しています。

例にアクションを追加する方法は 2 つあります。

  • アクションを手動で追加するには、右ペインの下部にある [+] ボタンをクリックするか、既存のアクションの上にポインタを置いた状態で [アクションを追加] ボタンをクリックします。これらのオプションは、[+ Example] オプションをクリックして新しい例を作成するとき、または既存の例を編集するときに使用できます。
  • 既存のハンドブックの指示に基づいてアクションを自動的に生成するには、右ペインの下部にある [ユーザー入力を入力] フィールドにユーザー入力を入力します。このオプションは、例を作成または編集するときに使用できます。または、右側の [プレイブックをプレビュー] ペインでランタイムにプレイブックをテストするときに、このオプションを使用することもできます。[プレビュー プレイブック] ペインから例にアクションを保存するには、[プレビュー プレイブック] ペインの左側にある呼び出しリストからプレイブック呼び出しを選択してから [例を保存] をクリックします。

必ず自動生成されたアクションの正確性を確認し、必要に応じて編集します。これは、例が少ない、または例がないハンドブックでは特に重要です。

次のタイプのアクションは、ハンドブックによってサポートされています。

ハンドブックのレスポンス

ユーザーのクエリに対するハンドブックのレスポンス。

ユーザー入力

ユーザーのクエリ。

ツールの使用

これは、ユーザーのクエリを満たすために必要な追加情報を取得するためのツール呼び出しです。このアクションでは、次の詳細を指定する必要があります。

  • ツール: 呼び出すツールの名前。

  • アクション: 呼び出す OpenAPI ツールのオペレーションの名前。データストア ツールと関数ツールの場合、アクション名はツール名と同じです。

  • ツール入力: ツール呼び出しに含める入力。通常は、ユーザーとの以前の会話ターンから派生します。

    Open API ツールの場合、POST、PUT、PATCH のメソッドタイプに requestBody JSON が必要です。

    createPet アクションの Open API ツール requestBody 入力のサンプル:

    {
      "id": 1,
      "name": "Luna"
    }
    

    データストア ツールの場合は、クエリが必要で、他のフィールドはオプションであるサンプル requestBody。

    {
      "query": "Where is my nearest store?",
      "filter": "country: ANY(\"United States\")",
      "userMetadata": {
        "userCity": "San Francisco",
      },
      "fallback": "We don't have any stores in your area."
    }
    
  • ツールの出力: ツール呼び出しのレスポンス。これは、ツールから指定された入力に対する有効な JSON レスポンスです。Open API ツールの場合は、文字列エラー(「404 見つかりません」など)の場合もあります。

    listPets アクションの Open API ツール出力のサンプル:

    {
      "pets": [
        {
          "id": 1,
          "name": "Luna"
        },
        {
          "id": 2,
          "name": "Charlie"
        }]
    }
    

    サンプリング データストア ツールの出力例:

    {
      "answer": "Here's the address to your nearest store ...",
      "snippets": [
        {
          "title": "San Francisco Downtown",
          "uri": "https://www.example.com/San_Francisco_Downtown",
          "text": "Address for San Francisco Downtown .."
        }
      ]
    }
    

ハンドブックがフェイルセーフであることを確認するには、ツールの呼び出しが失敗した場合にハンドブックがどのように応答すべきかの例も含めます。Open API ツールの呼び出しの失敗は、ツール出力でエラー文字列(「404 見つかりません」)として表されます。データストア ツールの場合、fallback 入力を使用して、要約された回答がない場合の応答方法を指定できます。

データストア ツールでハンドブックのレスポンスに URI を含める場合は、ハンドブックがレスポンスに含める URI を含む例を追加します。この URI がデータストア ツールから取得される場合、データストア ツールの出力には、ハンドブック レスポンスの URI と一致する URI が含まれる必要があります。fallback は、プレイブック レスポンスに URI を含めるようにデータストア ツールの回答を言い換える LLM プレイブックの機能を無効にするため、このシナリオでは使用できません。

ツール使用アクションを含む例は非常に詳細になり、入力トークンの上限の消費量が増加する可能性があります。トークンを効率的に使用するには、ツールの出力が簡潔で、ハンドブックの目標に関連する情報が含まれていることを確認してください。データストア ツールの場合、入力トークンの消費量が増える可能性があるため、例からスニペットを削除することを検討してください。

ハンドブックの呼び出し

このアクションは、ハンドブックがユーザーのクエリを処理するために別のタスク ハンドブックを呼び出す必要がある場合に使用されます。このアクションでは、次の詳細を指定する必要があります。

  • ハンドブック: 呼び出されるハンドブックの名前。
  • ハンドブック呼び出し入力の概要: 呼び出されるハンドブックに役立つ、先行する会話の関連部分の概要。
  • 入力パラメータ: ハンドブックに渡す入力パラメータ。
  • ハンドブック呼び出しの出力の概要: ハンドブックが目標を達成したときに生成する内容の概要。
  • 出力パラメータ: プレイブックが目標を完了したときに生成される出力パラメータ。

ハンドブックの移行

ハンドブックの移行アクションは、ルーティン ハンドブックが終了してターゲット ルーティン ハンドブックに移行することを決定したことを示す、ターミナル アクション(他のアクションが後に続くべきではない)です。このアクションはハンドブックの終了を示すため、ハンドブックの出力パラメータを例のハンドブック出力に追加します。

フローの呼び出し

このアクションは、タスク ハンドブックがフローを呼び出す必要がある場合に使用します。このアクションでは、次の詳細を指定する必要があります。

  • フロー: 呼び出されるフローの名前。
  • フロー入力パラメータ: フローに渡す入力パラメータ。
  • フローの戻りパラメータ: フローから返される出力パラメータ。

フローの移行

フロー遷移アクションは、ルーティン プレイブックが終了してターゲット フローに遷移することを決定したことを示す、ターミナル アクション(他のアクションが続くべきではない)です。このアクションはハンドブックの終了を示すため、ハンドブックの出力パラメータを例のハンドブック出力に追加します。