ハンドブックの例

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

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

多言語エージェント

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

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

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

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

例の状態

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

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

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

選択戦略

選択戦略の設定では、ハンドブックの LLM に送信されるプロンプトに例を含めるかどうかを制御します。

次のオプションが用意されています。

  • 動的に選択: 現在の会話コンテキストとの関連性に応じて条件付きで例を含めます。プロンプトがトークンの上限に近づいている場合は、例を省略できます。
  • 常に選択: 会話のコンテキストに関係なく、例を常に含めます。プロンプトがトークンの上限に近づいている場合は、例を省略できます。
  • 選択しない: 例はプロンプトに含まれません。この例は、ハンドブックのパフォーマンスに影響を与えません。この設定は、テストのために一時的に例を除外する場合に便利です。

アクションを追加

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

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

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

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

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

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

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

ユーザー入力

ユーザークエリを入力します。

ツールの使用

ツール呼び出しを使用して、ユーザーのクエリを処理するために必要な追加情報を取得します。

このアクションでは、次の詳細を指定します。

  • ツール: 呼び出す必要があるツールの名前。
  • アクション: 呼び出す必要がある OpenAPI ツールのオペレーションの名前。データストア ツールと関数ツールの場合、アクション名はツール名と同じです。
  • ツールの入力: ツール呼び出しに含める入力。通常、これらの入力は、ユーザーとの以前の会話ターンから派生します。

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

    createPet アクションの OpenAPI ツール 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 レスポンスです。OpenAPI ツールの場合は、文字列エラー(「404 見つかりません」など)の場合もあります。

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

    {
      "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 .."
        }
      ]
    }
    

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

データストア ツールでハンドブックのレスポンスに URI を含める場合は、ハンドブックでレスポンスに含める URI を含む例を追加します。この URI がデータストア ツールから取得される場合、データストア ツールの出力には、ハンドブック レスポンスの URI と一致する URI が含まれる必要があります。

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

ハンドブックの呼び出し

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

このアクションに次の詳細を指定します。

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

ハンドブックの移行

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

フローの呼び出し

このアクションは、タスク ハンドブックがフローを呼び出す必要がある場合に使用されます。

このアクションでは、次の詳細を指定する必要があります。

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

フローの移行

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