Sebastian Gomez
Construye un agente investigador en segundo plano
Notebook de la lección: https://github.com/seagomezar/ADK-Blog-Posts/blob/main/Lesson_3.ipynb
En esta tercera lección transformamos al asistente conversacional en un coordinador silencioso que investiga, compone un reporte y solo te habla dos veces. Reutilizamos herramientas de la lección anterior y agregamos persistencia de archivo para obtener un artefacto claro: un reporte Markdown. 🚀
Panorama general- Reusar
get_financial_contexty sumar un tool para guardar Markdown. - Implementar el patrón Coordinator–Dispatcher: ejecuta en segundo plano y responde dos veces.
- Forzar salidas estructuradas con una plantilla Markdown consistente.
- Probar la experiencia desde la ADK Web UI y visualizar el reporte.
- Asegura
google-adk>=1.12.0yyfinancedisponibles. - Credenciales: ADK lee
.envcuando corresadk web/adk run. Si usasload_env()en notebook, úsalo solo como helper y mantén.envcomo fuente en entornos reales. - Trabaja en un entorno virtual para evitar conflictos entre lecciones.
- Crea la app base:
- Estructura prevista:
app04/agent.py→ implementación del agente coordinador..env→ configuración sensible.__init__.py→ paquete Python.
El reto
- Un agente que “lee en voz alta” cada resultado genera ruido y carga cognitiva.
La solución
- Separar la interacción en dos fases:
- Coordinación: reconoce la orden y avisa que empieza a trabajar.
- Ejecución silenciosa: busca, cruza datos y genera un reporte sin interrumpir.
- Reusamos
get_financial_contextpara enriquecer titulares. - Añadimos
save_news_to_markdownpara persistir el reporte:
Notas de estado y persistencia:
- Las modificaciones a
tool_context.statedurante la ejecución quedan registradas por el framework y se persisten vía el runner; no implican almacenamiento externo a menos que configures servicios de memoria/artefactos. - La escritura de archivo en
save_news_to_markdowngenera el artefacto final de forma explícita.
Plantilla recomendada (incrustada en las instrucciones del agente):
- Título, fecha y contexto.
- Lista numerada de 5 noticias con: titular, compañía y ticker, métrica financiera (
get_financial_context) y resumen breve.
El agente cambia de “presentador” a “coordinador de investigación” con reglas estrictas:
- Dos mensajes máximo:
- Inicio: “Ok, empiezo la investigación; dame un momento…”.
- Cierre: “Listo, guardé el reporte en
ai_research_report.md”.
- Trabajo en segundo plano entre ambos mensajes:
google_search→ extraer tickers →get_financial_context→ formatear según plantilla →save_news_to_markdown. - Sin resultados intermedios ni conversación adicional.
- Ejecuta la UI:
- Desde carpeta padre:
adk weby selecciona "app04". - O directo:
adk web --port 8000 app04 - En Windows, usa
--no-reloadsi es necesario. Detén conCtrl-C.
- Desde carpeta padre:
- Guion sugerido:
- “Consígueme las últimas noticias de IA”.
- El agente confirma el inicio y se queda en silencio.
- Mensaje final confirmando
ai_research_report.md. - Abre el archivo y valida formato y contenido.
- Cierra el proceso al terminar:
pkill -f "adk web". ⚠️
📌 Opcional (memoria de largo plazo):
- Para usar Vertex AI Memory Bank desde
adk web/adk api_server, arranca con--memory_service_uri=agentengine://<agent_engine_id>según adk-docsdocs/sessions/memory.md.
Desde el notebook:
from IPython.display import Markdown, display
with open("ai_research_report.md", encoding="utf-8") as f:
display(Markdown(f.read()))
- Versiona
ai_research_report.mdsolo si necesitas auditar resultados; si no, ignóralo. - Parametriza cantidad de noticias y formato del reporte si apuntas a pipelines (podcast, boletines).
- Para producción, evalúa almacenamiento externo (buckets, bases de datos).
- Practica el mismo patrón con otras temáticas para afinar prompts y plantillas.
— Anterior lección ➜ https://www.sebastian-gomez.com/category/inteligencia-artificial/adk-clase-2-potencia-tu-agente-con-herramientas-personalizadas
Siguiente lección ➜ https://www.sebastian-gomez.com/category/inteligencia-artificial/adk-clase-4-callbacks-y-guardrails-para-agentes-confiables
Este contenido se basa en el curso “Building Live Voice Agents with Google’s ADK!” de DeepLearning.AI (https://learn.deeplearning.ai/courses/building-live-voice-agents-with-googles-adk/). Este blog busca acercar material de ADK al español.
Sebastian Gomez
Creador de contenido principalmente acerca de tecnología.