El problema
Investigar a fondo un tema con un LLM choca con dos cosas:
- Consultas ambiguas. Si alguien pide «hazme un informe sobre IA en logística», el agente busca a ciegas y gasta tiempo y tokens.
- Ruido web. Las páginas descargadas traen menús, JavaScript, avisos de cookies y publicidad. Todo eso llena el contexto y empuja al modelo a alucinar.
La solución
Entrada del usuario
Si la consulta es ambigua, pausa y solicita preguntas aclaratorias antes de gastar tokens.
Sub-agentes especialistas en paralelo
Herramientas y filtrado
Observabilidad
Diseñé con LangGraph un sistema multiagente de investigación profunda que trabaja en cinco pasos, unos secuenciales y otros concurrentes:
- Antes de hacer ninguna búsqueda, el nodo
ClarifyWithUseranaliza la consulta con salida estructurada (Pydantic). Si detecta ambigüedad, pausa y pregunta lo necesario para fijar el objetivo. - Con el objetivo claro, el supervisor divide la investigación en ángulos complementarios y lanza varios sub-agentes en paralelo con
asyncio.gather. - Cada agente consulta la API de Tavily, convierte el HTML a texto limpio (
html2text) y pasa una compresión semántica rápida. Solo los hechos y las citas relevantes entran en el estado. - Conecto herramientas locales y remotas con el estándar abierto Model Context Protocol (
MultiServerMCPClient), para usar archivos y APIs sin depender de un formato propietario. - Un agente redactor reúne los hallazgos en un informe en Markdown, con secciones ejecutivas, verificación de hechos y citas cruzadas a las fuentes originales.
Stack desglosado
- Orquestación: LangGraph (
StateGraph,MessagesState,Command). - Concurrencia: Python
asyncio(asyncio.gatherpara búsqueda simultánea). - Extracción web: Tavily Search API,
html2texty filtros extractivos. - Protocolos y contratos: Model Context Protocol (MCP) y Pydantic para tipado estricto.
- Observabilidad: LangSmith para trazabilidad completa de tokens, latencias por nodo y depuración.
Resultados y aprendizajes
Lo que funcionó fue combinar la aclaración previa con la ejecución en paralelo. Resolver la ambigüedad antes de buscar ahorra decenas de miles de tokens, y buscar en paralelo bajó el tiempo de generar un informe de minutos a menos de 45 segundos.
Lo que aprendí: en un sistema de investigación profunda lo difícil no es buscar, es saber qué descartar. Comprimir por el camino es lo que mantiene la precisión y los costes de API bajo control.