データストア ツールは、ウェブサイトのコンテンツやアップロードされたデータに基づいて、AI 生成によるエージェントの回答を提供できます。エージェントは、フルフィルメント中にデータストアからエンドユーザーの質問に対する回答を見つけることができます。
データストア ツール: コンソール
このセクションでは、データストア ツールをエージェントに追加して、フルフィルメントで構成する方法について説明します。
データストア ツールを作成する
- 会話エージェント コンソールを開き、 Google Cloud プロジェクトを選択します。
- プルダウン メニューからエージェントを選択します。
- ページの一番左にあるメニューバーに移動して、[ツール] を選択します。
- [+ 作成] をクリックします。ツールの固有の名前 を入力し、[タイプ] のプルダウン メニューから [データストア] を選択します。必要に応じて、[説明] フィールドにツールの説明を入力します。
- [データストアを追加] をクリックします。表示されるウィンドウには、既存のデータストアのリストが表示されます(存在する場合)。ツールに追加するデータストアを選択します。
- (省略可) Vertex AI Agent Builder コンソールで新しいデータストアを作成するには、 [新しいデータストアを作成] をクリックして自動的にリダイレクトします。
- (省略可)新しいデータストアを構成したら、[作成] をクリックします。新しいデータストアをツールに追加するには、Dialogflow CX コンソールの [ツールを作成] メニューに戻ってページを更新します。新しいデータストアが、利用可能なデータストアのリストに表示されます。
- [ツールを作成] 構成の上部にある [保存] をクリックして、新しいデータストア ツールを作成します。
データストア ツールをフルフィルメントに追加する
- 一番左のメニューバーに移動して、[フロー] を選択します。
- フローとページを選択し、データストアで使用する [ルート] をクリックします。
- [フルフィルメント > データストア ツール] に移動し、プルダウン メニューからデータストア ツールを選択します。
- [フルフィルメント > エージェント レスポンス] に移動し、[+ ダイアログのレスポンスを追加] をクリックして、 [データストア ツール レスポンス] をクリックします。
- レスポンスに表示するソースリンクと引用の数を構成し、データストア レスポンスが空の場合のフォールバック動作を指定します。[静的フォールバック レスポンス] フィールドに静的フォールバック レスポンスを入力します。 必要に応じて、[生成フォールバック] チェックボックスをオンにして、静的フォールバック レスポンスを使用する前に AI を使用してレスポンスを生成します。フォールバック レスポンスをカスタマイズするには、[データストア レスポンス] フォーム ウィンドウの左上にあるレンチ アイコンをクリックして、[条件付きレスポンス] ウィンドウを開きます。
- [ルート] メニューの上部にある [保存] をクリックします。
- 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 文字列とともに、3 つのオプションの入力(filter 文字列、userMetadata 構造化オブジェクト、fallback 文字列)を提供します。
filter パラメータを使用すると、構造化データ、およびメタデータを含む非構造化データの検索クエリをフィルタできます。この文字列は、データストアの
サポートされているフィルタ式の構文
に従う必要があります。複数の詳細な例で、このパラメータの入力方法をハンドブック モデルに指示します。フィルタ文字列が無効な場合、検索クエリ中にそのフィルタは無視されます。
次の例は、場所に基づいて検索結果を絞り込むために使用できる filter 文字列を示しています。
"filter": "country: ANY(\"Canada\")"
ハンドブックの例について詳しくは、例のページをご覧ください。
フィルタリングのベスト プラクティス:
ハンドブックが有効なフィルタの構築に関する制約を理解できるように、フィルタリングに使用できるフィールドと、これらの各フィールドの有効な値を指定します。たとえば、メニュー情報を保持するデータストアには、有効な値として「breakfast」、「lunch」、「dinner」の
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
- ディスカバリー エンジン管理者
詳細については、アクセス制御ガイドをご覧ください。
エージェントにデータストアを追加する
まだ行っていない場合は、設定 手順に沿ってエージェントを作成してください。
エージェントにデータストアを追加する手順は次のとおりです。
- ページを選択し、[状態ハンドラを追加] をクリックします。
- [データストア] チェックボックスをオンにして、[適用] をクリックします。
- ページの [データストア] セクションの右上にある [\+] 記号をクリックします。
- 表示されるデータストア メニューで、[データストアを追加] をクリックします。
- 既存のデータストアの一覧が表示されます。使用するデータストアの名前の横にあるチェックボックスをオンにして、[保存] をクリックします。新しいデータストアを作成するには、[新しいデータストアを作成] をクリックします。Vertex AI Agent Builder に自動的にリダイレクトされます。
- (新しいデータストアのみ)データソースを選択し、Vertex AI Agent Builder の手順に沿ってデータストアを構成します。データストア タイプの構成の詳細については、 データストアのドキュメントをご覧ください。[作成] をクリックして、新しいデータストアを作成します。
エージェントをテスト
エージェントのデプロイ
エージェントは次の方法でデプロイできます。
- 簡単なオプションは、エージェントのユーザー インターフェースを提供する統合 を使用することです。各統合には、デプロイの手順が用意されています。
- Dialogflow CX Messenger 統合は、データストア ハンドラに適したオプションです。生成機能の組み込みオプションがあります。
- 独自のユーザー インターフェースを作成し、操作に Dialogflow CX API を使用できます。 ユーザー インターフェースの実装でデプロイを管理します。
特別なインテント
提供するコンテンツに関する質問に対応するだけでなく、エージェントは次のような質問に答えることができます。
- エージェントの識別: エージェントは、「あなたは誰ですか?」、「あなたは人間ですか?」などの質問に対応します。
- 人間のエージェントにエスカレーションする: エージェントは、「人間と話したい」、「本当の人と話したい」などの質問に対応します。
これは、自動的に生成されるインテント およびインテント ルートによって行われます。
エージェント レスポンス
[エージェント レスポンス] セクションで、生成する回答を参照するカスタム レスポンスを指定します。[エージェント セイ] セクションで $request.knowledge.answers[0] を使用して、生成する回答を提供します。
高度なレスポンスのカスタマイズ
レスポンスをカスタマイズするために、$request.knowledge.* で追加情報を使用できる場合があります。次のような情報が含まれます。
- 回答の特定されたソース(スニペット、タイトル、URI のフィールドを含む)。
- 回答のグラウンディングの信頼度。
- FAQ データストアの場合、選択された回答に対応する質問。
次の表に、この情報にアクセスする方法の例を示します。
| 情報 | アクセス方法 |
|---|---|
| 上位の回答の上位の特定されたソースのスニペット | $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] |