En tu app web, puedes obtener respuestas a tus preguntas en forma de respuestas transmitidas. En este documento, se muestra cómo usar la API de REST para obtener respuestas. Si quieres usar la app web de Gemini Enterprise, consulta Cómo chatear con el asistente.
Descripción general de StreamAssist
StreamAssist proporciona una forma interactiva y potente de controlar las búsquedas de los usuarios. Funciona de forma continua, lo que permite interacciones en tiempo real.
Las capacidades clave de la API incluyen las siguientes:
Mantiene el contexto de la conversación: Usa sesiones para mantener el contexto de la conversación, lo que garantiza que comprenda las preguntas de seguimiento dentro del alcance de las interacciones anteriores.
Incorpora los archivos proporcionados: Incluye los archivos adjuntos como contexto para brindar respuestas más fundamentadas y pertinentes.
Integración fluida: Se integra con varios agentes y herramientas para satisfacer una amplia variedad de solicitudes de los usuarios.
Antes de comenzar
Asegúrate de tener lo siguiente:
La API de Discovery Engine habilitada para tu Google Cloud. Puedes habilitarla en la página API de Discovery Engine de la consola deGoogle Cloud .
Un rol de Discovery Engine que tenga asignado el permiso
discoveryengine.assistants.assistUna app de Gemini Enterprise existente. Para crear una app, consulta Cómo crear una app.
Cómo obtener resultados de búsqueda
Puedes usar el método streamAssist para realizar consultas y obtener respuestas de Gemini Enterprise. El siguiente comando curl enumera los campos obligatorios.
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"
}
}'
Reemplaza lo siguiente:
- ENDPOINT_LOCATION: Es la región múltiple para tu solicitud a la API. Especifica uno de los siguientes valores:
uspara la multirregión de EE.UU.eupara la multirregión de la UEglobalpara la ubicación global
- PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
- APP_ID: Es el identificador único de la app de Gemini Enterprise.
- LOCATION: Es la multirregión de tu almacén de datos:
global,usoeu. - QUERY_TEXT_1: Es el texto de la búsqueda.
Para obtener más información sobre los campos y lo que se devuelve, consulta Cuerpo de la respuesta.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python que encontrarás en la guía de inicio rápido de Gemini Enterprise sobre las bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Gemini Enterprise Python.
Para autenticarte en Gemini Enterprise, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
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)
Cómo obtener resultados de la búsqueda con la misma sesión
Para continuar una conversación y obtener respuestas de Gemini Enterprise en una sesión existente, usa el método streamAssist. En el siguiente muestra de código, se muestran los campos obligatorios:
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"
}
}'
Reemplaza lo siguiente:
- ENDPOINT_LOCATION: Es la región múltiple para tu solicitud a la API. Especifica uno de los siguientes valores:
uspara la multirregión de EE.UU.eupara la multirregión de la UEglobalpara la ubicación global
- PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
- APP_ID: Es el identificador único de la app de Gemini Enterprise.
- LOCATION: Es la multirregión de tu almacén de datos:
global,usoeu. - QUERY_TEXT_2: Es el texto de la búsqueda.
- SESSION_ID: Es el ID de una sesión de una conversación o consulta anterior.
Para obtener más información sobre los campos y lo que se devuelve, consulta Cuerpo de la respuesta.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python que encontrarás en la guía de inicio rápido de Gemini Enterprise sobre las bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Gemini Enterprise Python.
Para autenticarte en Gemini Enterprise, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
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)
Sube un archivo y obtén resultados de la búsqueda (vista previa)
Para darle más contexto al asistente, sube un archivo a una sesión y, luego, consulta su contenido. Lleva a cabo los pasos siguientes:
Sube un archivo a una sesión con el método
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" }'Reemplaza lo siguiente:
- ENDPOINT_LOCATION: Es la región múltiple para tu solicitud a la API. Especifica uno de los siguientes valores:
uspara la multirregión de EE.UU.eupara la multirregión de la UEglobalpara la ubicación global
- PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
- LOCATION: Es la multirregión de tu almacén de datos:
global,usoeu. - APP_ID: Es el identificador único de la app de Gemini Enterprise.
- SESSION_ID: Es el ID de una sesión de una conversación o consulta anterior.
- FILE_NAME: Es el nombre del archivo.
- MIME_TYPE: Es el tipo de MIME del archivo, por ejemplo,
text/plainoapplication/pdf. Para obtener más información sobre los diferentes tipos de medios, consulta Tipos de medios. - BASE64_ENCODED_FILE: Es la representación del archivo codificada en Base64.
Para obtener más información sobre los campos y lo que se devuelve, consulta Cuerpo de la respuesta.
- ENDPOINT_LOCATION: Es la región múltiple para tu solicitud a la API. Especifica uno de los siguientes valores:
Usa la misma sesión para hacer una pregunta sobre el archivo que subiste con el método
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" } }'Reemplaza lo siguiente:
- ENDPOINT_LOCATION: Es la región múltiple para tu solicitud a la API. Especifica uno de los siguientes valores:
uspara la multirregión de EE.UU.eupara la multirregión de la UEglobalpara la ubicación global
- PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
- APP_ID: Es el identificador único de la app de Gemini Enterprise.
- LOCATION: Es la multirregión de tu almacén de datos:
global,usoeu. - QUERY_TEXT_3: Es el texto de la búsqueda.
- SESSION_ID: Es el ID de una sesión de una conversación o consulta anterior.
- FILE_ID: Es el ID del archivo que subiste al asistente.
Para obtener más información sobre los campos y lo que se devuelve, consulta Cuerpo de la respuesta.
- ENDPOINT_LOCATION: Es la región múltiple para tu solicitud a la API. Especifica uno de los siguientes valores: