このページでは、Agent Search の回答とフォローアップによる検索について説明します。また、メソッド呼び出しを使用してカスタム検索アプリに実装する方法についても説明します。
回答とフォローアップによる検索は、answer メソッドに基づいています。answer メソッドは、古い search メソッドの要約機能と、非推奨の converse メソッドのすべての機能を置き換えます。 answer メソッドには、複雑なクエリを処理する機能など、重要な追加機能もあります。
answer メソッドの機能
answer メソッドの主な機能は次のとおりです。
複雑なクエリに対する回答を生成する機能。たとえば、answer メソッドでは、次のような複合クエリを複数の小さなクエリに分割して、より良い結果を返すことができます。これにより、より良い回答が得られます。
- 「2024 年の Google Cloud と Google 広告のそれぞれの収益は?」
- 「Google は創業から何年後に 10 億米ドルの収益を達成しましたか?」
各ターンで answer メソッドを呼び出して、マルチターンの会話で検索と回答の生成を組み合わせる機能。
search メソッドと組み合わせて検索レイテンシを短縮する機能。search メソッドと answer メソッドを別々に呼び出し、検索結果と回答を異なる iframe に異なるタイミングでレンダリングできます。つまり、ユーザーに検索結果(10 個の青いリンク)をミリ秒単位で表示できます。検索結果を表示する前に、回答が生成されるのを待つ必要はありません。
回答とフォローアップの機能は、クエリ、検索、回答の 3 つのフェーズに分けることができます。
回答と検索を使用するタイミング
Agent Search には、アプリのクエリに使用される 2 つのメソッドがあります。両者には異なる機能がありますが、重複する機能もあります。
answer メソッドは、次の場合に使用します。
検索結果の AI 生成の回答(またはサマリー)が必要な場合。
マルチターンの検索(コンテキストを保持してフォローアップの質問を可能にする検索)が必要な場合。
search メソッドは、次の場合に使用します。
生成された回答ではなく、検索結果のみが必要。
次のいずれかがある場合:
- メディアまたは医療データ
- 独自のエンベディング
- 類義語またはリダイレクトの制御
- ファセット
- ユーザーの国コード
汎用データストア内のデータを閲覧する必要があります。
次の場合は、answer メソッドと search メソッドを併用します。
10 件を超える検索結果を返す必要があり、かつ、生成された回答が必要な場合。
レイテンシの問題があり、生成された回答が返される前に検索結果を迅速に返して表示したい場合。
クエリフェーズの機能
回答とフォローアップ機能は、自然言語クエリ処理をサポートしています。
このセクションでは、クエリの言い換えと分類のさまざまなオプションについて説明します。
クエリの言い換え
クエリの言い換えはデフォルトでオンになっています。この機能は、検索結果を改善するために、クエリを言い換える最適な方法を自動的に選択します。この機能は、言い換えを必要としないクエリにも対応できます。
複雑なクエリを複数のクエリに分割し、同期サブクエリを実行します。
たとえば、複雑なクエリを 4 つの小さく単純なクエリに分割します。
ユーザー入力 複雑なクエリから作成されたサブクエリ Andie Ram と Arnaud Clément は、どのような仕事と趣味が共通していますか? - Andie Ram の職業
- Arnaud Clément の職業
- Andie Ram の趣味
- Arnaud Clément の趣味
マルチターンのクエリを合成して、フォローアップの質問をコンテキスト認識型でステートフルにします。
例: 各ターンのユーザー入力から合成されたクエリは次のようになります。
ユーザー入力 合成されたクエリ ターン 1: 学校用ノートパソコン 学校用ノートパソコン ターン 2: mac 以外 mac 以外の学校用ノートパソコン ターン 3: 大画面かつワイヤレス キーボードとマウスも必要 ワイアレス キーボードとマウス付きの、mac 以外の大画面の学校用ノートパソコン ターン 4: それにパソコン用のバックパック ワイアレス キーボードとマウスとバックパック付きの、mac 以外の大画面の学校用ノートパソコン 長いクエリを簡素化して、取得を改善します(生成された回答オプションが必要です)。
たとえば、長いクエリを一般的なクエリにします。
ユーザー入力 簡素化されたクエリ ウェブサイトの [カートに追加] ボタンが正しく機能しない理由を調べています。ユーザーがボタンをクリックしても、商品がカートに追加されず、エラー メッセージが表示されるようです。コードを確認しましたが、正しいようです。問題が何なのかわかりません。この問題のトラブルシューティングを手伝っていただけますか? ウェブサイトで [カートに追加] ボタンが機能しません。 マルチステップの推論を実行する
マルチステップ推論は ReACT(理由 + 行動)パラダイムに基づいており、LLM が自然言語推論を使用して複雑なタスクを解決できるようにします。 デフォルトでは、最大ステップ数は 5 です。
次に例を示します。
ユーザー入力 回答を生成する 2 つのステップ Google は創業から何年後に 10 億米ドルの収益を達成しましたか? ステップ 1:
[思考]: Google の創立日を知る必要があります。そうすれば、それ以降の収益をクエリできます。
[行動] 検索: Google はいつ設立されましたか?[検索結果の確認]:「1998 年」
ステップ 2:
[思考]: 次は、1998 年以降の Google の年間収益を調べて、初めて 10 億ドルを超えたのはいつかを確認する必要があります。
[行動] 検索: 1998 年以降の Google の収益
[検索結果の確認] 1998 年の Google の収益、1999 年の Google の収益
[回答]: Google は、2003 年に 10 億米ドル以上の収益を達成しました [1]、1998 年の創業から 5 年後です [2]。マルチステップの推論では、[生成された回答] オプションを有効にする必要があります。
クエリ分類
クエリ分類オプションは、敵対的なクエリと回答を求めていないクエリを特定します。デフォルトでは、クエリ分類オプションはオフになっています。
敵対的クエリと回答を求めていないクエリの詳細については、敵対的クエリを無視するとサマリーを求めていないクエリを無視するをご覧ください。
検索フェーズの機能
検索の場合、answer メソッドには search メソッドと同じオプションがあります。次に例を示します。
フィルタを適用して、検索を特定のドキュメントに限定する。詳細については、構造化データまたは非構造化データのカスタム検索をフィルタするをご覧ください。
セーフサーチを適用して、暴力やポルノなどの露骨な表現を含むコンテンツを除外します。詳細については、エージェント検索の安全設定をご覧ください。
検索から返されたドキュメントの順位を上げる、または下げるブースト条件を指定する。詳細については、検索結果をブーストするをご覧ください。
回答フェーズの機能
回答フェーズでは、検索結果から回答が生成されたときに、search メソッドと同じ機能を有効にできます。次に例を示します。
回答内の各文のソースを示す引用を取得します。詳しくは、引用を含めるをご覧ください。
プロンプトのプリアンブルを使用して、回答のトーンとスタイル、詳細度などをカスタマイズします。詳細については、カスタム プリアンブルを指定するをご覧ください。
回答の生成に使用する Vertex AI モデルを選択します。 詳細については、回答生成モデルのバージョンとライフサイクルをご覧ください。
敵対的または回答を求めていないと分類されたクエリを無視するかどうかを選択します。
敵対的クエリと回答を求めていないクエリの詳細については、敵対的クエリを無視するとサマリーを求めていないクエリを無視するをご覧ください。回答を求めていないクエリは、サマリーを求めていないクエリとも呼ばれます。
search メソッドでは利用できない回答フェーズの機能は次のとおりです。
各クレーム(生成された回答内の文)のサポートスコアの取得。 サポートスコアは、[0,1] の範囲の浮動小数点値で、主張がデータストア内のデータにおいてどの程度根拠があるかを示します。詳細については、グラウンディング サポート スコアを返すをご覧ください。
回答の集計サポートスコアの取得。サポートスコアは、回答がデータストア内のデータにおいてどの程度根拠があるかを示します。詳細については、グラウンディング サポート スコアを返すをご覧ください。
根拠のある回答のみを返します。特定のサポートスコアのしきい値を満たす回答のみを返すように選択できます。詳細については、根拠のある回答のみを表示するをご覧ください。
関連する質問を返すように選択します。関連する質問は、ユーザーが独自の質問を入力する代わりに選択できる候補です。
クエリにパーソナライズ情報を追加して、個々のユーザーに合わせて回答をカスタマイズできるようにします。詳細については、回答をカスタマイズするをご覧ください。
テキストに加えてグラフや画像を含むマルチモーダル回答を受け取るには、次のオプションを使用できます。
回答に含まれるデータをプロットしたグラフやグラフを含む回答を取得する。詳細については、回答のグラフを生成するをご覧ください。
データストアから画像を取得する。データストアに画像が含まれている場合、回答メソッドは回答で画像を返すことができます。引用がリクエストされた場合、データストアの画像が参照として返されることもあります。詳細については、データストアから既存のイメージを取得するをご覧ください。
始める前に
アプリの種類に応じて、次の要件を完了します。
構造化データ、非構造化データ、ウェブサイトの検索アプリを使用している場合は、次のオプションをオンにします。
- Enterprise エディションの機能: これにより、コアの生成回答機能にアクセスできます。これには、関連する質問、クエリの簡素化、複数ターンのクエリ、画像やグラフを返すマルチモーダル回答などの高度な生成回答機能を除く、すべての回答生成機能が含まれます。
- 生成レスポンス: 複数ステップの推論、クエリの簡素化、マルチターン クエリ、関連する質問、画像やグラフを返すマルチモーダル回答を必要とする高度な生成回答機能を利用できます。
また、ウェブサイト検索データストアがある場合は、[ウェブサイトの高度なインデックス登録] をオンにします。
検索と回答(基本)
次のコマンドは、answer メソッドを呼び出して、生成された回答と、ソースへのリンクを含む検索結果のリストを返す方法を示しています。
このコマンドは、必要な入力のみを表示します。オプションはデフォルトのままにします。
REST
検索して生成された回答付きの結果を取得する手順は次のとおりです。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"} }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。たとえば、「BigQuery と Spanner のデータベースを比較してください」などです。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
クエリフェーズのコマンド
このセクションでは、answer メソッド呼び出しのクエリフェーズにオプションを指定する方法について説明します。
検索と回答(言い換えが無効)
次のコマンドは、answer メソッドを呼び出して、生成された回答と検索結果のリストを返す方法を示しています。言い換えオプションが無効になっているため、回答が前の回答とは異なる場合があります。
REST
クエリの言い換えを適用せずに検索して、生成された回答を含む結果を取得する手順は次のとおりです。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "queryUnderstandingSpec": { "queryRephraserSpec": { "disable": true } } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。たとえば、「BigQuery と Spanner のデータベースを比較してください」などです。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
検索と回答(最大ステップ数を指定)
次のコマンドは、answer メソッドを呼び出して、生成された回答と検索結果のリストを返す方法を示しています。言い換えステップの数が増えているため、回答が前の回答とは異なっています。
REST
最大 5 回の言い換えステップを許可して、生成された回答付きで検索し、結果を取得する手順は次のとおりです。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "queryUnderstandingSpec": { "queryRephraserSpec": { "maxRephraseSteps": MAX_REPHRASE } } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。たとえば、「BigQuery と Spanner のデータベースを比較してください」などです。MAX_REPHRASE: 言い換えステップの最大数。最大値は5です。 設定されていない場合、または1未満に設定されている場合、値はデフォルトの1になります。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
クエリ分類による検索と回答
次のコマンドは、answer メソッドを呼び出して、クエリが敵対的、回答を求めていない、またはどちらでもないかを問い合わせる方法を示しています。
回答にはクエリの分類タイプが含まれますが、回答自体は分類の影響を受けません。 クエリタイプに応じて回答の動作を変更する場合は、回答フェーズで変更できます。敵対的クエリを無視するとサマリーを求めていないクエリを無視するをご覧ください。
REST
クエリが敵対的なものか、回答を求めていないものかを判断するには、次の操作を行います。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "queryUnderstandingSpec": { "queryClassificationSpec": { "types": ["QUERY_CLASSIFICATION_TYPE"] } } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。例: 「hello」。QUERY_CLASSIFICATION_TYPE: 識別するクエリタイプ(ADVERSARIAL_QUERY、NON_ANSWER_SEEKING_QUERY、または両方)。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
検索フェーズのコマンド: 検索して検索結果のオプション付きで回答する
このセクションでは、answer メソッド呼び出しの検索フェーズ部分のオプション(返されるドキュメントの最大数、ブースト処理、フィルタリングなどのオプション)を指定する方法と、独自の検索結果を指定して回答を取得する方法について説明します。
次のコマンドは、answer メソッドを呼び出して、検索結果を返す方法に関するさまざまなオプションを指定する方法を示しています。(検索結果は回答とは関係ありません)
REST
検索結果が返される内容と方法に関連するさまざまなオプションを設定するには、次の操作を行います。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "searchSpec": { "searchParams": { "maxReturnResults": MAX_RETURN_RESULTS, "filter": "FILTER", "boostSpec": BOOST_SPEC, "orderBy": "ORDER_BY", "searchResultMode": SEARCH_RESULT_MODE } } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。たとえば、「BigQuery データベースと Spanner データベースを比較してください」などです。MAX_RETURN_RESULTS: 返される結果の数。デフォルト値は10です。最大値は25です。FILTER: フィルタは、クエリ対象のドキュメントを指定します。ドキュメントのメタデータがフィルタ仕様を満たしている場合、ドキュメントはクエリされます。フィルタ構文などの詳細については、構造化データまたは非構造化データのカスタム検索をフィルタするをご覧ください。BOOST_SPEC: ブースト仕様を使用すると、検索結果で特定のドキュメントをブーストできます。これにより、回答に影響する可能性があります。 ブースト仕様の構文など、詳細については、検索結果をブーストするをご覧ください。ORDER_BY: ドキュメントが返される順序。ドキュメントは、Document オブジェクトのフィールドで並べ替えることができます。orderBy式では大文字と小文字が区別されます。このフィールドが認識できない場合、INVALID_ARGUMENTが返されます。SEARCH_RESULT_MODE: 検索結果モード(DOCUMENTSまたはCHUNKS)を指定します。詳細については、ドキュメントを解析してチャンクすると ContentSearchSpec をご覧ください。このフィールドは、API の v1alpha バージョンでのみ使用できます。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
回答フェーズのコマンド
このセクションでは、answer メソッド呼び出しをカスタマイズする方法について説明します。必要に応じて、次のオプションを組み合わせることができます。
敵対的クエリと回答を求めていないクエリを無視する
次のコマンドは、answer メソッドを呼び出すときに、敵対的クエリや回答を求めていないクエリに回答しないようにする方法を示しています。
REST
敵対的または回答を求めていないクエリへの回答をスキップするには、次の操作を行います。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "answerGenerationSpec": { "ignoreAdversarialQuery": true, "ignoreNonAnswerSeekingQuery": true } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
関連する回答のみを表示する
Agent Search は、結果がクエリとどの程度関連しているかを評価できます。十分に関連性があると判断される結果がない場合、関連性のない結果や関連性が低い結果から回答を生成する代わりに、フォールバック回答「We do not have a summary for your query.」を返すよう選択できます。
次のコマンドは、answer メソッドを呼び出したときに、関連性のない結果の場合にフォールバック回答を返す方法を示しています。
REST
関連性の高い結果が見つからない場合にフォールバック回答を返すには、次の操作を行います。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "answerGenerationSpec": { "ignoreLowRelevantContent": true } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
グラウンディング サポート スコアを返す
次のコマンドは、回答と主張に対するグラウンディング サポート スコアを返す方法を示しています。
Vertex AI でのグラウンディングの一般的な情報については、RAG でグラウンディングをチェックするをご覧ください。groundingConfigs.check メソッドは、answer メソッドによって呼び出されます。
REST
各クレーム(回答内の文)のサポートスコアと回答の集計サポートスコアを返すには、次の操作を行います。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "groundingSpec": { "includeGroundingSupports": true, } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。
根拠のある回答のみを表示する
次のコマンドは、コーパス(データストア内の情報)において根拠があると見なされる回答のみを返す方法を示しています。グラウンディングが不十分な回答は除外されます。
グラウンディング サポート スコアに対して低レベルまたは高レベルのしきい値を選択します。回答がそのレベルを満たしているか、それを超えている場合にのみ、回答が返されます。2 つのフィルタしきい値付きと、しきい値なしを試して、ユーザーにとって最適な結果をもたらすフィルタレベルを判断できます。
Vertex AI でのグラウンディングの一般的な情報については、RAG でグラウンディングをチェックするをご覧ください。groundingConfigs.check メソッドは、answer メソッドによって呼び出されます。
REST
サポートスコアのしきい値を満たす場合にのみ回答を返すには、次の操作を行います。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "groundingSpec": { "filteringLevel": "FILTER_LEVEL" } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。FILTER_LEVEL: グラウンディング サポート スコアに基づいて回答をフィルタリングするための列挙型。FILTERING_LEVEL_LOWとFILTERING_LEVEL_HIGHを指定できます。filteringLevelが含まれていない場合、回答にサポートスコア フィルタは適用されません。
回答モデルを指定する
次のコマンドは、回答の生成に使用されるモデル バージョンを変更する方法を示しています。
サポートされているモデルについては、回答生成モデルのバージョンとライフサイクルをご覧ください。
REST
デフォルト モデルとは異なるモデルを使用して回答を生成する手順は次のとおりです。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "answerGenerationSpec": { "modelSpec": { "modelVersion": "MODEL_VERSION", } } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。MODEL_VERSION: 回答の生成に使用するモデルのバージョン。詳細については、回答生成モデルのバージョンとライフサイクルをご覧ください。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
カスタム プリアンブルを指定する
次のコマンドは、生成された回答のプリアンブルの設定方法を示しています。プリアンブルには、回答をカスタマイズするための自然言語の指示が含まれています。長さ、詳細レベル、出力のスタイル(「シンプル」など)、出力の言語、回答の焦点、形式(表、箇条書き、XML など)などのカスタマイズをリクエストできます。たとえば、「10 歳の子どもに説明するように説明して」のようなプリアンブルを使用できます。
プリアンブルは、生成される回答の品質に大きな影響を与える可能性があります。プリアンブルに記述する内容と適切なプリアンブルの例については、カスタム プリアンブルについてをご覧ください。
REST
デフォルト モデルとは異なるモデルを使用して回答を生成する手順は次のとおりです。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "answerGenerationSpec": { "promptSpec": { "preamble": "PREAMBLE", } } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。PREAMBLE: 回答をカスタマイズするための自然言語の指示。たとえば、show the answer format in an ordered listやgive a very detailed answerを試します。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
関連する質問を取得する
answer メソッドでは、関連する質問を提示することもできます。ユーザーは、独自の質問を入力する代わりに、提示された質問を選択できます。たとえば、「メキシコで休暇を過ごすのに最適な時期はいつですか?」と質問すると、質問への回答に加えて、「メキシコで休暇を過ごすのに最も安い月はいつですか?」や「メキシコの観光シーズンはいつですか?」など、ユーザーが尋ねる可能性のある他の質問を提案できます。
関連する質問を受け取るには、各クエリで関連する質問を含めるように指定する必要があります。関連する質問は、レスポンスで文字列の配列として返されます。
回答がスキップされ、レスポンスで answerSkippedReasons フィールドが返された場合、関連する質問は出力に含まれません。
始める前に
アプリの [生成された回答] オプションがオンになっていることを確認します。
手順
次のコマンドは、回答に関連する質問を含めるようリクエストする方法を示しています。
REST
生成された回答に関連する質問を取得するには:
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "relatedQuestionsSpec": { "enable": true } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。たとえば、「エージェント検索にインポートできるデータの種類は?」などです。
引用を含める
次のコマンドは、回答に引用を含めるようリクエストする方法を示しています。
REST
デフォルト モデルとは異なるモデルを使用して回答を生成する手順は次のとおりです。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "answerGenerationSpec": { "includeCitations": INCLUDE_CITATIONS } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。INCLUDE_CITATIONS: 回答に引用メタデータを含めるかどうかを指定します。デフォルト値はfalseです。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
回答の言語コードを設定する
次のコマンドは、回答の言語コードを設定する方法を示しています。
REST
デフォルト モデルとは異なるモデルを使用して回答を生成する手順は次のとおりです。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "answerGenerationSpec": { "answerLanguageCode": "ANSWER_LANGUAGE_CODE" } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。ANSWER_LANGUAGE_CODE: 回答の言語コード。BCP47: 言語を識別するためのタグで定義されている言語タグを使用します。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
回答をパーソナライズする
ユーザーに関する特定の情報(プロフィール内のデータなど)がある場合は、endUserMetadata オブジェクトでその情報を指定して、クエリ結果をユーザーに合わせてカスタマイズできます。
たとえば、ログインしているユーザーが携帯電話のアップグレードに関する情報を検索している場合、現在の携帯電話のモデルや携帯通信プランなどのプロフィール情報に基づいて、生成された回答をパーソナライズできます。
クエリを実行するユーザーの個人情報を追加し、その個人情報を考慮した回答を生成するには、次の操作を行います。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "endUserSpec": { "endUserMetadata": [ { "chunkInfo": { "content": "PERSONALIZED_INFO", "documentMetadata": { "title": "INFO_DESCRIPTION"} } } ] } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。PERSONALIZATION_INFO: クエリを実行しているユーザーに固有の情報を含む文字列。たとえば、This customer has a Pixel 6 Pro purchased over a period of 24-months starting 2023-01-15. This customer is on the Business Plus International plan. No payment is due at this time.この文字列の長さの上限は 8,000 文字です。INFO_DESCRIPTION: パーソナライズ情報を簡単に説明する文字列(例:Customer profile data, including model, plan, and billing status.)。モデルは、クエリに対するカスタマイズされた回答を生成する際に、この説明とパーソナライズ情報の両方を使用します。
回答のグラフを生成する
answer メソッドは、グラフを生成して、クエリの回答の一部として返すことができます。
たとえば、「利用可能なデータを使用して、中小企業の支払いの前年比成長率を年ごとにプロットして」のように、回答にグラフを含めるよう具体的にリクエストできます。十分なデータが存在すると判断された場合は、グラフが返されます。通常、グラフとともに回答テキストが返されます。
また、グラフを作成するのに十分なデータがある場合、クエリでグラフが明示的にリクエストされていなくても、回答メソッドはグラフを返す場合があります。たとえば、「2010 年から 2020 年の 10 年間で、安全な飲料水へのアクセス増加に関連して HDI スコアはどの程度改善しましたか?」などです。
回答ごとに生成されるグラフは 1 つのみです。ただし、グラフが複合グラフで、他の小さなグラフが含まれている場合があります。複合グラフの例:

制約事項
クエリは英語で入力する必要があります。
一般的な障害シナリオ
回答とともに画像が返されるとは限りません。十分なデータがない場合は、図を生成できません。
その他の障害シナリオには、コード実行の失敗やタイムアウトなどがあります。どちらかの場合は、クエリを言い換えてもう一度お試しください。
始める前に
生成されたグラフをリクエストするクエリを実行する前に、次の操作を行います。
アプリの [生成された回答] オプションがオンになっていることを確認します。
Gemini 2.0 以降のモデルを使用していることを確認します。モデルの詳細については、回答生成モデルのバージョンとライフサイクルをご覧ください。
テーブルや画像が多数含まれるドキュメントを含む非構造化データストアがある場合は、レイアウト パーサーを有効にします。これは必須ではありませんが、結果の品質が向上します。
手順
REST
次のように answer メソッドを呼び出して、データストア内のデータから生成されたグラフを含む回答を返します。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "answerGenerationSpec": { "model_spec": { "model_version": "MODEL_VERSION" }, "multimodalSpec": { "imageSource": "IMAGE_SOURCE" } } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含む英語の自由形式の文字列。MODEL_VERSION: モデル バージョンgemini-2.0-flash-001/answer_gen/v1以降。詳細については、回答生成モデルのバージョンとライフサイクルをご覧ください。IMAGE_SOURCE: 生成されたグラフを回答に含めるようリクエストする列挙型(FIGURE_GENERATION_ONLY)、または生成されたグラフかデータストアの既存の画像のいずれかを回答に含めることができる列挙型(ALL_AVAILABLE_SOURCES)。
データストアから既存の画像を取得する
データストアの画像を回答とともに、引用の参照として返すように選択できます。データストアは、レイアウト パーサーが有効になっている非構造化データストアである必要があります。
返された回答にグラフを表示するには、[生成された回答] オプションをオンにする必要があります。
imageSource が CORPUS_IMAGE_ONLY または ALL_AVAILABLE_SOURCES の場合、answer メソッドはデータストアから画像を適宜取得できます。ただし、この機能をオンにしても、画像が常に返されるわけではありません。
回答ごとに 1 枚の画像(最大)が生成されます。引用には複数の画像を含めることができます。
制限事項
使用しているアプリが非構造化データストアに接続されている必要があります。画像はウェブサイトや構造化データストアから返されません。
クエリは英語で入力する必要があります。
レイアウト パーサーによる画像アノテーションは、データストアに適用する必要があります。レイアウト パーサーについては、ドキュメントを解析してチャンクに分割するをご覧ください。
手順
REST
次のように answer メソッドを呼び出して、データストアの画像を含む回答を返します。
次の curl コマンドを実行します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "answerGenerationSpec": { "model_spec": { "model_version": "MODEL_VERSION" }, includeCitations: true, "multimodalSpec": { "imageSource": "IMAGE_SOURCE" } } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: クエリする Agent Search アプリの ID。QUERY: 質問または検索クエリを含む英語の自由形式の文字列。MODEL_VERSION: モデル バージョンgemini-2.0-flash-001/answer_gen/v1以降。詳細については、回答生成モデルのバージョンとライフサイクルをご覧ください。IMAGE_SOURCE: 回答にデータストアの画像を含めることをリクエストする列挙型(CORPUS_IMAGE_ONLY)、または回答にデータストアの画像または生成されたグラフのいずれかを含めることをリクエストする列挙型(ALL_AVAILABLE_SOURCES)。
フォローアップの質問のコマンド
フォローアップはマルチターン クエリです。フォローアップ セッションの最初のクエリの後、後続の「ターン」では以前のやり取りが考慮されます。フォローアップでは、answer メソッドで関連する質問を提示することもできます。ユーザーは、独自のフォローアップの質問を入力する代わりに、提示された質問を選択できます。関連する質問の候補を表示するには、[生成回答] オプションをオンにする必要があります。
前のセクションで説明した回答とフォローアップの機能(引用、フィルタ、セーフサーチ、特定の種類のクエリの無視、プリアンブルを使用した回答のカスタマイズなど)はすべて、フォローアップとともに適用できます。
フォローアップ セッションの例
フォローアップ付きセッションの例を次に示します。メキシコでの休暇について調べたいとします。
ターン 1:
あなた: メキシコで休暇を過ごすのに最適な時期はいつですか?
フォローアップ付きの回答: メキシコで休暇を過ごすのに最適な時期は乾季です。これは 11 月から 4 月までです。
ターン 2:
あなた: 為替レートを教えてください。
フォローアップ付きの回答: 1 米ドルは約 17.65 メキシコペソに相当します。
ターン 3:
あなた: 12 月の平均気温はどれくらいですか?
フォローアップ付きの回答: 平均気温は華氏 70~78 度です。 カンクンの平均気温は華氏 77 度までです。
フォローアップがないと、「為替レートはいくらですか?」という質問に答えることはできません。通常の検索では、メキシコの為替レートを知りたいことがわからないためです。同様に、フォローアップなしでは、特にメキシコの温度を示すために必要なコンテキストがありません。
セッションについて
エージェント検索でのフォローアップの仕組みを理解するには、セッションについて理解する必要があります。
セッションは、ユーザーが提供したテキストクエリと Agent Search が提供したレスポンスで構成されます。
このようなクエリとレスポンスのペアは、ターンと呼ばれることもあります。上記の例では、2 番目のターンは「為替レートはいくらですか?」と「1 米ドルは約 17.65 メキシコペソに相当します」で構成されています。
セッションはアプリとともに保存されます。アプリでは、セッションはセッション リソースで表されます。
クエリ メッセージとレスポンス メッセージに加えて、セッション リソースには次のものも含まれます。
一意の名前(セッション ID)。
状態(進行中または完了)。
ユーザー疑似 ID(ユーザーを追跡する訪問者 ID)。プログラムで割り当てることができます。アプリのユーザー イベントのユーザー疑似 ID にマッピングすると、モデルはユーザーにパーソナライズされた結果を提供できます。
開始時刻と終了時刻。
ターン(クエリと回答のペア)。
始める前に
フォローアップ質問をリクエストするクエリを実行する前に、アプリの [生成された回答] オプションがオンになっていることを確認してください。
セッション情報を保存してレスポンスを取得する
コマンドラインを使用して、検索レスポンスと回答を生成し、各クエリとともにセッションに保存できます。
REST
コマンドラインを使用してセッションを作成し、ユーザーの入力からレスポンスを生成する手順は次のとおりです。
セッションを保存するアプリを指定します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions" \ -d '{ "userPseudoId": "USER_PSEUDO_ID" }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: Agent Search アプリの ID。USER_PSEUDO_ID: ユーザーをトラッキングする一意の仮名化 ID として機能する UTF-8 エンコード文字列。最大長は 128 文字です。このフィールドを使用すると、モデルのパフォーマンスとパーソナライズの品質が向上するため、このフィールドを使用することを強くおすすめします。このフィールドには HTTP Cookie を使用できます。これにより、1 つのデバイス上の訪問者を一意に識別できます。重要な考慮事項は次のとおりです。- この ID は、訪問者がウェブサイトにログインまたはログアウトしても変更されません。
- このフィールドを複数のユーザーに対して同じ ID に設定しないでください。同じユーザー ID を使用すると、異なるユーザーのイベント履歴が統合され、モデルの品質が低下する可能性があります。
- このフィールドに個人を特定できる情報(PII)を含めることはできません。
- 特定の検索リクエストまたは閲覧リクエストの場合、このフィールドはユーザー イベントの対応する
userPseudoIdフィールドにマッピングする必要があります。
詳細については、
userPseudoIdをご覧ください。
コマンドの例と結果
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/sessions" -d '{ "userPseudoId": "test_user" }'
{ "name": "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943", "state": "IN_PROGRESS", "userPseudoId": "test_user", "startTime": "2024-09-13T18:47:10.465311Z", "endTime": "2024-09-13T18:47:10.465311Z" }JSON レスポンスの
name:フィールドの末尾にある数値をセッション ID としてメモします。この結果の例の場合、ID は5386462384953257772です。この ID は次のステップで必要になります。回答を生成して、アプリのセッションに追加します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \ -d '{ "query": { "text": "QUERY"}, "session": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID", "searchSpec":{ "searchParams": {"filter": "FILTER"} } }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: Agent Search アプリの ID。QUERY: 質問または検索クエリを含むフリーテキストの文字列。SESSION_ID: ステップ 1 で作成したセッションの ID。これは、ステップ 2 でメモしたname:フィールドの末尾の数字です。セッションでは、すべてのターンで同じセッション ID を使用します。FILTER: フィルタ式を使用して検索をフィルタリングするためのテキスト フィールド。デフォルト値は空文字列です。フィルタの作成方法は、メタデータを含む非構造化データ、構造化データ、ウェブサイトのデータのいずれがあるかによって異なります。詳細については、構造化データまたは非構造化データのカスタム検索をフィルタするとウェブサイト検索をフィルタするをご覧ください。
コマンドの例と結果
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" -d '{ "query": { "text": "Compare bigquery with spanner database?"}, "session": "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943", }'
{ "answer": { "name": "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943/answers/4861507376861383072", "state": "SUCCEEDED", "answerText": "BigQuery and Spanner are both powerful tools that can be used together to handle transactional and analytical workloads. Spanner is a fully managed relational database optimized for transactional workloads, while BigQuery is a serverless data warehouse designed for business agility. Spanner provides seamless replication across regions in Google Cloud and processes over 1 billion requests per second at peak. BigQuery analyzes over 110 terabytes of data per second. Users can leverage federated queries to read data from Spanner and write to a native BigQuery table. \n", "steps": [ { "state": "SUCCEEDED", "description": "Rephrase the query and search.", "actions": [ { "searchAction": { "query": "Compare bigquery with spanner database?" }, "observation": { "searchResults": [ { "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/ecc0e7547253f4ca3ff3328ce89995af", "uri": "https://cloud.google.com/blog/topics/developers-practitioners/how-spanner-and-bigquery-work-together-handle-transactional-and-analytical-workloads", "title": "How Spanner and BigQuery work together to handle transactional and analytical workloads | Google Cloud Blog", "snippetInfo": [ { "snippet": "Using Cloud \u003cb\u003eSpanner\u003c/b\u003e and \u003cb\u003eBigQuery\u003c/b\u003e also allows customers to build their \u003cb\u003edata\u003c/b\u003e clouds using Google Cloud, a unified, open approach to \u003cb\u003edata\u003c/b\u003e-driven transformation ...", "snippetStatus": "SUCCESS" } ] }, { "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/d7e238f73608a860e00b752ef80e2941", "uri": "https://cloud.google.com/blog/products/databases/cloud-spanner-gets-stronger-with-bigquery-federated-queries", "title": "Cloud Spanner gets stronger with BigQuery-federated queries | Google Cloud Blog", "snippetInfo": [ { "snippet": "As enterprises compete for market share, their need for real-time insights has given rise to increased demand for transactional \u003cb\u003edatabases\u003c/b\u003e to support \u003cb\u003edata\u003c/b\u003e ...", "snippetStatus": "SUCCESS" } ] }, { "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/e10a5a3c267dc61579e7c00fefe656eb", "uri": "https://cloud.google.com/blog/topics/developers-practitioners/replicating-cloud-spanner-bigquery-scale", "title": "Replicating from Cloud Spanner to BigQuery at scale | Google Cloud Blog", "snippetInfo": [ { "snippet": "... \u003cb\u003eSpanner data\u003c/b\u003e into \u003cb\u003eBigQuery\u003c/b\u003e for analytics. In this post, you will learn how to efficiently use this feature to replicate large tables with high throughput ...", "snippetStatus": "SUCCESS" } ] }, ... { "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/8100ad36e1cac149eb9fc180a41d8f25", "uri": "https://cloud.google.com/blog/products/gcp/from-nosql-to-new-sql-how-spanner-became-a-global-mission-critical-database", "title": "How Spanner became a global, mission-critical database | Google Cloud Blog", "snippetInfo": [ { "snippet": "... SQL \u003cb\u003evs\u003c/b\u003e. NoSQL dichotomy may no longer be relevant." The \u003cb\u003eSpanner\u003c/b\u003e SQL query processor, while recognizable as a standard implementation, has unique ...", "snippetStatus": "SUCCESS" } ] } ] } } ] } ] }, "session": { "name": "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943", "state": "IN_PROGRESS", "userPseudoId": "test_user", "turns": [ { "query": { "queryId": "projects/123456/locations/global/questions/741830", "text": "Compare bigquery with spanner database?" }, "answer": "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943/answers/4861507376861383072" } ], "startTime": "2024-09-13T18:47:10.465311Z", "endTime": "2024-09-13T18:47:10.465311Z" }, "answerQueryToken": "NMwKDAjFkpK3BhDU24uZAhIkNjZlNDIyZWYtMDAwMC0yMjVmLWIxMmQtZjQwMzA0M2FkYmNj" }セッション内の新しいクエリごとにステップ 3 を繰り返します。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
データストアからセッションを取得する
次のコマンドは、get メソッドを呼び出してデータストアからセッションを取得する方法を示しています。
REST
データストアからセッションを取得する手順は次のとおりです。
次の curl コマンドを実行します。
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID"
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: Agent Search アプリの ID。SESSION_ID: 取得するセッションの ID。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
アプリからセッションを削除する
次のコマンドは、delete メソッドを呼び出して、データストアからセッションを削除する方法を示しています。
デフォルトでは、60 日を超えるセッションは自動的に削除されます。 ただし、特定のセッションを削除する場合(たとえば、機密コンテンツが含まれている場合など)は、この API 呼び出しを使用して削除します。
REST
アプリからセッションを削除するには、次の操作を行います。
次の curl コマンドを実行します。
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID"
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: Agent Search アプリの ID。SESSION_ID: 削除するセッションの ID。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
セッションを更新する
セッションを更新する理由はさまざまです。 たとえば、次のいずれかを行うためです。
- セッションを完了としてマークする
- あるセッションのメッセージを別のセッションに統合する
- ユーザーの疑似 ID を変更する
次のコマンドは、patch メソッドを呼び出してデータストア内のセッションを更新する方法を示しています。
REST
アプリからセッションを更新する手順は次のとおりです。
次の curl コマンドを実行します。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID?updateMask=state" \ -d '{ "state": "NEW_STATE" }'次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: Agent Search アプリの ID。SESSION_ID: 更新するセッションの ID。NEW_STATE: 状態の新しい値(IN_PROGRESSなど)。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
すべてのセッションを一覧表示する
次のコマンドは、list メソッドを呼び出して、データストア内のセッションを一覧表示する方法を示しています。
REST
アプリのセッションを一覧表示する手順は次のとおりです。
次の curl コマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions"
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: Agent Search アプリの ID。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
ユーザーのセッションを一覧表示する
次のコマンドは、list メソッドを呼び出して、ユーザーまたはサイト訪問者に関連付けられたセッションを一覧表示する方法を示しています。
REST
ユーザーまたは訪問者に関連付けられているセッションを一覧表示するには、次の操作を行います。
次の curl コマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions?filter=userPseudoId=USER_PSEUDO_ID"
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: Agent Search アプリの ID。USER_PSEUDO_ID: セッションを一覧表示するユーザーの疑似 ID。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
セッションのユーザーと状態を一覧表示する
次のコマンドは、list メソッドを呼び出して、特定のユーザーの特定の状態のセッションを一覧表示する方法を示しています。
REST
オープンまたはクローズしていて、特定のユーザーまたは訪問者に関連付けられているユーザーのセッションを一覧表示するには、次の操作を行います。
次の curl コマンドを実行します。
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions?filter=userPseudoId=USER_PSEUDO_ID%20AND%20state=STATE"
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。APP_ID: Agent Search アプリの ID。USER_PSEUDO_ID: セッションを一覧表示するユーザーの疑似 ID。STATE: セッションの状態:STATE_UNSPECIFIED(クローズ、または不明)またはIN_PROGRESS(オープン)。
Python
詳細については、Agent Search Python API リファレンス ドキュメントをご覧ください。
Agent Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。