データストア エージェント

Vertex AI Conversation 機能では、データストア エージェントと呼ばれる特別な Dialogflow エージェントを作成します。この機能を使用すると、ウェブサイトのリンクまたはドキュメント(データストア)を指定して、Google がコンテンツを解析し、大規模言語モデルを搭載した仮想エージェントを作成します。これは、データストア ハンドラと呼ばれる特別な状態ハンドラで実現されます。 これらのデータストア ハンドラを使用すると、データストア エージェントがエンドユーザーとコンテンツに関する会話を行うことができます。

ドメイン名を指定することも、任意の数のドキュメントをアップロードすることもできます。Google はそれらのドキュメントをインデックスに登録します。 この情報には、エージェントがリアルタイムでアクセスできます。これにより、Dialogflow の自然な会話機能を使用して、一般公開データや限定公開データに対して実行される Google 検索アルゴリズムのパワーと精度が統合されます。

新しいデータストア エージェントの作成方法については、Vertex AI Conversation の概要をご覧ください。

ハイブリッド エージェントについて

既存の Dialogflow CX エージェントがある場合は、このエージェントをハイブリッド エージェントにアップグレードできます。これは、正確な会話制御(フロー、パラメータ、インテント、条件、移行など)の機能をデータストア ハンドラの生成機能と組み合わせたものです。

このアップグレードの一環として、エージェントからの特定の会話シナリオでインテント ルートを削除または一時的に無効にできます(データストア ハンドラのテスト中に)。これは、データストア ハンドが、これらのシナリオをよりシンプルに処理できるためです。

データストア ハンドラには、次のようなシナリオが推奨されます。

  • 組織のドキュメントまたはウェブサイトで回答できる質問。
  • データベース検索を必要としないよくある質問。

次のシナリオは、データストア ハンドラでは推奨されません。

  • 対象の質問に対する回答がないコンテンツ。
  • データベース検索またはサーバー リクエストを必要とする質問。
  • データの除去が必要なシナリオ。
  • 決定的なエージェント レスポンスが必要なシナリオ。

入力の評価順序

Dialogflow は、ハイブリッド エージェントについて、次の順序でエンドユーザー入力を評価します。

  1. フォーム入力時のパラメータ入力。
  2. インテントがスコープ内のルートを照合する。
  3. よくある質問のデータストアのコンテンツを含むデータストア ハンドラ。
  4. 非構造化データストアのコンテンツを含むデータストア ハンドラ。

既存のエージェントのデータストア ハンドラを追加または編集する

データストア ハンドラは、Dialogflow の特別なタイプの状態ハンドラです。 つまり、フローやページに適用でき、同じスコープルールを使用して評価されます。

データストア ハンドラを追加または編集するには:

  1. Dialogflow CX コンソールに移動
  2. Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. データストア ハンドラに関連付けられたフローを選択します。 通常これは、デフォルトの開始フローです。
  5. データストア ハンドラに関連付けられているページを選択します。 通常これは、スタートページです。
  6. ページデータの [状態ハンドラを追加] をクリックして、[データストア] を選択します。
  7. データストアを作成する必要がある場合は、Vertex AI Search and Conversation ユーザー インターフェースが表示されます。選択方法については、データストア情報をご覧ください。
  8. すでにデータストアがある場合は、[データストアを編集] をクリックします。
  9. 必要に応じて更新を行い、完了したら保存します。 データストアに固有の設定については、以下をご覧ください。

エージェント レスポンス

[エージェント レスポンス] セクションで、生成する回答を参照するカスタム レスポンスを指定できます。 [エージェント セイ] セクションで $request.knowledge.questions[0] を使用して、生成する回答を提供します。

データストアのレスポンス オプション

[リンクの最大数] フィールドを更新して、生成する回答によって提供される補足リンクの最大数を指定できます。

会話のダイジェストを処理する

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

望ましくないインテントの一致を処理する

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

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

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

セッション パラメータ値によっては、クエリで使用可能な特定のデータストアのみが必要になる場合があります。たとえば、商品カテゴリごとに一意のデータストアがあるとします。商品カテゴリでデータストアのフィルタリングを行うには:

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

パーソナライズ

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

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

例:

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

Dialogflow API によるパーソナライズ

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

この情報は、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 Messenger によるカスタマイズ

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

検索構成

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

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

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

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

ブースト制御

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

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

フィルタ オプション

次の検索構成は、フィルタ オプションを示しています。

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

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

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

この情報は、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 Messenger を使用して検索構成を設定する

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

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

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

setQueryParameters メソッドをご覧ください。

Codelab

データストア エージェントと生成チャット アプリの Codelab もご覧ください。