En esta página, se presenta la recuperación con agentes y se explica cómo usarla con el método stream answers.
Acerca de la recuperación con agentes
La recuperación con agentes que se usa con el método stream answers puede obtener mejores resultados para ciertos casos de uso, por ejemplo, para habilitar la recuperación de varias pasadas para apps con varios almacenes de datos o para personalizar la generación de respuestas para diferentes clases de consultas.
El uso de la recuperación con agentes agrega cierta complejidad a tus apps, pero, a cambio, ofrece más control sobre los resultados.
La Búsqueda con agentes incluye un agente predefinido que puedes usar para personalizar el comportamiento de un motor de búsqueda. Esto permite una mayor personalización que la que está disponible a través de la IU de configuraciones de la app o el método de respuesta de transmisión sin recuperación con agentes.
Búsqueda combinada con y sin recuperación con agentes
La recuperación con agentes es particularmente útil para las apps de búsqueda combinada. Sin la recuperación con agentes, la búsqueda usa un fan-out de una sola pasada que consulta todos tus almacenes de datos a la vez. Por el contrario, la recuperación con agentes permite la búsqueda de varias pasadas. El agente planifica y ejecuta las búsquedas de forma secuencial, y elige las mejores herramientas para cada paso. También puede combinar resultados de varios almacenes de datos de la Búsqueda con agentes y usar herramientas como la Búsqueda de Google y Google Maps.
Por ejemplo, tienes almacenes de datos separados para las políticas globales de la empresa y los detalles de las oficinas regionales. Un usuario pregunta: "¿Cuáles son las reglas de cumplimiento de nuestra oficina de Tokio?".
Sin recuperación con agentes: Consulta el almacén de políticas y el almacén de la oficina regional de forma simultánea con la cadena de consulta completa. Esto podría mostrar resultados fragmentados.
Con recuperación con agentes: El agente planifica la ejecución. Primero, recupera los detalles sobre la oficina de Tokio del almacén regional. Luego, con ese contexto específico, realiza una segunda búsqueda segmentada en el almacén de políticas.
El agente sintetiza estos hallazgos en una respuesta única, coherente y más precisa.
La recuperación con agentes también te permite realizar consultas de búsqueda de varias turnos (preguntas de seguimiento) en apps de búsqueda combinada. Sin la recuperación con agentes, la búsqueda de varias turnos solo funciona con apps de un solo almacén de datos. Para conservar el contexto de la conversación en varios turnos, puedes combinar la recuperación con agentes con una sesión de Agent Platform.
Clasificación de consultas personalizadas
Los métodos answer y streaming answer
proporcionan dos tipos de clasificación de
consultas: ADVERSARIAL_QUERY y NON_ANSWER_SEEKING_QUERY.
La recuperación con agentes te permite definir tipos de clasificación adicionales para que coincidan con tus flujos de trabajo empresariales. El sistema usa un clasificador para determinar la intención del usuario y enruta la solicitud a la configuración de agente adecuada.
Por ejemplo, a partir de la consulta, determinas que la intención de la consulta es hacer un seguimiento de un pedido y especificaste una clasificación TRACK_ORDER. En lugar de ejecutar una búsqueda genérica en todos tus almacenes de datos, el sistema carga un agente especializado equipado con las herramientas y los datos necesarios para recuperar el estado del envío.
Formas de habilitar y usar la recuperación con agentes
Existen dos formas de habilitar la recuperación con agentes:
Agente de respuesta predefinido de Google: Si ya tienes una app de búsqueda en la Búsqueda con agentes, puedes habilitar la recuperación con agentes configurando
enable_agent_invocation=trueen las solicitudes a la API cuando envías consultas a la app. En este caso, conservas la configuración de entrega de búsqueda existente.App personalizada en modo IA: Cuando creas una app de la Búsqueda con agentes, defines un tipo diferente de configuración de entrega, la configuración de entrega
default_agent_answer. También se puede hacer referencia a esto como el motor personalizado en modo IA, ya que "app" y "motor" se usan de forma indistinta en la Búsqueda con agentes.
Antes de comenzar
Antes de poder usar la recuperación con agentes, haz lo siguiente:
Configura un motor de razonamiento para sesiones de varias turnos
Para conservar el contexto de la conversación en varios turnos, debes crear un Agent Runtime en el motor de Gemini Enterprise Agent Platform (también llamado motor de razonamiento).
Cuando realizas una solicitud streamAnswer, pasas el nombre del recurso del Agent Runtime como el campo reasoningEngine en la solicitud streamAnswer.
Habilita el Agent Platform en tu Google Cloud proyecto.
Crea una instancia de Agent Runtime (también llamada motor de razonamiento) con la API de REST de Agent Engine (o el Kit de desarrollo de agentes). La instancia aloja las sesiones que usa el método
streamAnswer.El nombre del recurso de la instancia tiene el siguiente formato:
projects/PROJECT_NUMBER/locations/LOCATION_ID/reasoningEngines/REASONING_ENGINE_ID
Otorga al agente de servicio de Discovery Engine acceso al motor de razonamiento otorgando la función
roles/aiplatform.reasoningEngineServiceAgenta la cuenta de servicio de Discovery Engine:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
donde
PROJECT_NUMBERes el número del proyecto que aloja el motor de razonamiento. Este permiso permite que el backend de respuesta de transmisión cree, lea y agregue eventos a las sesiones en tu nombre.Revisa las cuotas aplicables. Las sesiones respaldadas por Agent Runtime consumen cuotas de la API de Agent Platform. Las cuotas de interés son las siguientes:
aiplatform.googleapis.com/session_write_requests: Crea, borra o actualiza sesiones de Agent Runtime por minuto.aiplatform.googleapis.com/session_event_append_requests: Agrega eventos a las sesiones de Agent Runtime por minuto.
Para obtener más información, consulta Cuotas de Agent Engine de Gemini Enterprise Agent Platform.
Toma nota del nombre del recurso de Agent Runtime, ya que debes pasarlo como el campo
reasoningEngineen la solicitudstreamAnswer.
Opcional: Configura una app personalizada en modo IA
De forma predeterminada, la recuperación con agentes usa el agente de respuesta predefinido de Google. Esto clasifica las consultas en las intenciones DEFAULT_ANSWER_SEEKING y DO_NOT_ANSWER.
Puedes crear una app personalizada en modo IA cuando quieras personalizar herramientas o agregar compatibilidad con nuevas clases de intenciones de consulta. Cada intención personalizada (o marco) declara las condiciones en las que el agente clasifica una consulta en la intención y las instrucciones y herramientas que usa el agente para controlarla.
Crea el motor a través del
engines.createmétodo REST con unengine_config.answer_agentbloque.La configuración se estructura de la siguiente manera:
engine { name: "YOUR_AI_MODE_ENGINE" display_name: "YOUR_AI_MODE_ENGINE_DISPLAY_NAME" engine_config { answer_agent { frames { vertical_intent: "YOUR_CUSTOM_INTENT" vertical_intent_prompt { instructions: "Instructions for when to classify a user query as YOUR_CUSTOM_INTENT." } initial_prompt { instructions: "Instructions for the agent on how to process a user query classified as YOUR_CUSTOM_INTENT." tools { discovery_engine_search_tool_config { serving_config: "YOUR_SEARCH_SERVING_CONFIG_1" page_size: 10 } tool_description: "This tool can help search corpus 1." } tools { discovery_engine_search_tool_config { serving_config: "YOUR_SEARCH_SERVING_CONFIG_2" page_size: 10 } tool_description: "This tool can help search corpus 2." } } } } } } engine_id: "SAMPLE_MULTI_SEARCH_RETRIEVAL"
Después de crear el motor, enruta las solicitudes a través de su configuración de entrega
default_agent_answer:projects/*/locations/*/collections/*/engines/YOUR_AI_MODE_ENGINE/servingConfigs/default_agent_answer
Si necesitas ayuda para diseñar o registrar una app personalizada en modo IA, comunícate con el equipo de asistencia support.
Transmite una respuesta con la recuperación con agentes
En el siguiente comando, se muestra cómo llamar al método de respuesta de transmisión con agentes habilitada. Al igual que la salida sin recuperación con agentes, esta llamada transmite una respuesta generada en forma de una serie de respuestas JSON.
Si configuraste un motor de razonamiento, incluye su nombre de recurso en el campo reasoningEngine para conservar la sesión en los turnos.
REST
Para buscar y obtener resultados con una respuesta generada transmitida, haz lo siguiente:
Ejecuta el siguiente comando de 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/SERVING_CONFIG_ID:streamAnswer" \ -d '{ "query": { "text": "QUERY" }, "session": "SESSION", "enableAgentInvocation": true, "userPseudoId": "USER_PSEUDO_ID", "reasoningEngine": "projects/PROJECT_NUMBER/locations/LOCATION_ID/reasoningEngines/REASONING_ENGINE_ID" }'Reemplaza lo siguiente:
PROJECT_ID: el ID de tu Google Cloud proyecto.APP_ID: el ID de la app de la Búsqueda con agentes que deseas consultar.SERVING_CONFIG_ID: Para usar una app personalizada en modo IA, configura este parámetro endefault_agent_answer. Para usar el agente de respuesta predefinido de Google, configura este parámetro endefault_search.PROJECT_NUMBER: el número del proyecto que aloja el motor de razonamiento.QUERY: una cadena de texto libre que contiene la pregunta o la consulta de búsqueda.SESSION: Si continúas una conversación de varias turnos, este es el nombre del recurso de la sesión que se muestra en la respuesta del turno anterior, por ejemplo,projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID. Si no continúas una conversación, configura este parámetro en-(un guion).USER_PSEUDO_ID: un identificador único que se usa para hacer un seguimiento del visitante.LOCATION_ID: la ubicación de tu motor de razonamiento, por ejemplous-central1.REASONING_ENGINE_ID: el ID de la instancia de Agent Engine que creaste.
Python
Para obtener más información, consulta la documentación de referencia de la API de la PythonBúsqueda con agentes.
Para autenticarte en la Búsqueda con agentes, 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.
En la siguiente muestra, se usa el cliente de Python de Discovery Engine (v1alpha) para llamar a stream_answer_query con la invocación de agentes
habilitada. Pasa el campo reasoning_engine para las sesiones de varias turnos.
from google.api_core.client_options import ClientOptions from google.cloud import discoveryengine_v1alpha def run_stream_answer_query(): PROJECT_ID = "YOUR_PROJECT_ID" LOCATION = "global" # or a specific region COLLECTION_ID = "default_collection" ENGINE_ID = "YOUR_ENGINE_ID" # Use "default_search" for the predefined Google answer agent, or # "default_agent_answer" if you have configured a custom AI_MODE app. SERVING_CONFIG_ID = "default_search" USER_ID = "user-id" QUERY_TEXT = "YOUR_QUERY_TEXT" REASONING_ENGINE_ID = "YOUR_REASONING_ENGINE_ID" # Use "-" to start a new session, or pass the sessionId returned in # the previous turn's response to continue an existing session. SESSION_ID = "-" SESSION_REF = ( f"projects/{PROJECT_ID}/locations/{LOCATION}/collections/" f"{COLLECTION_ID}/engines/{ENGINE_ID}/sessions/{SESSION_ID}" ) SERVING_CONFIG_ENGINE = ( f"projects/{PROJECT_ID}/locations/{LOCATION}/collections/" f"{COLLECTION_ID}/engines/{ENGINE_ID}/servingConfigs/{SERVING_CONFIG_ID}" ) REASONING_ENGINE = ( f"projects/{PROJECT_ID}/locations/{LOCATION}/" f"reasoningEngines/{REASONING_ENGINE_ID}" ) client_options = ClientOptions( api_endpoint="discoveryengine.googleapis.com" ) client = discoveryengine_v1alpha.ConversationalSearchServiceClient( client_options=client_options ) request = discoveryengine_v1alpha.AnswerQueryRequest( query=discoveryengine_v1alpha.Query(text=QUERY_TEXT), serving_config=SERVING_CONFIG_ENGINE, user_pseudo_id=USER_ID, enable_agent_invocation=True, session=SESSION_REF, reasoning_engine=REASONING_ENGINE, ) print(f"Starting StreamAnswerQuery agentic session with: {request}") stream = client.stream_answer_query(request) try: for response in stream: print(f"Received response: {response}") except Exception as e: print(f"Error during streaming: {e}") if __name__ == "__main__": run_stream_answer_query()
Obtén la versión preliminar del SDK de Discovery Engine
El SDK de Discovery Engine facilita la interacción con Google Cloud los servicios desde tus aplicaciones. El SDK ayuda con el manejo de errores y la autenticación, y proporciona funciones como reintentos automáticos, manejo de paginación y administración de operaciones de larga duración.
Debido a que la función de recuperación con agentes está en una lista de entidades permitidas, el SDK que necesitas para trabajar con esta función es diferente de las bibliotecas cliente de Discovery Engine disponibles de forma general.
Para obtener la versión preliminar del SDK de Discovery Engine, haz lo siguiente:
Comunícate con el equipo de asistencia para obtener acceso a la carpeta de Google Drive del SDK de versión preliminar.
Descarga el paquete para tu idioma.
Cambios en la API
Debido a que esta función está en una lista de entidades permitidas, la documentación de referencia de la API en la página del método de respuesta de transmisión no muestra todos los campos que están disponibles y que se necesitan para usar la recuperación con agentes con el método de respuesta de transmisión. Los campos faltantes se documentan de la siguiente manera.
Campos del cuerpo de la solicitud
enableAgentInvocation(booleano): Configuratruepara cambiar al procesamiento con agentes con la configuración de entrega de búsqueda existente. Este campo es opcional si especificas una configuración de entregaanswer_agentcon una app personalizada en modo IA.reasoningEngine(cadena): El nombre del recurso de Agent Runtime que aloja las sesiones de agentes, con el formatoprojects/*/locations/*/reasoningEngines/*.
Campos de respuesta
Cuando se habilita la recuperación con agentes, cada generada
Answer.Reference incluye lo siguiente:
queries(cadena repetida): La lista de consultas que emitió el agente para producir la referencia.
Servicio de sesiones
La API de REST del servicio de sesiones no admite los métodos
create ni update. Sin embargo, admite los otros métodos:
list, get y delete.
La API de RPC del servicio de sesiones no admite las operaciones Update ni
Create en los recursos de sesión que se usan para conversaciones de varias turnos.
Sin embargo, admite el otro servicio: operaciones List, Get y Delete en los recursos de sesión que se usan para conversaciones de varias turnos.