ウェブアプリでは、質問に対する回答をストリーミング レスポンスの形式で取得できます。このドキュメントでは、REST API を使用して回答を取得する方法について説明します。Gemini Enterprise ウェブアプリを使用する場合は、アシスタントとチャットするをご覧ください。
StreamAssist の概要
StreamAssist は、ユーザーのクエリを処理するための強力でインタラクティブな方法を提供します。ストリーミング形式で動作し、リアルタイムの双方向のやり取りを可能にします。
API の主な機能は次のとおりです。
会話のコンテキストの維持: セッションを使用して会話のコンテキストを維持し、以前のやり取りの範囲内でフォローアップのクエリを理解できるようにします。
提供されたファイルの組み込み: 添付ファイルをコンテキストとして含め、より多くの情報に基づいた関連性の高い回答を生成します。
シームレスな統合: さまざまなエージェントやツールと統合して、幅広いユーザー リクエストに対応します。
始める前に
以下のことを確認してください。
Google Cloudで Discovery Engine API が有効になっている。Google Cloud コンソールの [Discovery Engine API] ページで有効にできます。
discoveryengine.assistants.assist権限が割り当てられているディスカバリー エンジン ロール。既存の Gemini Enterprise app。アプリを作成するには、アプリを作成するをご覧ください。
検索結果を取得する
streamAssist メソッドを使用して、Gemini Enterprise にクエリを送信し、回答を取得できます。次の curl コマンドは、必須フィールドの一覧を取得します。
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant:streamAssist" \
-d '
{
"query": {
"text": "QUERY_TEXT_1"
}
}'
次のように置き換えます。
- ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
- 米国のマルチリージョンの場合は
us - EU のマルチリージョンの場合は
eu - グローバル ロケーションの場合は
global
- 米国のマルチリージョンの場合は
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- APP_ID: Gemini Enterprise app の固有識別子。
- LOCATION: データストアのマルチリージョン(
global、us、eu) - QUERY_TEXT_1: 検索クエリのテキスト。
フィールドと返される内容の詳細については、レスポンス本文をご覧ください。
Python
このサンプルを試す前に、Gemini Enterprise クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。 詳細については、Gemini Enterprise Python API リファレンス ドキュメントをご覧ください。
Gemini Enterprise に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine
# TODO(developer): Update these variables before running the sample.
project_id = "YOUR_PROJECT_ID"
location = "YOUR_LOCATION"
engine_id = "YOUR_APP_ID"
query = "What is Gemini Enterprise?"
def stream_assist_sample(
project_id: str,
location: str,
engine_id: str,
query: str,
):
# For more information, refer to:
# https://docs.cloud.google.com/gemini/enterprise/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
if location != "global"
else None
)
client = discoveryengine.AssistantServiceClient(client_options=client_options)
request = discoveryengine.StreamAssistRequest(
name=client.assistant_path(
project=project_id,
location=location,
collection="default_collection",
engine=engine_id,
assistant="default_assistant",
),
query=discoveryengine.Query(text=query),
)
# Make the request
stream = client.stream_assist(request=request)
# Handle the response
for response in stream:
print(response)
同じセッションを使用して検索結果を取得する
既存のセッション内で会話を継続して Gemini Enterprise から回答を取得するには、streamAssist メソッドを使用します。次のコードサンプルは、必須フィールドを示しています。
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant:streamAssist" \
-d '
{
"session": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID",
"query": {
"text": "QUERY_TEXT_2"
}
}'
次のように置き換えます。
- ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
- 米国のマルチリージョンの場合は
us - EU のマルチリージョンの場合は
eu - グローバル ロケーションの場合は
global
- 米国のマルチリージョンの場合は
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- APP_ID: Gemini Enterprise app の固有識別子。
- LOCATION: データストアのマルチリージョン(
global、us、eu) - QUERY_TEXT_2: 検索クエリのテキスト。
- SESSION_ID: 前の会話またはクエリのセッション ID。
フィールドと返される内容の詳細については、レスポンス本文をご覧ください。
Python
このサンプルを試す前に、Gemini Enterprise クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。 詳細については、Gemini Enterprise Python API リファレンス ドキュメントをご覧ください。
Gemini Enterprise に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine
# TODO(developer): Update these variables before running the sample.
project_id = "YOUR_PROJECT_ID"
location = "YOUR_LOCATION"
engine_id = "YOUR_APP_ID"
session = "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID" # From previous session
query = "What is Gemini Enterprise?"
def stream_assist_session_sample(
project_id: str,
location: str,
engine_id: str,
session: str,
query: str,
):
# For more information, refer to:
# https://docs.cloud.google.com/gemini/enterprise/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
if location != "global"
else None
)
client = discoveryengine.AssistantServiceClient(client_options=client_options)
request = discoveryengine.StreamAssistRequest(
name=client.assistant_path(
project=project_id,
location=location,
collection="default_collection",
engine=engine_id,
assistant="default_assistant",
),
session=session,
query=discoveryengine.Query(text=query),
)
# Make the request
stream = client.stream_assist(request=request)
# Handle the response
for response in stream:
print(response.answer)
# Get Session ID
print(response.session_info.session)
ファイルをアップロードして検索結果を取得する(プレビュー)
アシスタントにコンテキストを追加するには、セッションにファイルをアップロードしてから、そのコンテンツをクエリします。手順は次のとおりです。
addContextFileメソッドを使用して、セッションにファイルをアップロードします。REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/sessions/SESSION_ID:addContextFile" \ -d ' { "fileName": "FILE_NAME", "mimeType": "MIME_TYPE", "fileContents": "BASE64_ENCODED_FILE" }'次のように置き換えます。
- ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
- 米国のマルチリージョンの場合は
us - EU のマルチリージョンの場合は
eu - グローバル ロケーションの場合は
global
- 米国のマルチリージョンの場合は
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- LOCATION: データストアのマルチリージョン(
global、us、eu) - APP_ID: Gemini Enterprise app の固有識別子。
- SESSION_ID: 前の会話またはクエリのセッション ID。
- FILE_NAME: ファイルの名前。
- MIME_TYPE: ファイルの MIME タイプ(
text/plain、application/pdfなど)。さまざまなメディアタイプの詳細については、メディアタイプをご覧ください。 - BASE64_ENCODED_FILE: ファイルの base64 エンコード表現。
フィールドと返される内容の詳細については、レスポンス本文をご覧ください。
- ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
同じセッションを使用して、
streamAssistメソッドでアップロードしたファイルに関する質問をします。REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant:streamAssist" \ -d ' { "session": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID", "fileIds": ["FILE_ID"], "query": { "text": "QUERY_TEXT_3" } }'次のように置き換えます。
- ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。
- 米国のマルチリージョンの場合は
us - EU のマルチリージョンの場合は
eu - グローバル ロケーションの場合は
global
- 米国のマルチリージョンの場合は
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- APP_ID: Gemini Enterprise app の固有識別子。
- LOCATION: データストアのマルチリージョン(
global、us、eu) - QUERY_TEXT_3: 検索クエリのテキスト。
- SESSION_ID: 前の会話またはクエリのセッション ID。
- FILE_ID: アシスタントにアップロードしたファイルの ID。
フィールドと返される内容の詳細については、レスポンス本文をご覧ください。
- ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。