En este instructivo, se explica cómo implementar un agente de agente a agente (A2A), creado con el Kit de desarrollo de agentes (ADK) y la extensión A2UI, en Cloud Run. También aprenderás a registrar el agente implementado con Gemini Enterprise.
En este ejemplo, se usa código de muestra disponible de forma pública. El código de muestra de este instructivo tiene la siguiente estructura de carpetas.
Estructura de carpetas del instructivo
El proyecto tiene la siguiente estructura de carpetas:
| Archivo o directorio | Descripción |
|---|---|
/samples/community/agent/adk/gemini_enterprise/v0_9 |
Es el directorio que contiene los datos y las configuraciones de ejemplo para este instructivo. |
__init__.py |
Marca el directorio como un paquete de Python. |
__main__.py |
Es el punto de entrada para ejecutar el agente de forma local. |
agent.py |
Define el agente, sus habilidades y su comportamiento. |
agent_executor.py |
Administra el flujo de ejecución y las interacciones de las herramientas. |
deploy.sh |
Es la secuencia de comandos para compilar e implementar el agente en Cloud Run. |
examples/ |
Directorio que contiene ejemplos de plantillas de componentes. |
gemini_enterprise_composite_catalog.json |
Catálogo de componentes que define los componentes estándar de Material y los personalizados de Gemini Enterprise. |
main.py |
Es el punto de entrada principal de la aplicación (app de FastAPI). |
prompt_builder.py |
Ayuda a construir instrucciones para el modelo. |
pyproject.toml |
Configuración y dependencias del proyecto. |
examples/0.9/material_table_orders.json |
Plantilla de IU de ejemplo que contiene el diseño y los datos simulados para la demostración de pedidos recientes. |
tools.py |
Define las herramientas (funciones) que puede usar el agente. |
Antes de comenzar
Antes de comenzar, asegúrate de tener lo siguiente:
El rol de administrador de Discovery Engine.
Una app de Gemini Enterprise existente. Para crear una app, consulta Crea una app.
Clona el repositorio y navega al directorio de muestra
v0_9:git clone https://github.com/a2ui-project/a2ui.git cd a2ui/samples/community/agent/adk/gemini_enterprise/v0_9
Habilita las APIs
Habilita las siguientes APIs para tu proyecto:
Console
Habilita las siguientes APIs:
- La API de Vertex AI
- API de Cloud Build
- API de Artifact Registry
- API de Cloud Run
- API de Cloud Logging
- API de Discovery Engine
- API de Cloud Storage
- API de administración de identidades y accesos (IAM)
REST
Puedes habilitar estas APIs desde la consola de Google Cloud o con el siguiente comando de gcloud CLI:
gcloud services enable aiplatform.googleapis.com cloudbuild.googleapis.com artifactregistry.googleapis.com run.googleapis.com logging.googleapis.com discoveryengine.googleapis.com storage.googleapis.com iam.googleapis.com
Otorga permisos
Otorga permiso al rol de Invocador de Cloud Run (roles/run.invoker).
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com" \
--role="roles/run.invoker"
Reemplaza lo siguiente:
- PROJECT_ID : Es el ID de tu proyecto.
- PROJECT_NUMBER: Es el número del proyecto de Google Cloud .
Implementa el agente
La secuencia de comandos deploy.sh automatiza el proceso de implementación. Para implementar tu agente,
ejecuta la secuencia de comandos desde el directorio del proyecto con tu ID de Google Cloud y un nombre
para tu servicio nuevo. También puedes especificar el modelo de Gemini
que deseas usar.
La secuencia de comandos realiza las siguientes acciones:
- Compila una imagen de contenedor a partir de tu código fuente.
- Envía la imagen a Artifact Registry.
- Implementa la imagen en Cloud Run.
- Establece variables de entorno, incluidas la
MODELy laAGENT_URLpública del servicio.
chmod +x deploy.sh
./deploy.sh PROJECT_ID a2ui-demo-agent MODEL_NAME
Reemplaza lo siguiente:
- PROJECT_ID: el ID de tu proyecto.
- MODEL_NAME: Opcional Este es el tercer argumento de la secuencia de comandos. Los valores admitidos son
gemini-2.5-proygemini-2.5-flash. Si no se proporciona, la secuencia de comandos se establece de forma predeterminada engemini-2.5-flash.
Una vez que se complete la secuencia de comandos, se imprimirá la URL del servicio de tu agente implementado. Necesitarás esta URL de servicio en el siguiente paso.
Registra el agente en Gemini Enterprise
Ahora que tu agente está implementado, debes registrarlo en Gemini Enterprise para que se pueda descubrir.
Ejecuta el siguiente comando de curl y reemplaza los marcadores de posición por tus propios
valores:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/LOCATION/collections/default_collection/engines/ENGINE_ID/assistants/default_assistant/agents -d '{
"name": "a2ui-demo-agent",
"displayName": "A2UI v0.9 Demo Agent",
"description": "A demo agent that showcases A2UI v0.9 UI templates.",
"a2aAgentDefinition": {
"jsonAgentCard": "{\"protocolVersion\": \"0.3.0\", \"name\": \"A2UI v0.9 Demo\", \"description\": \"A demo agent that showcases A2UI v0.9 UIs built from the Material component catalog and Gemini Enterprise custom components (Canvas, Iframe). Ask it what can you do? to see the available demos.\", \"url\": \"AGENT_URL\", \"version\": \"1.0.0\", \"capabilities\": {\"streaming\": true, \"preferredTransport\": \"JSONRPC\", \"extensions\": [{\"uri\": \"https://a2ui.org/a2a-extension/a2ui/v0.9\", \"description\": \"Ability to render A2UI v0.9\", \"required\": false, \"params\": {\"supportedCatalogIds\": [\"https://www.gstatic.com/vertexaisearch/a2ui/v0_9/gemini_enterprise_composite_catalog.json\"]}}]}, \"skills\": [{\"id\": \"a2ui_demo\", \"name\": \"A2UI v0.9 Component Demo\", \"description\": \"Demonstrates A2UI v0.9 UIs built from the Material catalog and Gemini Enterprise custom components: cards, forms & inputs, tabs, tables, progress indicators, dialogs & menus, the Canvas side panel, and the Iframe (IFrameSrcdoc / IFrameUrl) components.\"}], \"defaultInputModes\": [\"text/plain\"], \"defaultOutputModes\": [\"text/plain\"]}"
}
}'
Reemplaza lo siguiente:
PROJECT_NUMBER: Es el número del proyecto de Google Cloud .LOCATION: Es la multirregión de tu almacén de datos:global,usoeu.ENGINE_ID: Es el ID de la app con la que deseas registrar el agente.AGENT_URL: Es la URL de servicio de tu agente implementado.
Cancela el registro del agente (opcional)
Si quieres cancelar el registro del agente, ejecuta el siguiente comando de curl:
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/LOCATION/collections/default_collection/engines/ENGINE_ID/assistants/default_assistant/agents/AGENT_ID
Reemplaza lo siguiente:
PROJECT_NUMBER: Es el número del proyecto de Google Cloud .LOCATION: Es la multirregión de tu almacén de datos:global,usoeu.ENGINE_ID: Es el ID de la app con la que se registra el agente.AGENT_ID: Es el ID del agente que deseas borrar.
Usa el agente en la app web de Gemini Enterprise
Después de crear y registrar un agente, puedes comenzar a usarlo y a interactuar con él en la app web de Gemini Enterprise.
Obtén la URL de la app web
Para usar el agente, primero debes obtener la URL de la app web. Un administrador de Gemini Enterprise puede obtener y compartir la URL de la app web siguiendo estos pasos:
En la consola de Google Cloud , ve a la página Gemini Enterprise.
Haz clic en el nombre de la app con la que registraste el agente.
Haz clic en Integrations.
Copia El vínculo a tu app web: y compártelo con los usuarios de la organización.
Usa el agente
Para usar el agente y, también, interactuar con él, haz lo siguiente:
- Abre la URL de la app web en una nueva pestaña del navegador.
- En el menú de navegación de la app web, haz clic en Agentes.
- Ve a la sección De tu organización y haz clic en el agente que creaste.
- Se abrirá la interfaz de conversación del agente. Comienza a hacer preguntas y a interactuar con el agente.
Por ejemplo, puedes usar una instrucción como Show me the recent orders table para obtener
información sobre los pedidos recientes que forman parte de los datos de muestra. El agente
recupera la información del pedido de material_table_orders.json y renderiza
la lista en el chat con componentes de IU personalizados, como se muestra en el siguiente
ejemplo:
