Skip to main content
Version: 2.00

Deep Research

Deep Research

El Agente de Investigación Profunda (Deep Research Agent) es un sistema multi-agente sofisticado que puede realizar investigaciones exhaustivas sobre cualquier tema. Para ello, desglosa consultas complejas en tareas manejables, despliega agentes de investigación especializados y sintetiza los hallazgos en informes detallados.

Este enfoque está inspirado en el blog de Anthropic: Cómo construimos nuestro sistema de investigación multi-agente.

Resumen General​

El flujo de trabajo del Agente de Investigación Profunda consta de varios componentes clave que trabajan en conjunto:

  1. Agente Planificador (Planner Agent): Analiza la consulta de investigación y genera una lista de tareas de investigación especializadas.
  2. Iteración: Crea múltiples agentes de investigación para trabajar en diferentes aspectos de la consulta.
  3. SubAgentes de Investigación (Research SubAgents): Agentes individuales que realizan investigaciones focalizadas utilizando la búsqueda web y otras herramientas.
  4. Agente Escritor (Writer Agent): Sintetiza todos los hallazgos en un informe coherente y completo.
  5. Agente de Condición (Condition Agent): Determina si se necesita investigación adicional o si los hallazgos son suficientes.
  6. Bucle (Loop): Regresa al Agente Planificador para mejorar la calidad de la investigación.

"paso actual"

Paso 1: Crear el Nodo de Inicio (Start)​

"paso actual"

  1. Comience agregando un nodo Start a su lienzo.
  2. Configure el nodo Start con Form Input (Entrada de Formulario) para recopilar la consulta de investigación de los usuarios.
  3. Configure el formulario de la siguiente manera:
    • Título del Formulario: "Investigación"
    • Descripción del Formulario: "Un agente de investigación que recibe una consulta y devuelve un informe detallado"
    • Tipos de Entrada de Formulario: Agregue una entrada de cadena (string) con la etiqueta "Consulta" y el nombre de variable "query".
  4. Inicialice el Estado del Flujo (Flow State) con dos variables clave:
    • subagents: Para almacenar la lista de tareas de investigación que llevarán a cabo los subagentes.
    • findings: Para acumular los resultados de la investigación.

"paso actual"

Paso 2: Agregar el Agente Planificador (Planner Agent)​

"paso actual"

  1. Conecte un nodo LLM al nodo Start.
  2. Configure el mensaje del sistema para que actúe como un líder de investigación experto con las siguientes responsabilidades clave:
    • Analizar y desglosar las consultas de los usuarios.
    • Crear planes de investigación detallados.
    • Generar tareas específicas para los subagentes.
    • Ejemplo de prompt - research_lead_agent.md

"paso actual"

  1. Configure la Salida Estructurada JSON (JSON Structured Output) para devolver una lista de tareas para los subagentes:
{
"task": {
"type": "string",
"description": "The research task for subagent"
}
}
  1. Actualice el estado del flujo almacenando la lista de subagentes generada.

"paso actual"

Paso 3: Crear el Bloque de Iteración de SubAgentes​

"paso actual"

  1. Agregue un nodo Iteration (Iteración).
  2. Conéctelo a la salida del Planificador (Planner).
  3. Configure la entrada de iteración al estado del flujo: {{ $flow.state.subagents }}. Por cada elemento en la matriz, se generará un subagente para llevar a cabo la tarea de investigación. Ejemplo:

"paso actual"

Paso 4: Construir el SubAgente de Investigación​

  1. Dentro del bloque de iteración, agregue un nodo Agent.
  2. Configure el mensaje del sistema para que actúe como un subagente de investigación enfocado con:
    • Capacidades claras de comprensión de tareas.
    • Planificación eficiente de la investigación (2-5 llamadas a herramientas por tarea).
    • Evaluación de la calidad de las fuentes.
    • Uso de herramientas en paralelo para mayor eficiencia.
    • Ejemplo de prompt - research_subagent.md

"paso actual"

  1. Agregue las siguientes herramientas de investigación (puede usar sus herramientas preferidas):
    • Google Search: Para enlaces de búsqueda web.
    • Web Scraper: Para la extracción de contenido web. Esto extraerá el contenido de los enlaces de Google Search.
    • ArXiv Search: Para buscar y cargar contenido de artículos académicos.

"paso actual"

  1. Establezca el mensaje del usuario para pasar la tarea de la iteración actual: {{ $iteration.task }}

Paso 5: Agregar el Agente Escritor (Writer Agent)​

"paso actual"

  1. Conecte un nodo LLM después de que se complete la iteración.
  2. Se necesita un LLM de contexto grande como Gemini (con un tamaño de contexto de 1 a 2 millones) para sintetizar todos los hallazgos y generar el informe.
  3. Configure el mensaje del sistema para que actúe como un escritor de investigación experto que:
    • Preserve el contexto completo de los hallazgos de la investigación.
    • Mantenga la integridad de las citas.
    • Agregue estructura y claridad.
    • Genere informes profesionales en formato Markdown.
  4. Configure el mensaje del usuario para incluir:
    • Tema de investigación: {{ $form.query }}
    • Hallazgos existentes: {{ $flow.state.findings }}
    • Nuevos hallazgos: {{ iterationAgentflow_0 }}

"paso actual"

  1. Actualice {{ $flow.state.findings }} con la salida del Agente Escritor (Writer Agent).

"paso actual"

Paso 6: Implementar la Verificación de Condición​

"paso actual"

  1. Agregue un Condition Agent (Agente de Condición).
  2. Configure la lógica de condición para determinar si se necesita investigación adicional.
  3. Configure dos escenarios:
    • "Se necesitan más subagentes"
    • "Los hallazgos son suficientes"
  4. Proporcione contexto de entrada que incluya:
    • Tema de investigación
    • Lista actual de subagentes
    • Hallazgos acumulados

"paso actual"

Paso 7: Crear el Mecanismo de Bucle (Loop)​

  1. Para la ruta "Se necesitan más subagentes", agregue un nodo Loop.
  2. Configúrelo para que vuelva al nodo del Planificador (Planner).
  3. Establezca un conteo máximo de bucles de 5 para evitar bucles infinitos.
  4. El Agente Planificador revisará el informe actual y generará tareas de investigación adicionales.

"paso actual"

Paso 8: Agregar la Salida Final​

  1. Para la ruta "Los hallazgos son suficientes", agregue un Direct Reply (Respuesta Directa).
  2. Configúrelo para mostrar el informe final: {{ $flow.state.findings }}

"paso actual"

"paso actual"

Probar el Flujo​

  1. Comience con un tema simple como "Sistemas multi-agente autónomos en entornos del mundo real".
  2. Observe cómo el Planificador desglosa la investigación en tareas focalizadas.
  3. Monitoree a los SubAgentes mientras realizan investigaciones en paralelo.
  4. Revise la síntesis de hallazgos del Agente Escritor.
  5. Note si el Agente de Condición solicita investigación adicional.

"paso actual"

Tutorial (Walkthrough)​

  1. 🧠 Agente Planificador - analiza la consulta de investigación y genera una lista de tareas de investigación especializadas.
  2. 🖧 Subagentes - crean múltiples subagentes de investigación, realizan investigaciones focalizadas usando herramientas de búsqueda web, raspado web y ArXiv.
  3. ✍️ Agente Escritor - sintetiza todos los hallazgos en un informe coherente y completo con citas.
  4. ⇄ Agente de Condición - determina si se necesita investigación adicional o si los hallazgos son suficientes.
  5. 🔄 Bucle hacia el Agente Planificador para generar más subagentes.

🧠 Agente Planificador (Planner Agent)​

Actúa como un líder de investigación experto para:

  • Analizar y desglosar las consultas de los usuarios.
  • Crear planes de investigación detallados.
  • Generar tareas específicas para los subagentes.

Salida de una matriz de tareas de investigación.

"paso actual"

🖧 Subagentes​

Por cada tarea en la lista, se generará un nuevo subagente para realizar investigaciones focalizadas.

Cada subagente tiene:

  • Capacidades claras de comprensión de tareas.
  • Planificación eficiente de la investigación (2-5 llamadas a herramientas por tarea).
  • Evaluación de la calidad de las fuentes.
  • Uso de herramientas en paralelo para mayor eficiencia.

"paso actual"

El subagente tiene acceso a herramientas de búsqueda web, raspado web y ArXiv.

  • 🌐 Google Search - para enlaces de búsqueda web.
  • 🗂️ Web Scraper - para la extracción de contenido web. Esto extraerá el contenido de los enlaces de Google Search.
  • 📑 ArXiv - buscar, descargar y leer el contenido de artículos de ArXiv.

"paso actual"

✍️ Agente Escritor (Writer Agent)​

Actúa como un escritor de investigación que convierte los hallazgos en bruto en un informe estructurado y claro en Markdown. Preserva todo el contexto y las citas.

Consideramos que Gemini es el mejor para esto, gracias a su gran ventana de contexto que le permite sintetizar todos los hallazgos de manera efectiva.

"paso actual"

⇄ Agente de Condición (Condition Agent)​

Con el informe generado, dejamos que el LLM determine si se necesita investigación adicional o si los hallazgos son suficientes.

Si se necesita más, el Agente Planificador revisa todos los mensajes, identifica áreas de mejora, genera tareas de investigación de seguimiento y el bucle continúa.

Si los hallazgos son suficientes, simplemente devolvemos el informe final del Agente Escritor como la salida.

"paso actual"

Configuración Avanzada​

Personalización de la Profundidad de la Investigación​

Puede ajustar la profundidad de la investigación modificando el prompt del sistema del Planificador para:

  • Aumentar el número de SubAgentes para temas complejos (hasta 10-20).
  • Ajustar el presupuesto de llamadas a herramientas por SubAgente.
  • Modificar el conteo de bucles para una investigación más iterativa.

Sin embargo, esto también conlleva un costo adicional por un mayor consumo de tokens.

Adición de Herramientas Especializadas​

Mejore las capacidades de investigación agregando herramientas específicas de dominio:

  • Herramientas personales como Gmail, Slack, Google Calendar, Teams, etc.
  • Otros raspadores web, herramientas de búsqueda web como Firecrawl, Exa, Apify, etc.

Adición de Contexto RAG​

Puede agregar más contexto al LLM con RAG. Esto permite que el LLM obtenga información de fuentes de conocimiento existentes relevantes cuando sea necesario.