在 Web 应用中,您可以以流式回答形式获得问题解答。本文档介绍了如何使用 REST API 获得答案。如果您想使用 Gemini Enterprise Web 应用,请参阅 与助理聊天。
StreamAssist 概览
StreamAssist 提供了一种强大且互动的方式来处理用户查询。它以流式方式运行,可实现实时双向互动。
该 API 的主要功能包括:
保持对话式上下文:该 API 使用会话来保持对话式上下文,确保它能理解之前互动范围内的后续查询。
整合提供的文件:该 API 将附加的文件作为上下文添加,以便获得更明智、更相关的回答。
无缝集成:该 API 可与各种代理和工具集成,以满足各种用户请求。
准备工作
确保您具有以下各项:
为您的项目启用 Discovery Engine API Google Cloud。 您可以在Google Cloud 控制台中的 Discovery Engine API 页面上启用该 API。
已分配
discoveryengine.assistants.assist权限的 Discovery Engine 角色 。现有的 Gemini Enterprise 应用。如需创建应用,请参阅创建应用。
获取搜索结果
您可以使用 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(表示欧盟多区域)global(表示全球位置)
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- APP_ID:Gemini Enterprise 应用的唯一标识符。
- LOCATION:数据存储区的多区域:
global、us或eu - QUERY_TEXT_1:搜索查询文本。
如需详细了解这些字段以及返回的内容,请参阅回答正文。
Python
试用此示例之前,请按照 Python 设置说明进行操作。 请按照 Gemini Enterprise 快速入门:使用 客户端库中的说明进行操作。 如需了解详情,请参阅 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(表示欧盟多区域)global(表示全球位置)
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- APP_ID:Gemini Enterprise 应用的唯一标识符。
- LOCATION:数据存储区的多区域:
global、us或eu - QUERY_TEXT_2:搜索查询文本。
- SESSION_ID:之前 对话或查询中的会话的 ID。
如需详细了解这些字段以及返回的内容,请参阅回答正文。
Python
试用此示例之前,请按照 Python 设置说明进行操作。 请按照 Gemini Enterprise 快速入门:使用 客户端库中的说明进行操作。 如需了解详情,请参阅 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(表示欧盟多区域)global(表示全球位置)
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- LOCATION:数据存储区的多区域:
global、us或eu - APP_ID:Gemini Enterprise 应用的唯一标识符。
- 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(表示欧盟多区域)global(表示全球位置)
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- APP_ID:Gemini Enterprise 应用的唯一标识符。
- LOCATION:数据存储区的多区域:
global、us或eu - QUERY_TEXT_3:搜索查询文本。
- SESSION_ID:之前 对话或查询中的会话的 ID。
- FILE_ID:您上传到助理的文件的 ID。
如需详细了解这些字段以及返回的内容,请参阅回答正文。
- ENDPOINT_LOCATION:API 请求的多区域。请指定以下某个值: