ブーストとフィルタの仕様を構成することで、Dialogflow CX データストア ツールから取得した検索結果に影響を与えることができます。これにより、エージェントがデータストアを使用して情報を検索する際に、よりパーソナライズされたコンテキストアウェアなインタラクションが可能になります。
必要に応じて、動的式 を含めて、会話のコンテキストに基づいて結果を微調整できます。たとえば、エージェントがエンドユーザーが「スマートフォン」を所有していることを示す情報をキャプチャしたとします。会話の後半で「ボイスメールを確認するにはどうすればよいですか?」などの一般的なクエリに回答する際に、スマートフォンに関連するドキュメントをブーストするようにデータストア ツールを構成できます。
データストアの検索結果は、コンソール API または Dialogflow CX Messenger の統合を使用して構成できます。
検索条件の入力
検索結果は、
ブースト仕様(BoostSpec)
とフィルタ仕様(FilterSpec)
フィールドを使用して、SearchConfig
オブジェクトで構成されます。これらの構成は、ツール内のデータストアごとに適用されるため、接続されている各データストアの動作をきめ細かく制御できます。
検索条件は、 コンソールを使用するか、 直接 API 呼び出しを送信するかのいずれかの方法で構成できます。 この 2 つには重要な違いがあります。
API 呼び出し:
BoostSpecとFilterSpecは、DetectIntentAPI 呼び出しを使用してSearchConfigで送信されます。リクエストには完全なSearchConfigオブジェクトを指定する必要があります。直接 API 呼び出しで送信されたSearchConfigは、コンソールを使用して送信されたSearchConfigよりも常に優先されます。動的式とパラメータ参照は対象外です。コンソール:
BoostSpecとFilterSpecの構成を使用して、検索リクエストとともに送信されるSearchConfigオブジェクトが作成されます。必要に応じて、パラメータ参照と 動的式 を含めて、会話から記録されたコンテキスト データに合わせて結果を調整できます。完全なSearchConfigオブジェクトではなく、ConditionBoostSpecオブジェクトとフィルタ文字列のリストを指定するだけで、FilterSpecsを作成できます。
エンドユーザー情報は JSON として提供されます。 想定されるスキーマはないため、オブジェクト プロパティを自由に定義できます。
ブースト仕様(ブースト スペック)
ブースト スペック を使用すると、特定の ドキュメントにブースト値を適用することで、検索結果のランキングを変更できます。1 つのデータストアに複数のブースト仕様を追加できます。
各ブースト スペック は JSON 文字列として入力されます。この JSON 文字列は、単一の ConditionBoostSpec オブジェクトを表す必要があります。
主なフィールド:
condition: (文字列)ブーストを適用するタイミングを指定する式。標準のフィルタ式構文を使用します。 Dialogflow CX 式($session.params.YOUR_PARAM_NAMEや$request.end-user-metadata.YOUR_KEYなど)を使用して、結果を動的にすることができます。boost: (数値)ブーストの強さを決定する -1.0 ~ 1.0 の値。- 正の値は、一致するドキュメントを上位に表示します。
1.0の値は、強力なプロモーションを提供します。 - 負の値は、一致するドキュメントを降格させます。
-1.0の値は、強力な降格を提供します。 0.0の値はブーストを適用せず、使用できません。
- 正の値は、一致するドキュメントを上位に表示します。
boostControlSpec: 条件とブーストの基本的な組み合わせよりも、カスタマイズされたランキングをより細かく制御できます。このフィールドの構成の詳細については、 リファレンス ドキュメントをご覧ください。
コンソール入力の例:
コンソールでエージェントを構成する場合は、次の形式でリスト
ConditionBoostSpecs
を指定する必要があります。
この例では、$session.params.doc_id セッション パラメータの値と一致する URI を持つドキュメントは、0.5 の強さでブーストされます。この形式の JSON
{
"condition": "uri: ANY(\"http://www.example.com/docs/$session.params.doc_id\")",
"boost": 0.5
}
API 入力の例:
API を直接呼び出す場合は、ConditionBoostSpecs を
完全な SearchConfig
オブジェクトで指定する必要があります。次の検索構成は、ブースト仕様を表しています。
"searchConfig": {
"boostSpecs": [
{
"dataStores": [ "DATASTORE_ID" ],
"spec": [
{
"conditionBoostSpecs": {
"condition": "CONDITION",
"boost": "1.0"
}
}
]
}
]
}
フィルタ仕様(フィルタ スペック)
フィルタ仕様では、定義された条件に一致するドキュメントのみが検索結果に含まれるように制限されます。1 つのデータストアに複数のフィルタ仕様を追加できます。
各フィルタ スペック は文字列式として入力する必要があります。文字列は
標準のフィルタ式構文に準拠している必要があります。
この文字列内で Dialogflow CX 式($session.params.YOUR_PARAM_NAME や $request.end-user-metadata.YOUR_KEY など)を使用して、結果を動的にすることができます。
コンソールのフィルタ スペック文字列の例:
コンソールを使用してエージェントを構成する場合は、
filter 文字列のリストを指定して FilterSpec
オブジェクトを作成する必要があります。
この例では、フィルタは numeric_field が
以上の値で、$session.params.min_value かつ
stock_availability が "IN_STOCK" のドキュメントのみを返します。
"numeric_field >= $session.params.min_value AND stock_availability: ANY(\"IN_STOCK\")"
API フィルタ構成の例:
API を直接呼び出す場合は、完全な SearchConfig オブジェクトで filter 文字列を指定する必要があります。
"searchConfig": {
"filterSpecs": [
{
"dataStores": [ "DATASTORE_ID" ],
"filter": "CONDITION"
}
]
}
Dialogflow CX の動的式
BoostSpec 条件と FilterSpec 文字列の両方に Dialogflow CX 式を組み込んで、動的にすることができます。これにより、進行中の会話から取得したコンテキスト データに基づいて検索行動を調整できます。動的式は直接 API 呼び出しではサポートされていません。
コンソールを使用して構成する場合にのみ使用できます。
会話のコンテキスト データには、次の 2 つの方法でアクセスできます。
- セッション パラメータ:
$session.params.YOUR_PARAMETER_IDを使用して会話中に収集された値。 - エンドユーザーのメタデータ:
$request.end-user-metadata.YOUR_KEYを使用してDetectIntentRequestで渡されるエンドユーザーに関するメタデータ。このオプションを使用するには、DetectIntent呼び出しのQueryParametersにend_user_metadataが含まれていることを確認してください。詳細については、 endUserMetadata をご覧ください。
使用可能なシステム関数と式構文の詳細については、 条件とシステム関数のリファレンスをご覧ください。
実行時に適用される検索条件
データストア ツールが検索を実行すると、次のようになります。
- ブースト スペックに指定した JSON 文字列が評価されます。有効な JSON 文字列はそれぞれ
ConditionBoostSpecオブジェクトに変換されます。これらは、特定のデータストア接続のBoostSpecsオブジェクトにグループ化され、全体的なSearchConfigに追加されます。 - フィルタ スペックに指定した文字列は、Dialogflow CX 式として評価されます。結果のフィルタ文字列はそれぞれ、データストアの
FilterSpecsオブジェクトの作成に使用され、SearchConfigにも追加されます。 - 動的に作成された
SearchConfigは、データストアに送信される検索リクエストのQueryParametersに含まれます。
検索条件を構成する
検索条件を構成する前に、次のことを確認してください。
- 既存の Dialogflow CX エージェントがある。
- 1 つ以上のデータストアが有効になっているエージェント用に構成されたデータストア ツール がある。
コンソールの構成
- 会話エージェント コンソールを開き、 Google Cloud プロジェクトを選択します。
- プルダウン メニューからエージェントを選択します。
- 左側のメニューに移動して [ツール] をクリックします。構成するデータストア ツールを選択します。
- ツールの編集ページで、[データストア] セクションに移動します。変更するデータストアの横にある [設定] アイコン(⚙️)をクリックします。
- [データストアを構成] メニューが表示されます。ここで、ブースト スペックとフィルタ スペックを追加して検索結果を変更できます。
- 仕様を追加して構成したら、サイドパネルの下部にある [確認] をクリックします。
- データストア ツールの編集ページで [保存] をクリックして変更を保存します。
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 の統合に提供できます。詳細については、 setContext メソッドをご覧ください。
検索仕様または検索構成を適用するには、ウェブサイトに埋め込むときに、次のスニペットを Dialogflow CX Messenger コードに追加する必要があります。
<script>
document.addEventListener('df-messenger-loaded', () => {
const dfMessenger = document.querySelector('df-messenger');
const searchConfig = { ... }
dfMessenger.setQueryParameters(searchConfig);
});
</script>
詳しくは、 setQueryParameters メソッドをご覧ください。
トラブルシューティング
このセクションでは、構成時に発生する一般的な問題の解決策について説明します。さまざまなセッション パラメータとエンドユーザーのメタデータ値をトリガーする会話をシミュレートして、構成を十分にテストしてください。
式が無効です
ブースト スペックの条件またはフィルタ スペックの文字列に無効な Dialogflow CX 式(構文が正しくない、存在しないパラメータを参照しているなど)が含まれている場合、式のコンパイルは失敗します。式のコンパイルに関連するエラーは通常、DetectIntentResponse
のdiagnostic_info
フィールドにSystemFunctionResultsとして返されます。
ConditionBoostSpec JSON が無効です
会話エージェント コンソールでは、ConditionBoostSpec JSON 文字列を保存するときに検証が行われます。これは、有効な JSON であり、その構造を ConditionBoostSpec オブジェクトにマッピングできることを確認するためです。JSON が有効でも、基盤となる検索サービスで無効な SearchConfig が生成される場合(パラメータ置換後の無効な条件文字列など)、検索サービスはエラーを返します。
ランタイム置換エラー
ConditionBoostSpec JSON 文字列が有効で解析可能でも、フィールド(条件文字列など)内の Dialogflow CX 式のランタイム置換中にエラーが発生した場合、これらのエラーは diagnostic_info に SystemFunctionResults として報告されます。
コンパイルされた SearchConfig を確認する
クエリの実行時に適用される SearchConfig は、レスポンスの
search_signals
で確認できます。SearchConfig を確認すると、ここに記載されていない追加の問題を把握できる場合があります。
次のステップ
SearchConfigの構造とその コンポーネントの詳細については、search_configのドキュメントをご覧ください。- 式構文の詳細については、 Dialogflow CX の条件とシステム関数のリファレンスをご覧ください。
- 検索のフィルタ式構文の詳細については、 結果のフィルタリングと並べ替えをご覧ください。