データストア エージェントは特別なタイプの Dialogflow エージェントで、ウェブサイトのコンテンツとアップロードされたデータに基づいて LLM で生成されたエージェントのレスポンスを提供できます。
このエージェントを作成するには、エージェントの作成時にデータストアを指定します。
データストア エージェントには、データストア ハンドラと呼ばれる特別な状態ハンドラがあります。これらのデータストア ハンドラを使用して、データストア エージェントはエンドユーザーとコンテンツについて会話できます。
制限事項
次の制限が適用されます。
- 現在、この機能は一般提供の一部の言語のみをサポートしています。言語のリファレンスのデータストアの列をご覧ください。
- 次のリージョンのみがサポートされています。
global
、us
マルチリージョン、eu
マルチリージョン。
アクセス制御
プロジェクト オーナーの場合は、データストア エージェントの作成に必要なすべての権限が付与されています。プロジェクト オーナーでない場合は、次のロールが必要です。
- Dialogflow Admin
- ディスカバリー エンジン管理者
詳細については、Dialogflow アクセス制御ガイドをご覧ください。
データストア エージェントの作成
データストア エージェントを作成するには:
- まだ行っていない場合は、Dialogflow のsetup手順に沿って操作してください。
Google Cloud コンソールで、[検索と会話] ページに移動します。
コンソールのプルダウンからプロジェクトを選択します。
API をまだ有効にしていない場合は、利用規約を読んで同意し、[続行して API を有効にする] をクリックします。
[Create a New App] または [New App] をクリックします。
[Chat] を選択します。
[エージェント構成] セクションに会社名を入力します。
タイムゾーンと言語の設定セクションを展開します。
タイムゾーンを選択します。
デフォルトの言語を選択
[エージェント名] セクションにエージェント名を入力します。
[エージェントのロケーション] セクションで、リージョンまたはマルチリージョンを選択します。
[続行] をクリックします。
次のいずれかの方法で、データストアをエージェントに接続します。
[作成] をクリックします。
エージェントが作成され、使用可能なデータストア ページに自動的にリダイレクトされます。このページでは、必要に応じてデータストアを追加できます。
ウェブサイト用の新しいデータストアを作成した場合は、ドメインを確認する必要があります。
Dialogflow CX でエージェントを開くには、左パネルで [プレビュー] をクリックします。Dialogflow CX コンソールでは、データストア ハンドラの編集または追加、エージェントのデプロイ、必要に応じて、データストアでカバーされていないシナリオを処理するフローを追加します。
エージェントをテスト
エージェントをテストするには、Dialogflow CX シミュレータを使用します。
エージェントの生成レスポンスを改善する
テスト中に一部の回答が期待どおりでない場合は、次のことを試してください。
特定の質問のよくある質問エントリを追加することで、回答を上書きできます。
Dialogflow コンソールで、エージェントをさらにカスタマイズできます。コンソールに移動するには、コンソールで使用可能なエージェントのリストでエージェントの名前をクリックします。次に、Dialogflow の [エージェントの設定] ページを開き、[ML] タブに移動して、[生成 AI] サブタブに移動して、ソース別にトラフィック データを分類します。次のカスタマイズが可能です。
根拠づけの信頼度
接続されているデータストアのコンテンツから生成されたレスポンスごとに信頼度レベルを評価します。信頼度レベルは、レスポンス内のすべての情報がデータストアの情報でサポートされている信頼度を測定します。希望する最も低い信頼度レベルを選択して、許可するレスポンスの種類をカスタマイズできます。そのレベルよりも厳密に低い信頼度でレスポンスが返される場合、その信頼度は表示されません。
信頼度には、非常に低い、低、中、高、非常に高い 5 つのレベルがあります。
データストアのプロンプト
エージェントに関する追加情報を追加して、データストアのコンテンツから生成される回答の品質を改善し、お客様のブランドにふさわしいものにすることができます。
- エージェント名 - エージェント自体が持つべき名前。未設定の場合は、デフォルト値の AI Assistant が使用されます。
- Agent identity - エージェント ペルソナが何であるか。未設定の場合は、デフォルト値の AI Assistant が使用されます。
- [会社名] は会社名に設定する必要があります。これはエージェント作成フローの一部としてすでに設定されていますが、必要に応じて調整できます。この項目は正しく設定することをおすすめします(特に、空白のままにしないでください)。生成される回答の品質に悪影響が及ぶのを防ぎます。
- 会社の説明とは、会社が何を提供しているか、提供している説明のことです。
- エージェントのスコープ - エージェントを使用することを想定している場所。未設定の場合は、会社のウェブサイトのデフォルト値が使用されます。
このセクションの一部またはすべてに入力したら、右側の [プロンプト] の下で、これらの設定から派生した短い段落を調べることができ、回答生成の一部として使われることもあります。
禁止フレーズ
許可すべきではない特定のフレーズを定義することもできます。生成されたレスポンス(つまり、最後のユーザーの発話など、レスポンスの生成に使用されるプロンプトに入力されるコンテンツ)に、禁止されたフレーズがそのまま含まれている場合、そのレスポンスは表示されません。
データストア モデルの選択と要約のプロンプト
ユーザークエリが処理されると、エージェントは適切なソースを見つけるためにデータストアを検索します。次に、エージェントはユーザークエリと検出されたソースを LLM に送信し、LLM が要約を実行します。
要約に使用するモデルを選択して、必要に応じて独自のプロンプトを指定できます。
生成モデルを選択する
要約の生成リクエストには、データストア エージェントが使用する生成モデルを選択できます。何も選択されない場合は、text-bison@001 が使用されます。次の表に、使用可能なオプションを示します。
モデル ID | 言語のサポート |
---|---|
text-bison@001 | サポートされているすべての言語でご利用いただけます。 |
text-bison@002 | サポートされているすべての言語でご利用いただけます。 |
text-bison@001 調整済み(会話型) | 現時点では、英語のみがサポートされています。 |
text-bison@001 調整済み(情報) | 現時点では、英語のみがサポートされています。 |
gemini-pro | サポートされているすべての言語でご利用いただけます。 |
要約プロンプトをカスタマイズする
要約 LLM 呼び出しのために独自のプロンプトを指定できます。 プロンプトは、事前定義されたプレースホルダを含むことができるテキスト テンプレートです。 プレースホルダは実行時に適切な値に置き換えられ、最終的なテキストが LLM に送信されます。
プレースホルダは次のとおりです。
$original-query
: ユーザーのクエリテキスト。$rewritten-query
: Dialogflow は、リライター モジュールを使用して、元のユーザークエリをより正確な形式に書き換えます。$sources
: Dialogflow は Enterprise Search を使用して、ユーザーのクエリに基づいてソースを検索します。検出されたソースは特定の形式でレンダリングされます。[1] title of first source content of first source [2] title of second source content of first source
$conversation
: 会話履歴は次の形式でレンダリングされます。Human: user's first query AI: answer to user's first query Human: user's second query AI: answer to user's second query
カスタム プロンプトは、回答を提供できない場合に「NOT_ENOUGH_INFORMATION」を返すように LLM に指示する必要があります。エージェントはこの定数をユーザーにとってわかりやすいメッセージに変換します。
エージェントのデプロイ
エージェントをデプロイするには、次のような方法があります。
最も簡単な方法は、エージェントのユーザー インターフェースを提供する Dialogflow CX 統合を使用することです。各統合でデプロイの手順が説明されています。
Dialogflow Messenger 統合は、データストア エージェントにとって特に優れたオプションです。生成機能のオプションが組み込まれています。
独自のユーザー インターフェースを作成し、操作に Dialogflow CX API を使用できます。ユーザー インターフェースの実装はデプロイを制御します。
エージェントのパフォーマンスを追跡する
エージェントの会話履歴をモニタリングし、分析ツールを使用してエージェントの統計情報を確認できます。
特殊なインテント
データストア エージェントは、提供するコンテンツに関する質問の処理に加えて、次の種類の質問にも対処できます。
- エージェントの識別: 「誰が誰ですか?」などの質問を処理します。または「人間ですか?」。
- 人間のエージェントにエスカレーションする: 「人間と話したい」や「人間と話したい」などの質問に対応します。
これは、自動的に生成されたインテントとインテント ルートによって実現されます。
ハイブリッド エージェント
既存の Dialogflow CX エージェントがある場合は、このエージェントをハイブリッド エージェントにアップグレードできます。これは、正確な会話制御(フロー、パラメータ、インテント、条件、移行など)の機能をデータストア ハンドラの生成機能と組み合わせたものです。
このアップグレードの一環として、エージェントからの特定の会話シナリオでインテント ルートを削除または一時的に無効にできます(データストア ハンドラのテスト中に)。これは、データストア ハンドが、これらのシナリオをよりシンプルに処理できるためです。
データストア ハンドラには、次のシナリオが推奨されます。
- 組織のドキュメントやウェブサイトで回答できる質問。
- データベースのルックアップを必要としないよくある質問。
次のシナリオは、データストア ハンドラでは推奨されません。
- 対象の質問に対する回答がないコンテンツ。
- データベースの検索やサーバー リクエストが必要な質問。
- データの除去が必要なシナリオ。
- 決定的なエージェント レスポンスが必要なシナリオ。
Dialogflow は、次の優先順位でエンドユーザー入力を評価します。
- スコープ内のルートのインテント照合
- よくある質問のデータストアのコンテンツ
- 非構造化データストアのコンテンツ
評価順序を入力する
Dialogflow は、ハイブリッド エージェントに対して次の順序でエンドユーザー入力を評価します。
- フォーム入力中のパラメータ入力。
- インテントがスコープ内のルートを照合する。
- よくある質問のデータストアのコンテンツを含むデータストア ハンドラ。
- 非構造化データストアのコンテンツを含むデータストア ハンドラ。
既存のエージェントのデータストア ハンドラを追加または編集する
データストア ハンドラは、Dialogflow の特別なタイプの状態ハンドラです。 つまり、フローやページに適用でき、同じスコープルールを使用して評価されます。
データストア ハンドラを追加または編集するには:
- Dialogflow CX コンソールに移動
- Google Cloud プロジェクトを選択します。
- エージェントを選択します。
- データストア ハンドラに関連付けられたフローを選択します。 通常これは、デフォルトの開始フローです。
- データストア ハンドラに関連付けられているページを選択します。 通常これは、スタートページです。
- ページデータの [状態ハンドラを追加] をクリックして、[データストア] を選択します。
- データストアを作成する必要がある場合は、Vertex AI Search and Conversation ユーザー インターフェースが表示されます。選択方法については、データストア情報をご覧ください。
- すでにデータストアがある場合は、[データストアを編集] をクリックします。
- 必要に応じて更新を行い、完了したら保存します。 データストアに固有の設定については、以下をご覧ください。
エージェント レスポンス
[エージェント レスポンス] セクションで、生成する回答を参照するカスタム レスポンスを指定できます。
[エージェント セイ] セクションで $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 メソッドをご覧ください。