El framework del Kit de desarrollo de agentes (ADK) simplifica la creación, la evaluación y la implementación de agentes de IA. El ADK proporciona un enfoque modular y centrado en el código para crear agentes que pueden razonar, planificar y utilizar herramientas.
En este instructivo, se muestra cómo compilar e implementar un agente de IA en Cloud Run con el ADK de Python. Este agente recupera el informe meteorológico de una ciudad que especifiques.
Para obtener más información sobre cómo alojar tu agente del ADK con Google Cloud CLI, consulta Implementa en Cloud Run en la documentación del ADK.
Objetivos
- Escribe la aplicación de ejemplo para definir el agente del clima.
- Implementa el agente en Cloud Run desde la fuente.
- Ejecuta tu agente para consultar información sobre el clima.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para obtener una estimación de costos en función del uso previsto,
usa la calculadora de precios.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run Admin API, Vertex AI API, and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Configura tu entorno de desarrollo de Cloud Run en tu Google Cloud proyecto.
- Instala el ADK siguiendo las instrucciones de la documentación del Kit de desarrollo de agentes.
Si estás bajo una política de la organización de restricción de dominios que restringe las invocaciones no autenticadas para tu proyecto, deberás acceder al servicio implementado como se describe en Prueba servicios privados.
-
Desarrollador de origen de Cloud Run (
roles/run.sourceDeveloper) en el proyecto -
Usuario de Vertex AI (
roles/aiplatform.user) en el proyecto -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser) en la identidad del servicio -
Visualizador de registros (
roles/logging.viewer) en el proyecto
Roles obligatorios
Para obtener los permisos que necesitas para implementar un agente de IA en Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM:
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Escriba la aplicación de ejemplo
Para escribir una aplicación en Python, haz lo siguiente:
Crea un directorio principal nuevo llamado
parent_foldery usa el comando de cambio de directorio en él:mkdir parent_folder cd parent_folderEn el directorio
parent_folder, crea un subdirectorio nuevo llamadomulti_tool_agenty usa el comando de cambio de directorio en él:mkdir multi_tool_agent cd multi_tool_agentCrea un archivo
__init__.pypara importar el agente:from . import agentCrea un archivo
agent.pypara definir el agente que responderá preguntas sobre la hora y el clima en una ciudad especificada:import datetime from zoneinfo import ZoneInfo from google.adk.agents import Agent def get_weather(city: str) -> dict: """Retrieves the current weather report for a specified city. Args: city (str): The name of the city for which to retrieve the weather report. Returns: dict: status and result or error msg. """ if city.lower() == "new york": return { "status": "success", "report": ( "The weather in New York is sunny with a temperature of 25 degrees" " Celsius (77 degrees Fahrenheit)." ), } else: return { "status": "error", "error_message": f"Weather information for '{city}' is not available.", } def get_current_time(city: str) -> dict: """Returns the current time in a specified city. Args: city (str): The name of the city for which to retrieve the current time. Returns: dict: status and result or error msg. """ if city.lower() == "new york": tz_identifier = "America/New_York" else: return { "status": "error", "error_message": ( f"Sorry, I don't have timezone information for {city}." ), } tz = ZoneInfo(tz_identifier) now = datetime.datetime.now(tz) report = ( f'The current time in {city} is {now.strftime("%Y-%m-%d %H:%M:%S %Z%z")}' ) return {"status": "success", "report": report} root_agent = Agent( name="weather_time_agent", model="gemini-2.0-flash", description=( "Agent to answer questions about the time and weather in a city." ), instruction=( "You are a helpful agent who can answer user questions about the time and weather in a city." ), tools=[get_weather, get_current_time], )Crea un archivo
.envy agrega las siguientes variables:GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT=PROJECT_ID GOOGLE_CLOUD_LOCATION=REGIONReemplaza lo siguiente:
- PROJECT_ID: Es el ID del proyecto de Google Cloud .
- REGION: Es la región en la que planeas implementar tu servicio.
Navega al directorio de la carpeta principal
parent_foldery crea un archivorequirements.txtpara agregar la dependenciagoogle-adk:google-adkTu proyecto fuente incluye la siguiente estructura:
parent_folder/ ├── requirements.txt └── multi_tool_agent/ ├── __init__.py ├── agent.py └── .env
La app está lista para implementarse.
Implementa en Cloud Run desde la fuente
La implementación desde la fuente compila automáticamente una imagen de contenedor a partir del código fuente y la implementa.
En el directorio del código fuente (
parent_folder), implementa en Cloud Run con el siguiente comando:gcloud beta run deploy --source .
Cuando se te solicite el nombre del servicio, presiona Intro para aceptar el nombre predeterminado, por ejemplo,
weather-agent.Si se te solicita que habilites las APIs adicionales en el proyecto, por ejemplo, la API de Artifact Registry, presiona
ypara responder.Cuando se te solicite la región, selecciona la región que prefieras, por ejemplo,
europe-west1.Si se te solicita que crees un repositorio en la región especificada, presiona
ypara responder.Si se te solicita permitir acceso público, responde
y. Es posible que no veas este mensaje si hay una política de la organización de restricción de dominio que lo impida. Para obtener más información, consulta la sección Antes de comenzar.
Luego, espera un momento a que finalice la implementación. Si la operación se completa de forma correcta, la línea de comandos mostrará la URL de servicio. Navega a
/list-appsdesde la URL de tu servicio. Por ejemplo,https://weather-agent-123456789101.us-central1.run.app/list-apps.
Ejecuta tu agente
Para consultar el agente del ADK, ejecuta los siguientes comandos curl:
Para obtener la lista de apps, ejecuta el siguiente comando:
curl -X GET SERVICE_URL/list-appsReemplaza SERVICE_URL por la URL del servicio implementado.
Para iniciar una sesión, ejecuta el siguiente comando:
curl -X POST SERVICE_URL/apps/multi_tool_agent/users/u_123/sessions/s_123 -H "Content-Type: application/json" -d '{"key1": "value1", "key2": 42}'Para consultar el agente, ejecuta el siguiente comando:
curl -X POST SERVICE_URL/run \ -H "Content-Type: application/json" \ -d "{\"appName\": \"multi_tool_agent\",\"userId\": \"u_123\",\"sessionId\": \"s_123\",\"newMessage\": { \"role\": \"user\", \"parts\": [{ \"text\": \"What's the weather in New York today?\" }]}}"
El agente devuelve la información del clima en los resultados de tu búsqueda.
Para obtener más información y ejemplos sobre los comandos curl admitidos, consulta Usa el servidor de API en la documentación del ADK.
Realiza una limpieza
Para evitar cargos adicionales en tu cuenta de Google Cloud , borra todos los recursos que implementaste con este instructivo.
Borra el proyecto
Si creaste un proyecto nuevo para este instructivo, bórralo. Si usaste un proyecto existente y necesitas conservarlo sin los cambios que agregaste en este instructivo, borra los recursos que creaste para el instructivo.
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.
Para borrar el proyecto, sigue los pasos que se indican más abajo:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Elimina recursos de instructivos
Borra el servicio de Cloud Run que implementaste en este instructivo. Los servicios de Cloud Run no generan costos hasta que reciben solicitudes.
Para borrar tu servicio de Cloud Run, ejecuta el siguiente comando:
gcloud run services delete SERVICE-NAME
SERVICE-NAME por el nombre del servicio
También puedes borrar los servicios de Cloud Run desde la consola deGoogle Cloud .
Quita la configuración de región predeterminada de
gcloudque agregaste durante la configuración del instructivo:gcloud config unset run/regionQuita la configuración del proyecto:
gcloud config unset project