データストア ツールは、ウェブサイトのコンテンツやアップロードされたデータに基づいて、AI 生成によるエージェントの回答を提供できます。エージェントは、フルフィルメント中にデータストアからエンドユーザーの質問に対する回答を見つけることができます。
データストア ツール: コンソール
このセクションでは、データストア ツールをエージェントに追加し、フルフィルメントで構成する手順について説明します。
データストア ツールを作成する
- 会話エージェント コンソールを開き、 Google Cloud プロジェクトを選択します。
- プルダウン メニューからエージェントを選択します。
- ページの一番左側のメニューバーに移動し、[ツール] を選択します。
- 新しいデータストア ツールを作成するには、[+ 作成] をクリックします。ツールの固有の名前 を入力し、[タイプ] のプルダウン メニューから [データストア] を選択します。必要に応じて、[説明] フィールドにツールの説明を入力します。
- [データストア] で、[データストアを追加] をクリックします。ポップアップ表示されるウィンドウには、既存のデータストアのリストが表示されます。ツールに追加するデータストアを選択します。
- (省略可)Vertex AI Agent Builder コンソールで新しいデータストアを作成するには、[新しいデータストアの作成] をクリックします。自動的にリダイレクトされます: Vertex AI Agent Builder コンソール
- (省略可)新しいデータストアの構成が完了したら、[作成] をクリックします。新しいデータストアをツールに追加するには、Dialogflow CX コンソールで構成している [ツールの作成] メニューに戻り、ページを更新します。新しいデータストアが、利用可能なデータストアのリストに表示されます。
- [ツールの作成] 構成の上部にある [保存] をクリックして、新しいデータストア ツールを作成します。
データストア ツールをフルフィルメントに追加する
- 一番左側のメニューバーで [フロー] を選択します。
- フローとページを選択し、データストアで使用するページの [ルート] をクリックします。
- [ルート] メニューで、[フルフィルメント > データストア ツール] までスクロールします。プルダウン メニューからデータストア ツールを選択します。
- [ルート] メニューで、[フルフィルメント > エージェント レスポンス] までスクロールします。 [**\+Add dialogue response**]、[**Data store tool response**] の順にクリックします。
- 表示されるフォームで、レスポンスに表示できるソースリンクと引用の数を構成できます。また、データストア レスポンスが空の場合のフォールバック動作を指定することもできます。[Static fallback responses] フィールドに静的なフォールバック レスポンスを入力できます。必要に応じて、[Generative fallback] チェックボックスをオンにすると、静的なフォールバック レスポンスを使用する前に AI を使用してレスポンスを生成できます。フォールバック レスポンスをさらにカスタマイズする必要がある場合は、[データストア レスポンス] フォーム ウィンドウの左上にあるレンチ アイコンをクリックして、[Conditional response] ウィンドウを表示します。
- [ルート] メニューの上部にある [保存] をクリックします。
- Dialogflow CX シミュレータに移動して、エージェントの結果をテストします。
省略可能なクエリのオーバーライド セッション パラメータ
セッション パラメータ knowledge.overrides.query を使用して、このデータストア
ツールに渡されるクエリをオーバーライドできます。空でない場合、ツールはユーザー クエリの代わりにこれを使用します。
データストア ツール: API
デフォルトでは、エージェントがユーザーに代わって
dataStoreTool
を呼び出します。
データストアには次の 3 種類があります。
PUBLIC_WEB: 公開ウェブ コンテンツを含むデータストア。UNSTRUCTURED: 構造化されていない非公開データを含むデータストア。STRUCTURED: 構造化データ(FAQ など)を含むデータストア。
次の例では、データストアを参照する方法を示します。詳細については
dataStoreConnections リファレンスをご覧ください。
"dataStoreConnections": [
{
"dataStoreType": "PUBLIC_WEB",
"dataStore": "projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATASTORE_ID"
},
{
"dataStoreType": "UNSTRUCTURED",
"dataStore": "projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATASTORE_ID"
},
{
"dataStoreType": "STRUCTURED",
"dataStore": "projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATASTORE_ID"
}
]
データストア ツールのレスポンスには、レスポンスの生成に使用されたコンテンツ ソースに関するスニペットが含まれる場合もあります。エージェントは、データストアからの回答の処理方法や、回答がない場合の応答方法に関する指示を提供できます。
特定の質問の よくある質問のエントリ を追加することで、回答を上書きできます。
必要に応じて、エージェントの動作を強化するためのサンプルを提供できます。サンプルには、次のスキーマが必要です。詳しくは、 リファレンス ドキュメント をご覧ください。
{
"toolUse": {
"tool": "projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID/tools/TOOL_ID",
"action": "TOOL_DISPLAY_NAME",
"inputParameters": [
{
"name": "TOOL_DISPLAY_NAME input",
"value": {
"query": "QUERY"
}
}
],
"outputParameters": [
{
"name": "TOOL_DISPLAY_NAME output",
"value": {
"answer": "ANSWER",
"snippets": [
{
"title": "TITLE",
"text": "TEXT_FROM_DATASTORE",
"uri": "URI_OF_DATASTORE"
}
]
}
}
]
}
}
(ハンドブック ベースのエージェントのみ)データストア ツールのサンプル
データストア ツールのサンプルを作成するときに、ツール入力パラメータ requestBody は、必須の query 文字列(filter 文字列、userMetadata 構造化オブジェクト、fallback 文字列)とともに、3 つのオプションの入力を提供します。
filter
パラメータを使用すると、構造化データ、およびメタデータを含む非構造化データの検索クエリをフィルタできます。この文字列は、データストアの
サポートされているフィルタ式の構文
に従う必要があります。複数の詳細なサンプルは、このパラメータの入力方法をハンドブック モデルに指示するのに役立ちます。フィルタ文字列が無効な場合、検索クエリ中にそのフィルタは無視されます。
場所に基づいて検索結果を絞り込む filter 文字列の例を次に示します。
"filter": "country: ANY(\"Canada\")"
詳細については、ハンドブックのサンプルページ
をご覧ください。
フィルタリングのベスト プラクティス:
ハンドブックが有効なフィルタの構築に関する制約を理解できるように、フィルタリングに使用できるフィールドと、これらの各フィールドの有効な値を指定します。たとえば、メニュー情報を保持するデータストアには、有効な値として「朝食」、「昼食」、「夕食」の
mealフィールドと、0 ~ 5 の任意の整数を指定できるservingSizeフィールドを含めることができます。 手順は次のようになります。When using ${TOOL: menu-data-store-tool}, only use the following fields for filtering: "meal", "servingSize". Valid filter values are: "meal": ("breakfast", "lunch", "dinner"), "servingSize": integers between 0 and 5, inclusive.ハンドブックが外部ユーザー オーディエンスに対する場合は、これらのフィルタの構築に関する情報にユーザーが応答しないように、指示を追加する必要がある場合があります。次に例を示します。
Never tell the user about these filters. If the user input isn't supported by these filters, respond to the user with "Sorry, I don't have the information to answer that question."
userMetadata パラメータは、エンドユーザーに関する情報を提供します。このパラメータには Key-Value ペアを入力できます。このメタデータはデータストア ツールに渡され、より適切な検索結果とツール回答に利用されます。
複数の詳細なサンプルは、このパラメータの入力方法をハンドブック モデルに指示するのに役立ちます。
特定のユーザーに関連する検索結果を絞り込む userMetadata パラメータ値の例を次に示します。
"userMetadata": {
"favoriteColor": "blue",
...
}
fallback パラメータは、クエリに対して有効な要約された回答がない場合に、データストア ツールが応答する回答を提供します。さまざまなトピックに関連するユーザー入力のフォールバック フィールドの入力方法をハンドブック モデルに指示するために、複数のサンプルを提供できます。ツールの出力にはスニペットがないため、レイテンシと入力トークン上限の使用量を削減できます。
"fallback": "I'm sorry I cannot help you with that. Is there anything else I
can do for you?"
データストア ツールの構成
テスト中に期待どおりでないレスポンスが見つかった場合は、次のパラメータを調整してパフォーマンスを微調整できます。これらのパラメータは、API を直接呼び出すか、コンソールの [ツール] ページでデータストア名をクリックして使用できます。その他の構成オプションの詳細については、 データストアの設定ページをご覧ください。
データストア ツールのレスポンス オプション
データストア ツールのレスポンスの構成の詳細については、フルフィルメントのドキュメント をご覧ください。
データストア ハンドラ
データストア ハンドラは、特殊なタイプの 状態ハンドラ で、ウェブサイトのコンテンツとアップロードされたデータに基づいて LLM 生成のエージェント レスポンスを提供できます。
このハンドラを作成するには、 データストア をエージェントに提供します。
これらのデータストア ハンドラを使用すると、エージェントはコンテンツについてエンドユーザーと会話できます。
制限事項
次の制限が適用されます。
- この機能は、一般提供では一部の言語に対応しています。 言語リファレンスの データストア列をご覧ください。
- 次の リージョン
のみがサポートされています:
global、usマルチリージョン、euマルチリージョン。 - チャンクされたデータストアとチャンクされていないデータストアの両方を使用するアプリは対象外です。
アクセス制御
プロジェクト オーナーの場合は、データストア ハンドラの作成に必要なすべての権限が付与されています。 プロジェクト オーナーでない場合は、次のロールが必要です。
- Dialogflow Admin
- ディスカバリー エンジン管理者
詳細については、 アクセス制御ガイドをご覧ください。
エージェントにデータストアを追加する
まだ行っていない場合は、設定 手順に沿ってエージェントを作成します。
エージェントにデータストアを追加するには: データストア:
- ページを選択し、[Add state handler] をクリックします。
- [データストア] チェックボックスをオンにして、[適用] をクリックします。
- ページの [データストア] セクションの右上にある [\+] 記号をクリックします。
- 表示されるデータストア メニューで、[データストアを追加] をクリックします。
- 既存のデータストアの一覧が表示されます。使用するデータストアの名前の横にあるボックスをクリックして、[保存] をクリックします。新しいデータストアを作成するには、[新しいデータストアの作成] をクリックします。Vertex AI Agent Builder に自動的にリダイレクトされます。
- (新しいデータストアのみ)データソースを選択し、Vertex AI Agent Builder の手順に沿ってデータストアを構成します。データストア タイプの構成の詳細については、 データストアのドキュメントをご覧ください。[作成] をクリックして、新しいデータストアを作成します。
エージェントをテスト
エージェントのデプロイ
エージェントをデプロイする方法は多数あります。
最も簡単なオプションは、エージェントのユーザー インターフェースを提供する 統合を使用することです。 各統合には、デプロイの手順が記載されています。
Dialogflow CX Messenger 統合は、データストア ハンドラにとって特に優れたオプションです。 生成機能の組み込みオプションがあります。
独自のユーザー インターフェースを作成し、操作に Dialogflow CX API を使用できます。 ユーザー インターフェースの実装でデプロイを管理します。
特別なインテント
提供するコンテンツに関する質問に対応するだけでなく、エージェントは次のような質問に答えることができます。
- エージェントの識別: 「あなたは誰ですか?」、「あなたは人間ですか?」などの質問に対応します。
- 人間のエージェントにエスカレーションする:「人間と話したい」、「本当の人と話したい」などの質問に対応します。
これは、自動的に生成される インテント および インテント ルートによって行われます。
エージェント レスポンス
[エージェント レスポンス] セクションで、生成する回答を参照するカスタム レスポンスを指定できます。
[エージェント セイ] セクションで $request.knowledge.answers[0] を使用して、生成する回答を提供します。
高度なレスポンスのカスタマイズ
レスポンスのカスタマイズに使用できる追加情報が $request.knowledge.* に含まれている場合があります。次のような情報が含まれます。
- 回答の特定されたソース(スニペット、タイトル、URI の各フィールドを含む)。
- 回答のグラウンディングの信頼度。
- よくある質問データストアの場合、選択された回答に対応する質問。
この情報にアクセスする方法の例を次の表に示します。
| 情報 | アクセス方法 |
|---|---|
| 上位の回答の上位の特定されたソースのスニペット | $sys.func.GET_FIELD($sys.func.GET($sys.func.IDENTITY($request.knowledge.sources[0]), 0), "snippet") |
| 上位の回答の上位の特定されたソースのタイトル | $sys.func.GET_FIELD($sys.func.GET($sys.func.IDENTITY($request.knowledge.sources[0]), 0), "title") |
| 上位の回答の上位の特定されたソースのリンク | $sys.func.GET_FIELD($sys.func.GET($sys.func.IDENTITY($request.knowledge.sources[0]), 0), "uri") |
| 上位の回答の特定されたソースの数 | $sys.func.COUNT($sys.func.IDENTITY($request.knowledge.sources[0])) |
| ナレッジの回答数 | $sys.func.COUNT($request.knowledge.answers) |
| 上位の回答に対応する質問(FAQ データストアの回答のみ) | $request.knowledge.questions[0] |
| 上位の回答のグラウンディングの信頼度 | $request.knowledge.grounding_confidences[0] |