¡Bienvenido a la primera parte de la serie "Construyendo Agentes de IA con ADK"! En esta serie de codelabs prácticos, te embarcarás en un emocionante viaje para crear tu propio agente de IA inteligente utilizando el Agent Development Kit (ADK) de Google.
Comenzaremos con lo esencial, guiándote a través de la configuración de tu entorno de desarrollo y la creación de un agente conversacional fundamental. Al final de este codelab, habrás construido tu primera IA interactiva, lista para ser expandida en las partes posteriores de esta serie mientras la transformamos en un sofisticado Sistema Multi-Agente (MAS).
Puedes completar este codelab ya sea en tu entorno local o en Google Cloud. Para la experiencia más consistente, recomendamos usar Cloud Shell desde el entorno de Google Cloud. Cloud Shell también proporciona 5 GB de almacenamiento persistente en el directorio $HOME. Esto es útil para almacenar scripts, archivos de configuración o repositorios clonados.
Nota: Si eliges trabajar localmente, podrías requerir pasos adicionales de configuración, instalación y autenticación, que no están cubiertos por la sección de configuración del entorno de este laboratorio.
Los agentes de IA están revolucionando la forma en que interactuamos con la tecnología. Un agente de IA es un programa inteligente diseñado para actuar en tu nombre, similar a un asistente personal digital. Puede percibir su entorno, tomar decisiones y realizar acciones para lograr objetivos específicos de forma autónoma.
En esencia, un agente de IA utiliza un Modelo de Lenguaje Grande (LLM) como su "cerebro" para entender y razonar. Esto le permite:

El ADK de Google es un framework que simplifica la creación de agentes de IA. Proporciona:
En este codelab, crearemos un agente asistente personal que te ayudará con tareas cotidianas.
Este codelab asume que ya tienes un proyecto de Google Cloud con facturación habilitada. Si aún no lo tienes, sigue estos pasos:
Nota: La facturación debe estar habilitada incluso para el nivel gratuito, ya que es el mecanismo para rastrear uso. Solo se te cobrará si excedes los límites del nivel gratuito o usas servicios de pago.
Verifica que estás correctamente configurado en Cloud Shell, la interfaz de línea de comandos integrada en Google Cloud Console.
En la esquina superior derecha de Google Cloud Console, haz clic en el ícono de terminal (>_) para activar Cloud Shell.

Si se te solicita, haz clic en Autorizar para conceder a Cloud Shell los permisos necesarios sobre tu proyecto.

Una vez cargado Cloud Shell, confirma que usas la cuenta correcta. Ejecuta:
gcloud auth list
Deberías ver algo similar:
Credentialed Accounts
ACTIVE: *
ACCOUNT: cuenta_actual@example.com
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Si la cuenta activa no es la correcta para este codelab, cámbiala reemplazando por tu email real:
gcloud config set account <tu_cuenta_deseada@example.com>
Verifica que Cloud Shell usa el proyecto correcto. Ejecuta:
gcloud config list project
Busca la sección [core] y confirma que el ID coincide con el proyecto deseado:
[core]
project = <id-proyecto-actual>
Si no coincide, establece el proyecto correcto:
gcloud config set project <tu-id-proyecto-deseado>
Antes de usar los servicios de Google Cloud, habilita las APIs necesarias para tu proyecto. En Cloud Shell, ejecuta:
gcloud services enable aiplatform.googleapis.com
Si la operación fue exitosa, verás Operation/... finished successfully en el terminal.
Antes de iniciar cualquier proyecto de Python, es una buena práctica crear un entorno virtual. Esto aísla las dependencias del proyecto, previniendo conflictos con otros proyectos o con los paquetes globales de Python del sistema. Dado que el Agent Development Kit (ADK) requiere Python 3.9 o superior, usaremos una herramienta como uv para gestionar tanto el entorno virtual como asegurar que se use la versión correcta de Python.
uv es una herramienta moderna, rápida y eficiente para gestionar proyectos y entornos de Python, combinando funcionalidades que tradicionalmente se encuentran en herramientas como pip, venv, pip-tools y pipx. Está escrita en Rust para mayor velocidad.
Aunque hay varios métodos para instalar uv, usaremos pip para obtenerlo desde PyPI, ya que Cloud Shell ya tiene pip disponible. Usamos uv porque es una herramienta extremadamente rápida y todo-en-uno que maneja tanto la instalación de paquetes (como pip) como los entornos virtuales (como venv), simplificando nuestro flujo de trabajo.
pip install uv
Después de la instalación, debes reiniciar el terminal de Cloud Shell para que el sistema pueda reconocer el nuevo comando uv.
exit en el terminal de Cloud Shell>_) en la esquina superior derechauv --version
uv init ai-agents-adk
cd ai-agents-adk
uv venv --python 3.12
uv add google-adk
uv pip list | grep google-adk
Si ves una línea de salida con google-adk y su versión, estás listo para proceder al siguiente paso.
Para cargar variables desde un archivo .env dentro de tu código Python, instala python-dotenv en el entorno y úsalo al inicio de tus scripts.
uv add python-dotenv
Haz clic en el siguiente botón para habilitar las APIs necesarias para este codelab en tu proyecto de Google Cloud: Vertex AI, Dataform y Compute Engine.
Ahora que tu entorno de desarrollo está configurado y listo, es momento de establecer los fundamentos para tu agente de IA. El Agent Development Kit (ADK) simplifica este proceso, requiriendo solo unos pocos archivos esenciales para definir la lógica central y la configuración de tu agente.
Estos tres archivos trabajan juntos para hacer que tu agente sea descubrible, ejecutable y configurable:
Usa los comandos a continuación para crear estos archivos dentro de una carpeta dedicada para tu agente asistente personal:
uv run adk create personal_assistant
Una vez ejecutado el comando, se te pedirá elegir algunas opciones para configurar tu agente. Para el primer paso, elige la opción 1 para usar el modelo gemini-2.0-flash-001, un modelo rápido y eficiente perfecto para tareas conversacionales.
Choose a model for the root agent:
1. gemini-2.0-flash-001
2. Other models (fill later)
Choose model (1, 2): 1
Para el segundo paso, elige Vertex AI (opción 2), la poderosa plataforma de IA gestionada de Google Cloud, como proveedor de servicios backend.
1. Google AI
2. Vertex AI
Choose a backend (1, 2): 2
Finalmente, se te pedirá confirmar tu ID de proyecto de Google Cloud y región. Si los valores pre-llenados (current-project-id y current-region) son los que intentas usar, simplemente presiona Enter para cada pregunta.
Enter Google Cloud project ID [current-project-id]:
Enter Google Cloud region [current-region]:
Deberías ver una salida similar en tu terminal.
Agent created in /home/<your-username>/ai-agent-adk/personal_assistant:
- .env
- __init__.py
- agent.py
Ahora, haz clic en el botón Open Editor en la parte superior de tu ventana de Cloud Shell. Hacer clic en ese botón te llevará a la ventana del Editor, lo que hace mucho más fácil explorar el contenido de tus archivos. El cambio puede tomar un momento; si te quedas atascado en una pantalla de carga por más de unos minutos, intenta refrescar tu navegador.

Nota: Puedes usar un editor de línea de comandos como Vim, pero necesitarás conocer los comandos para abrir y salir de Vim por tu cuenta.
Una vez que la ventana del Editor esté completamente cargada, navega a la carpeta personal-assistant. Verás los archivos necesarios como se mencionó arriba (agent.py, __init__.py, y .env). Exploremos el contenido.
Si no ves el archivo .env en la carpeta, ve a la barra de menú en la parte superior, haz clic en View, y luego selecciona Toggle Hidden Files. Esta es una configuración común ya que los archivos .env a menudo están ocultos por defecto para prevenir exposición accidental.

Este archivo instancia tu agente usando la clase Agent de la librería google.adk.agents.
from google.adk.agents import Agent
root_agent = Agent(
model='gemini-2.0-flash-001',
name='root_agent',
description='A helpful assistant for user questions.',
instruction='Answer user questions to the best of your knowledge',
)
from google.adk.agents import Agent: Esta línea importa la clase Agent necesaria de la librería ADK.root_agent = Agent(...): Aquí, estás creando una instancia de tu agente de IA.name="personal_assistant": Un identificador único para tu agente. Así es como ADK reconocerá y se referirá a tu agente.model="gemini-2.5-flash": Este parámetro crucial especifica qué Modelo de Lenguaje Grande (LLM) usará tu agente como su "cerebro" subyacente para entender, razonar y generar respuestas. gemini-2.5-flash es un modelo rápido y eficiente adecuado para tareas conversacionales.description="...": Esto proporciona un resumen conciso del propósito o capacidades del agente. La descripción es más para entendimiento humano o para otros agentes en un sistema multi-agente para entender qué hace este agente particular. A menudo se usa para logging, depuración, o al mostrar información sobre el agente.instruction="...": Este es el prompt del sistema que guía el comportamiento de tu agente y define su personalidad. Le dice al LLM cómo debe actuar y cuál es su propósito principal. En este caso, establece al agente como un "asistente útil". Esta instrucción es clave para dar forma al estilo conversacional y capacidades del agente.Este archivo es necesario para que Python reconozca personal-assistant como un paquete, permitiendo a ADK importar correctamente tu archivo agent.py.
from . import agent
from . import agent: Esta línea realiza una importación relativa, diciéndole a Python que busque un módulo llamado agent (que corresponde a agent.py) dentro del paquete actual (personal-assistant). Esta línea simple asegura que cuando ADK trata de cargar tu agente personal-assistant, puede encontrar e inicializar el root_agent definido en agent.py. Incluso si está vacío, la presencia de __init__.py es lo que hace del directorio un paquete de Python.Este archivo contiene configuraciones específicas del entorno y credenciales sensibles.
GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID
GOOGLE_CLOUD_LOCATION=YOUR_PROJECT_LOCATION
GOOGLE_GENAI_USE_VERTEXAI: Esto le dice al ADK que intentas usar el servicio Vertex AI de Google para tus operaciones de IA Generativa. Esto es importante para aprovechar los servicios gestionados de Google Cloud y modelos avanzados.GOOGLE_CLOUD_PROJECT: Esta variable contendrá el identificador único de tu Proyecto de Google Cloud. ADK necesita esto para asociar correctamente tu agente con tus recursos en la nube y habilitar la facturación.GOOGLE_CLOUD_LOCATION: Esto especifica la región de Google Cloud donde están ubicados tus recursos de Vertex AI (ej. us-central1). Usar la ubicación correcta asegura que tu agente pueda comunicarse efectivamente con los servicios de Vertex AI en esa región.Con los tres archivos en su lugar, estás listo para ejecutar el agente directamente desde la terminal. Para hacer esto, necesitas abrir la ventana de Terminal. ¡Hacer clic en Terminal en la barra de menú y luego elegir New Terminal hace el trabajo!

Una vez que la terminal esté disponible, puedes iniciar el agente usando el comando adk run. Como esta es una nueva ventana de terminal y estamos usando uv, primero necesitarás navegar a la carpeta ai-agent-adk y luego prefijar el comando adk run con uv run.
Escribe estos comandos en la terminal:
cd ai-agents-adk
uv run adk run personal_assistant
Si todo está configurado correctamente, verás una salida similar en tu terminal.
...
Running agent personal_assistant, type exit to exit.
[user]: hello. What can you do for me?
[personal_assistant]: Hello! I am a large language model, trained by Google. I can do many things to help you, such as:
...
¡Adelante y conversa con el agente! Notarás que la salida a veces está formateada con Markdown, lo cual puede ser difícil de leer en la terminal. En el siguiente paso, usaremos la Development UI para una experiencia mucho más rica, similar a una aplicación de chat.
El Agent Development Kit también ofrece una forma conveniente de lanzar tu agente como una aplicación de chat usando su development UI. Simplemente usa el comando adk web en lugar de adk run.
Si aún estás en la sesión anterior, simplemente escribe exit en la terminal para cerrarla. Una vez que la sesión anterior esté cerrada, escribe el siguiente comando en la terminal:
uv run adk web
Deberías ver una salida similar en la terminal:
...
INFO: Started server process [4978]
INFO: Waiting for application startup.
+------------------------------------------------------+
| ADK Web Server started |
| |
| For local testing, access at http://localhost:8000. |
+------------------------------------------------------+
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
Tienes dos opciones para acceder a la development UI:
http://localhost:8000) directamente en tu terminal.8000, o el número mostrado después de http://localhost:) y haz clic en Change and Preview para verlo.Entonces verás la interfaz similar a una aplicación de chat aparecer en tu navegador. ¡Adelante y conversa con tu asistente personal a través de esta interfaz! Notarás que el formateo Markdown ahora se muestra correctamente, y esta UI también te permite depurar e investigar cada evento de mensajería, el estado del agente, las solicitudes del usuario y mucho más. ¡Feliz conversación!

Ahora, dentro de Google Cloud Shell, clona el repositorio del taller y revisa su contenido.
git clone https://github.com/alarcon7a/adk-agent-101-workshop.git
cd adk-agent-101-workshop
Lista los archivos del proyecto para familiarizarte con su estructura:
ls -la
Opcionalmente, abre el editor integrado de Cloud Shell para explorar carpetas y archivos con una UI:
cloudshell open-editor
Con esto tendrás el código del workshop listo para seguir los siguientes pasos en Cloud Shell.
Abre el flujo de importación en Google Colab Enterprise con el siguiente enlace. Asegúrate de usar el proyecto de Google Cloud correcto.
notebook_guia.ipynb.Hasta ahora hemos trabajado con el ADK directamente. En este paso conocerás Agents CLI, la herramienta oficial de Google que unifica todo el ciclo de vida del desarrollo de agentes — desde el scaffolding inicial hasta el despliegue en producción — en una sola CLI diseñada para trabajar con asistentes de código con IA.
Agents CLI es la columna vertebral programática del Agent Development Life Cycle (ADLC) en Google Cloud. Resuelve un problema crítico: cuando los asistentes de IA (Claude Code, Gemini CLI, Antigravity, Codex) deben integrar componentes dispersos de Google Cloud, pierden tiempo y contexto valioso. Agents CLI proporciona una línea directa legible por máquina a toda la pila de agentes de Google Cloud.
Agents CLI funciona de dos modos:
uv — gestor de paquetes (ya instalado en pasos anteriores)El método recomendado instala la CLI y las skills contextuales en un solo paso:
uvx google-agents-cli setup
Métodos alternativos:
# Con pipx
pipx install google-agents-cli && agents-cli setup
# Con venv + pip
pip install google-agents-cli && agents-cli setup
# Solo skills (sin instalar la CLI globalmente)
npx skills add google/agents-cli
gcloud, Agents CLI usa tus Application Default Credentials automáticamente. Alternativamente, exporta tu Gemini API Key: export GEMINI_API_KEY="tu-clave"
Agents CLI inyecta 7 skills especializadas en tu asistente de codificación:
| Skill | Función |
|---|---|
google-agents-cli-workflow | Ciclo de vida completo, preservación de código, selección de modelo |
google-agents-cli-adk-code | API Python de ADK, agentes, herramientas, orquestación |
google-agents-cli-scaffold | Scaffolding de proyecto: create, enhance, upgrade |
google-agents-cli-eval | Ciclo de evaluación, datasets, métricas, análisis |
google-agents-cli-deploy | Despliegue en Agent Runtime, Cloud Run, GKE, CI/CD |
google-agents-cli-publish | Registro y publicación en Gemini Enterprise |
google-agents-cli-observability | Cloud Trace, logging, integraciones de terceros |
Antigravity es la herramienta de desarrollo con IA de Google Cloud que se integra nativamente con Agents CLI. El flujo es idéntico en Claude Code, Gemini CLI o Codex.
Dentro de tu asistente de código (Antigravity, Claude Code, etc.), verifica que las skills estén disponibles:
/skills
Deberías ver listadas las 7 skills de google-agents-cli.
Simplemente describe lo que quieres construir. Agents CLI se encarga del resto:
# Ejemplo con Antigravity / Claude Code / Gemini CLI:
"Usa agents-cli para construir un asesor financiero de inversiones
que analice el perfil de riesgo del usuario, consulte precios de
mercado en tiempo real, sugiera portafolios diversificados y
alerte sobre oportunidades o riesgos relevantes."
El asistente de IA:
DESIGN_SPEC.md con los requerimientosagents-cli create para generar el scaffoldingapp/agent.py con la lógica del agente y sus herramientasConstruiremos un asesor financiero inteligente que sigue las mejores prácticas de ADK: herramientas especializadas, instrucciones precisas y salvaguardas de seguridad.
# Crea el agente con scaffolding listo para producción
agents-cli create finance-advisor --prototype --yes
# Navega al directorio del proyecto
cd finance-advisor
# Instala las dependencias del proyecto
agents-cli install
ls -la
Verás una estructura como esta:
finance-advisor/
├── app/
│ ├── agent.py # Lógica principal del agente y herramientas
│ └── __init__.py
├── tests/
│ └── eval/
│ ├── evalsets/ # Casos de prueba financieros
│ └── eval_config.json
├── DESIGN_SPEC.md # Especificación del agente
├── pyproject.toml
└── .env
Reemplaza el contenido de app/agent.py con el siguiente código. Sigue las mejores prácticas de ADK: herramientas con tipado estricto, docstrings claros y una instrucción de sistema detallada.
from google.adk.agents import Agent
# --- Herramientas especializadas del agente ---
def get_market_data(ticker: str) -> dict:
"""Obtiene precio actual y variación diaria de un activo financiero.
Args:
ticker: Símbolo del activo (ej. 'AAPL', 'BTC-USD', 'SPY').
Returns:
Diccionario con precio, variación porcentual y volumen del día.
"""
# En producción: conectar con API de mercado (Yahoo Finance, Polygon.io, etc.)
market_data = {
"AAPL": {"price": 213.50, "change_pct": 1.2, "volume": "58M", "currency": "USD"},
"BTC-USD": {"price": 67800.00, "change_pct": -2.4, "volume": "32B", "currency": "USD"},
"SPY": {"price": 528.10, "change_pct": 0.6, "volume": "82M", "currency": "USD"},
"GLD": {"price": 234.70, "change_pct": 0.3, "volume": "8M", "currency": "USD"},
}
return market_data.get(
ticker.upper(),
{"error": f"Ticker '{ticker}' no encontrado. Usa: AAPL, BTC-USD, SPY, GLD."}
)
def analyze_risk_profile(age: int, monthly_income: float, risk_tolerance: str) -> dict:
"""Genera un perfil de riesgo inversor personalizado.
Args:
age: Edad del usuario en años.
monthly_income: Ingreso mensual neto en USD.
risk_tolerance: Nivel declarado de tolerancia ('bajo', 'medio', 'alto').
Returns:
Perfil de riesgo con categoría, horizonte de inversión y distribución sugerida.
"""
horizon_years = max(1, 65 - age)
profiles = {
"bajo": {"category": "Conservador", "equity": 20, "bonds": 60, "cash": 20},
"medio": {"category": "Moderado", "equity": 50, "bonds": 40, "cash": 10},
"alto": {"category": "Agresivo", "equity": 80, "bonds": 15, "cash": 5},
}
base = profiles.get(risk_tolerance.lower(), profiles["medio"])
return {
**base,
"horizon_years": horizon_years,
"monthly_investable": round(monthly_income * 0.20, 2),
}
def suggest_portfolio(risk_category: str, investable_amount: float) -> dict:
"""Sugiere un portafolio diversificado según perfil de riesgo y capital disponible.
Args:
risk_category: Categoría del perfil ('Conservador', 'Moderado', 'Agresivo').
investable_amount: Monto mensual disponible para invertir en USD.
Returns:
Portafolio con ETFs/activos recomendados y monto asignado a cada uno.
"""
portfolios = {
"Conservador": [
{"asset": "BND (Bonos EE.UU.)", "pct": 50},
{"asset": "SPY (S&P 500)", "pct": 20},
{"asset": "GLD (Oro)", "pct": 20},
{"asset": "Cash / Fondo de emergencia","pct": 10},
],
"Moderado": [
{"asset": "SPY (S&P 500)", "pct": 40},
{"asset": "QQQ (Nasdaq-100)", "pct": 20},
{"asset": "BND (Bonos EE.UU.)", "pct": 25},
{"asset": "GLD (Oro)", "pct": 15},
],
"Agresivo": [
{"asset": "QQQ (Nasdaq-100)", "pct": 40},
{"asset": "VTI (Mercado total EE.UU.)", "pct": 25},
{"asset": "VXUS (Internacional)", "pct": 20},
{"asset": "BTC-USD (Bitcoin)", "pct": 15},
],
}
allocations = portfolios.get(risk_category, portfolios["Moderado"])
return {
"portfolio": [
{**item, "amount_usd": round(investable_amount * item["pct"] / 100, 2)}
for item in allocations
],
"rebalance_frequency": "Trimestral",
"disclaimer": "Sugerencia educativa — no constituye asesoría financiera regulada.",
}
def get_financial_news(topic: str) -> dict:
"""Obtiene titulares financieros recientes sobre un tema o activo.
Args:
topic: Tema de búsqueda (ej. 'inflación', 'fed', 'bitcoin', 'tech stocks').
Returns:
Lista de titulares relevantes con fuente y fecha.
"""
# En producción: integrar con NewsAPI, Google News o Vertex AI Search
news_mock = {
"inflación": [
{"title": "Fed mantiene tasas ante datos mixtos de inflación", "source": "Reuters", "date": "2026-06-12"},
{"title": "IPC de mayo sube 0.2%, en línea con expectativas", "source": "Bloomberg", "date": "2026-06-11"},
],
"bitcoin": [
{"title": "Bitcoin cae 2.4% en medio de incertidumbre regulatoria", "source": "CoinDesk", "date": "2026-06-12"},
{"title": "ETFs de Bitcoin registran salidas netas por tercera semana", "source": "The Block", "date": "2026-06-11"},
],
}
key = next((k for k in news_mock if k in topic.lower()), None)
return {"headlines": news_mock.get(key, [{"title": f"Sin noticias recientes para: {topic}", "source": "-", "date": "-"}])}
# --- Definición del agente raíz ---
root_agent = Agent(
name="finance_advisor",
model="gemini-flash-latest",
description="Asesor financiero de inversiones con análisis de perfil de riesgo, datos de mercado y sugerencias de portafolio diversificado.",
instruction="""Eres un asesor financiero educativo especializado en inversiones personales.
CAPACIDADES:
- Analizas el perfil de riesgo del usuario según edad, ingresos y tolerancia al riesgo.
- Consultas precios y variaciones de mercado en tiempo real.
- Sugieres portafolios diversificados con ETFs y activos globales.
- Provees contexto de noticias financieras relevantes.
FLUJO DE CONVERSACIÓN:
1. Si el usuario no tiene perfil definido, recopila: edad, ingreso mensual neto y tolerancia al riesgo (bajo/medio/alto).
2. Usa analyze_risk_profile para generar el perfil antes de cualquier recomendación.
3. Usa suggest_portfolio con el perfil resultante para presentar la distribución del portafolio.
4. Complementa con get_market_data para activos específicos y get_financial_news para contexto de mercado.
RESTRICCIONES Y ÉTICA:
- SIEMPRE incluye el disclaimer: "Esta información es educativa y no constituye asesoría financiera regulada."
- NUNCA garantices rendimientos específicos ni prometas ganancias futuras.
- Para inversiones mayores a $50,000 USD, recomienda consultar un asesor financiero certificado (CFP o similar).
- Informa sobre riesgos de volatilidad, especialmente en activos de alta especulación como criptomonedas.
- Si el usuario expresa angustia financiera severa, prioriza orientación a recursos de apoyo.
ESTILO DE RESPUESTA:
- Usa datos concretos y porcentajes para fundamentar recomendaciones.
- Explica el razonamiento detrás de cada sugerencia en lenguaje accesible.
- Responde en el idioma del usuario.
- Estructura las respuestas con secciones claras cuando la información sea extensa.""",
tools=[get_market_data, analyze_risk_profile, suggest_portfolio, get_financial_news],
)
agents-cli playground
El playground web estará disponible en http://localhost:8080. Prueba estas conversaciones:
agents-cli run "Tengo 28 años, ingreso de 3500 dólares al mes y tolerancia de riesgo alta. ¿Qué me recomiendas?"
Respuesta esperada:
## Perfil de Riesgo: Agresivo
Horizonte de inversión: ~37 años | Capital invertible estimado: $700/mes
## Portafolio Sugerido
| Activo | % | Monto/mes |
|---------------------------|---|-----------|
| QQQ (Nasdaq-100) |40%| $280 |
| VTI (Mercado total EE.UU.)|25%| $175 |
| VXUS (Internacional) |20%| $140 |
| BTC-USD (Bitcoin) |15%| $105 |
Frecuencia de rebalanceo: Trimestral
⚠️ Esta información es educativa y no constituye asesoría financiera regulada.
agents-cli run "¿Cuánto cuesta el SPY hoy y cómo va el mercado?"
SPY (S&P 500 ETF): $528.10 (+0.6% hoy) | Volumen: 82M
El mercado presenta sesgo positivo moderado. Para contexto más amplio,
consulta noticias sobre inflación o tasas de la Fed.
⚠️ Esta información es educativa y no constituye asesoría financiera regulada.
Crea el archivo tests/eval/evalsets/finance.evalset.json con casos de prueba representativos:
[
{
"input": "Tengo 45 años, gano $6000/mes y tolerancia baja al riesgo.",
"expected_tool_calls": ["analyze_risk_profile", "suggest_portfolio"],
"criteria": "Debe clasificar como Conservador y sugerir 50%+ en bonos."
},
{
"input": "¿Qué pasa si invierto todo en Bitcoin?",
"expected_behavior": "Debe advertir sobre volatilidad extrema e incluir disclaimer.",
"criteria": "Respuesta incluye advertencia de riesgo y recomienda diversificación."
},
{
"input": "Garantízame un 20% de retorno anual.",
"expected_behavior": "Debe declinar garantizar rendimientos.",
"criteria": "No promete rendimientos fijos. Incluye disclaimer regulatorio."
}
]
# Ejecutar evaluaciones
agents-cli eval run
# Comparar versiones al iterar la instrucción del agente
agents-cli eval compare evals/run_v1.json evals/run_v2.json
eval_config.json. Presta especial atención a los casos donde el agente debe rechazar garantías o escalar a un asesor humano.
# Opción A: Agent Runtime (recomendado para APIs de producción con SLA)
agents-cli scaffold enhance --deployment-target agent_runtime
agents-cli infra single-project
agents-cli deploy
# Opción B: Cloud Run (recomendado para integración con backends existentes)
agents-cli scaffold enhance --deployment-target cloud_run
agents-cli deploy
# Publicar en Gemini Enterprise (para equipos corporativos)
agents-cli publish gemini-enterprise
El flujo completo del agente de finanzas con Agents CLI:
# 1. Instalar
uvx google-agents-cli setup
# 2. Crear y configurar
agents-cli create finance-advisor --prototype --yes
cd finance-advisor && agents-cli install
# 3. Desarrollar (editar app/agent.py con herramientas y lógica)
# 4. Probar interactivamente
agents-cli playground
agents-cli run "Tengo 35 años, gano 5000 al mes, riesgo medio"
# 5. Evaluar con casos financieros
agents-cli eval run
agents-cli eval compare evals/run_v1.json evals/run_v2.json
# 6. Desplegar a producción
agents-cli deploy
# 7. Publicar para equipos
agents-cli publish gemini-enterprise
claude), Gemini CLI (gemini), Codex y cualquier otro agente que tenga las skills instaladas. El mismo flujo aplica en todos ellos.
Selecciona el Proyecto de Google Cloud donde habilitarás las APIs y crearás la clave.
# Reemplaza PROJECT_ID por tu proyecto
gcloud config set project PROJECT_ID
Habilita las APIs principales de Maps (servicios actuales) y la API de gestión de claves.
gcloud services enable \
apikeys.googleapis.com \
maps-backend.googleapis.com \
geocoding-backend.googleapis.com \
places.googleapis.com \
routes.googleapis.com \
roads.googleapis.com \
static-maps-backend.googleapis.com \
street-view-image-backend.googleapis.com
directions-backend.googleapis.com, distance-matrix-backend.googleapis.com, places-backend.googleapis.com.
Crea una clave restringida por APIs. Luego obtén el valor de la clave para usarla en tu app.
# Opción recomendada (servicios actuales)
KEY_RES=$(gcloud alpha services api-keys create \
--display-name="Maps API Key" \
--api-target=service=maps-backend.googleapis.com \
--api-target=service=geocoding-backend.googleapis.com \
--api-target=service=places.googleapis.com \
--api-target=service=routes.googleapis.com \
--format='value(name)')
# Obtener el string de la clave
gcloud alpha services api-keys get-key-string \
--name="$KEY_RES" \
--format='value(keyString)'
# Listar claves existentes (opcional)
gcloud alpha services api-keys list
# ------------------------------------------------------
# Opción completa (legacy + adicionales) según tu pedido
# (se corrigió el último backslash para evitar error de shell)
gcloud alpha services api-keys create \
--display-name="Maps API Key Complete" \
--api-target=service=maps-backend.googleapis.com \
--api-target=service=geocoding-backend.googleapis.com \
--api-target=service=places-backend.googleapis.com \
--api-target=service=distancematrix.googleapis.com \
--api-target=service=elevation-backend.googleapis.com \
--api-target=service=directions-backend.googleapis.com \
--api-target=service=roads.googleapis.com \
--api-target=service=static-maps-backend.googleapis.com
gcloud alpha services api-keys update según tu plataforma.