View in English
Construye un agente investigador en segundo plano
Oct 16, 2025
Updated: Jun 25, 2026

Construye un agente investigador en segundo plano

Notebook de la lección: 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

  • Reutilizar get_financial_context y sumar una herramienta 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.

3.1 Preparativos iniciales

  • Asegura tener google-adk y yfinance disponibles. Usa un piso de versión reciente, por ejemplo google-adk>=1.16.0, y deja anotado con qué versión exacta probaste el notebook para que sea reproducible, por ejemplo google-adk==1.16.0.

Nota: la API de ADK avanza rápido. Si reproduces esto bastante después de la publicación, instala la versión más reciente y revisa el changelog por si cambió alguna firma.google-adk en PyPI antes de fijarlo.

  • Credenciales: ADK lee .env cuando corres adk web o adk run. Si usas load_env() en el notebook, úsalo solo como helper y mantén .env como fuente de verdad en entornos reales.
  • Trabaja en un entorno virtual para evitar conflictos entre lecciones.

Instala las dependencias:

pip install "google-adk>=1.16.0" yfinance

3.2 Configuración del proyecto

Crea la app base con la estructura prevista:

app04/
  agent.py     # implementación del agente coordinador
  .env         # configuración sensible
  __init__.py  # paquete Python

3.3 Patrón Coordinator Dispatcher

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.

3.4 Herramientas y persistencia

Reutilizamos get_financial_context para enriquecer titulares y añadimos save_news_to_markdown para persistir el reporte.

Advertencia sobre `yfinance`: get_financial_context depende de yfinance, que consume datos no oficiales de Yahoo Finance. Es una fuente conocida por romperse sin previo aviso cuando Yahoo cambia su API interna. Si las métricas dejan de llegar, actualiza yfinance o prevé un plan B en tu pipeline.

Notas de estado y persistencia:

  • Las modificaciones a tool_context.state durante 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 o artefactos.
  • La escritura de archivo en save_news_to_markdown genera el artefacto final de forma explícita.

3.5 Reportes estructurados

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.

3.6 Instrucciones avanzadas: agente coordinador

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 la plantilla y save_news_to_markdown. Sin resultados intermedios ni conversación adicional.

3.7 Pruebas en la Web UI

Ejecuta la UI:

# Desde la carpeta padre y luego selecciona "app04"
adk web

# O directo a la app
adk web --port 8000 app04

En Windows, usa --no-reload si es necesario. Detén el proceso con Ctrl-C.

Guion sugerido:

  1. "Consígueme las últimas noticias de IA".
  2. El agente confirma el inicio y se queda en silencio.
  3. Llega el mensaje final confirmando ai_research_report.md.
  4. 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 o adk api_server, arranca con la bandera --memory_service_uri=agentengine://<agent_engine_id>.

Nota: consulta la guía de memoria en la documentación oficial de ADK: Memory en ADK.agentengine:// y el naming de Memory Bank / Agent Engine han estado en evolución; confirma el esquema vigente contra la documentación de 2026 antes de publicar.

3.8 Visualización del reporte

Desde el notebook:

from IPython.display import Markdown, display

with open("ai_research_report.md", encoding="utf-8") as f:
    display(Markdown(f.read()))

Buenas prácticas y próximos pasos

  • Versiona ai_research_report.md solo si necesitas auditar resultados; si no, ignóralo.
  • Parametriza la cantidad de noticias y el 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.

Ejercicios propuestos

  1. Añade una segunda herramienta de persistencia que guarde el reporte también en formato JSON, reutilizando el mismo estado del agente.
  2. Parametriza la cantidad de noticias (por ejemplo, 3 o 10) mediante una variable que el coordinador lea desde tool_context.state.
  3. Sustituye el tema "noticias de IA" por uno de tu interés y ajusta la plantilla del reporte para ese dominio.

Resumen en 3 puntos

  1. El patrón Coordinator Dispatcher separa la conversación del trabajo: el agente solo habla al iniciar y al terminar, y todo lo demás ocurre en silencio.
  2. Reutilizamos get_financial_context y sumamos save_news_to_markdown para producir un artefacto Markdown claro y persistente.
  3. Una plantilla estructurada en las instrucciones del agente garantiza reportes consistentes que puedes probar desde la ADK Web UI.

Eso es todo, espero que este post te sea de utilidad y lo puedas aplicar a algún proyecto que tengas en mente. Déjame un comentario si te sirvió, si quieres añadir alguna opinión o si tienes alguna duda, y recuerda que si te gustó también puedes compartirlo usando los links a las redes sociales aquí abajo.

Lección anterior: ADK clase 2: potencia tu agente con herramientas personalizadas

Siguiente lección: 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 (ver curso). Este blog busca acercar material de ADK al español.

Sebastian Gomez

Sebastian Gomez

Creador de contenido principalmente acerca de tecnología.

Leave a Reply

0 Comments

Advertisements

Related Posts

Categorias