データストアのパフォーマンスの向上

このガイドでは、データストア ハンドラのパフォーマンスをモニタリングして改善するための推奨事項について説明します。

エージェントの会話履歴をモニタリングしたり、エージェントの統計情報に分析ツールを使用したりできます。

セルフサービス評価を実行すると、データストア エージェントの品質が評価され、変更が推奨されます。

エージェントのレスポンスを改善する

テスト中に期待どおりでないレスポンスが見つかった場合は、次の手順をお試しください。

Playbook で使用されるデータストア ツールの最適化

この設定により、データストアの RAG レスポンスが高速化され、ユーザーのクエリを書き換えたり、ツール パラメータを動的に入力したりしないため、レイテンシが改善されます。つまり、ユーザーのクエリはそのままデータストアに渡され、フィルタやユーザー メタデータ関連のパラメータは入力されません。

この機能を有効にするには、Dialogflow CX コンソールで Playbook を選択し、[Settings] タブをクリックします。フォローアップ アクションの処理をすぐに続行するか、次のエンドユーザー入力を待機するかを、ハンドブックで構成できます。

有効になっている場合、次の Playbook の手順は引き続き適用されます。

  • データストアを使用してユーザーのクエリに回答するタイミング。
  • データストアを使用してユーザーのクエリに回答せず、代わりに別のレスポンスを提供するタイミング。
  • 「競合他社に関する質問には答えない」など、防御的な指示。

有効にすると、次の Playbook 指示は無視されます。次のいずれかのクエリ要件がある場合は、この設定を有効にしないでください。

  • 手順に沿って入力する特定のデータストア フィルタ。
  • フィルタによって渡されたユーザー パーソナライズ メタデータを適用する手順。
  • データストアにクエリを実行する前にユーザーのクエリを書き換えるその他の指示。

会話の余談を処理する

エンドユーザーが会話中に明らかにするための質問をする場合があります。たとえば、クレジット カード情報の収集中に、CVV が何かを明確にする必要があります。この場合、エージェントは質問に回答し、必要なクレジット カード情報の収集に戻る必要があります。これを行うには、質問に答えるデータストアを使用してデータストア ハンドラを作成し、そのハンドラをクレジット カード情報の収集を処理するフローのフロースタートページに適用して、このハンドラが「現在のページ」に戻るためのトランジション ターゲットを設定します。

望ましくないインテント マッチを処理する

エージェントがデータストア ハンドラを使うべきなのにインテントと一致している場合、これを修正するために以下を試すことができます。

  • あいまいなトレーニング フレーズを削除または変更します。これにより、すべてのトレーニング フレーズが目的の意図を正確に処理し、データストアのコンテンツと競合しなくなります。
  • ネガティブ サンプルを使用してインテント不一致を回避します。

データストアのフィルタリング

場合によっては、セッション パラメータ値に応じて、クエリに特定のデータストアのみを使用することがあります。たとえば、商品カテゴリごとに一意のデータストアを作成する場合があります。商品カテゴリのデータストアをフィルタするには:

  • セッション パラメータを商品カテゴリに設定します。
  • セッション パラメータの値を確認し、目的のデータストア ハンドラを含む特定のページに遷移する条件ルートを作成します。
  • データストア ハンドラが呼び出しページに戻り、会話を続行できます。

パーソナライズ

生成回答をエンドユーザーにより関連性のあるものにするために、会話エージェント(Dialogflow CX)にユーザーに関する情報を提供できます。

この情報は JSON として提供されます。 想定されるスキーマはないため、オブジェクト プロパティを自由に定義できます。 この JSON は大規模な言語モデルにそのまま送信されるため、記述的なプロパティ名と値により最適な結果につながります。

次に例を示します。

{
  "subscription plan": "Business Premium Plus",
  "devices owned": [
    {"model": "Google Pixel 7"},
    {"model": "Google Pixel Tablet"}
  ]
}

API によるパーソナライズ

インテント検出リクエストを送信するときに、そのデータを会話エージェント(Dialogflow CX)に渡すことができます。この情報はセッションで維持されないため、すべてのインテント検出リクエストで提供する必要があります。

この情報は、Sessions.detectIntent メソッドの queryParams.endUserMetadata フィールドに入力します。

セッション リファレンスのプロトコルとバージョンを選択:

プロトコル V3 V3beta1
REST セッション リソース セッション リソース
RPC セッション インターフェース セッション インターフェース
C++ SessionsClient 利用できません
C# SessionsClient 利用できません
Go SessionsClient 利用できません
Java SessionsClient SessionsClient
Node.js SessionsClient SessionsClient
PHP 利用不可 利用できません
Python SessionsClient SessionsClient
Ruby 利用不可 利用できません

Dialogflow CX Messenger によるパーソナライズ

このデータを Dialogflow CX Messenger の統合に提供できます。setContext メソッドをご覧ください。

検索構成

エージェントの動作をより適切に制御し、回答の質を向上させるために、検索構成(ブーストとフィルタ)を公開することで、ドキュメントのブースト、埋め込み、フィルタを行うことができます。

ブースト コントロールを使用すると、特定のドキュメントにブースト値(ランキングが高い場合は 0 より大きい値、ランキングが低い場合は 0 未満の値)を適用することで、検索結果のランキングを変更できます。

フィルタ コントロールを使用すると、指定したフィルタ条件に基づいて検索結果を保持または削除できます。

この情報は、会話エージェント(Dialogflow CX)リクエストに JSON として提供されます。JSON の形式は、検索コントロールのタイプによって異なります。

ブースト コントロール

次の検索構成は、ブースト コントロールを示しています。

"searchConfig": {
  "boostSpecs": [
    {
      "dataStores": [ "DATASTORE_ID" ],
      "spec": [
        {
          "conditionBoostSpecs": {
            "condition": "CONDITION",
            "boost": "1.0"
          }
        }
      ]
    }
  ]
}

フィルタ コントロール

次の検索構成は、フィルタ コントロールを示しています。

"searchConfig": {
  "filterSpecs": [
    {
      "dataStores": [ "DATASTORE_ID" ],
      "filter": "CONDITION"
    }
  ]
}

API を使用して検索構成を設定する

インテント検出リクエストを送信するときに、そのデータを会話エージェント(Dialogflow CX)に渡すことができます。この情報はセッションで維持されないため、すべてのインテント検出リクエストで提供する必要があります。

この情報は、Sessions.detectIntent メソッドの queryParams.searchConfig フィールドに入力します。

セッション リファレンスのプロトコルとバージョンを選択:

プロトコル V3 V3beta1
REST セッション リソース セッション リソース
RPC セッション インターフェース セッション インターフェース
C++ SessionsClient 利用できません
C# SessionsClient 利用できません
Go SessionsClient 利用できません
Java SessionsClient SessionsClient
Node.js SessionsClient SessionsClient
PHP 利用不可 利用できません
Python SessionsClient SessionsClient
Ruby 利用不可 利用できません

Dialogflow CX Messenger を使用して検索構成を設定する

このデータを Dialogflow CX Messenger の統合に提供できます。

検索コントロールを適用するには、ウェブサイトに埋め込むときに、Messenger コードに次のスニペットを追加する必要があります。

<script>
  document.addEventListener('df-messenger-loaded', () => {
    const dfMessenger = document.querySelector('df-messenger');
    const searchConfig = { ... }
    dfMessenger.setQueryParameters(searchConfig);
  });
</script>

詳しくは、setQueryParameters メソッドをご覧ください。