Módulo 2 · Parte C de 3

Agentes de investigación profunda

El Módulo 2 trata el alcance del flujo de trabajo como una interfaz de control. La Parte A introdujo una estructura de control que decide qué contexto cruza cada límite en la interfaz, qué puede ramificarse y cómo avanzan los resultados por un pipeline. La Parte B aplicó ese control a un pipeline de recuperación definido por el desarrollador y acotado por su contexto.

Un agente de investigación profunda aplica la misma idea a una pregunta cuya evidencia desbordaría una sola conversación. En tiempo de ejecución, un planificador elige ramas independientes y entrega a cada trabajador únicamente la pregunta original, la tarea asignada y las herramientas necesarias. Los historiales de las demás ramas quedan fuera. Una etapa final sintetiza la evidencia que los trabajadores conservan. Primero ejecuta el patrón; después examina su implementación.

Cómo cambia el límite del flujo de trabajo

En todo el Módulo 2, el flujo de trabajo externo controla el alcance y el movimiento de los datos. La recuperación y la investigación profunda ubican este límite de manera diferente.

Cualquiera de los dos flujos puede incluir un bucle ReAct en una etapa que deba adaptarse a resultados intermedios.

Por qué un contexto compartido falla

Un solo bucle ReAct mantiene todas las instrucciones y observaciones en un solo historial. Así, las evidencias anteriores compiten con el resultado de cada nueva herramienta. Con el tiempo, el propio historial se convierte en parte del problema.

Un coordinador asigna tareas concretas. Los trabajadores independientes devuelven evidencia mediante almacenamiento compartido, y una etapa final la combina.

Cómo avanza la investigación por el flujo de trabajo

1 · Planificar

El orquestador transforma la pregunta en tareas independientes, de modo que el alcance queda visible antes de comenzar el trabajo.

2 · Investigar

Cada subagente recibe una tarea en un contexto nuevo que excluye por completo los historiales de las demás ramas.

3 · Preservar

Los trabajadores escriben sus hallazgos en un sistema de archivos virtual compartido, donde la evidencia perdura cuando terminan sus contextos.

4 · Sintetizar

El orquestador lee la evidencia guardada y produce una respuesta cuyas afirmaciones siguen siendo trazables hasta sus respectivas ramas de origen.

Un contexto limpio no es un sandbox. El aislamiento de contexto separa el razonamiento de las ramas, mientras que el sandbox limita el acceso al sistema operativo. El artefacto del navegador que ves más abajo no tiene shell; en cambio, el ejemplo manual posterior utiliza un sistema de archivos en memoria para mostrar el estado compartido.

Prueba · planifica, investiga y sintetiza

Plantea una pregunta de investigación y observa cómo el agente crea ramas que se ejecutan en paralelo sobre materiales externos seleccionados y el contenido del curso antes de redactar una respuesta con citas. Cada trabajador transmite su avance en un panel que puedes enfocar de forma independiente. Así puedes examinar las operaciones activas sin esperar a que finalice toda la ejecución paralela.

Inspecciona la implementación

Las siguientes tres celdas aíslan una capa de implementación a la vez, comenzando con el adaptador del modelo y terminando con el agente de investigación completo. Cada celda se ejecuta de forma independiente.

Las celdas de implementación usan el paquete de navegador incluido. Importan exactamente el mismo paquete servido desde el mismo origen y registrado en el inventario de dependencias del navegador. La integración continua (CI, del inglés Continuous Integration) bloquea la publicación si el paquete, el archivo de bloqueo, las licencias o las referencias del código cambian.
Aplicado · Construcción¿Construir el planificador, los trabajadores y el estado compartido?

1 · Conecta el modelo

ChatOpenAI encapsula cualquier endpoint compatible con OpenAI. La celda lee la URL y las credenciales mediante helpers.getConfig(), por lo que el resto del grafo no depende de dónde se ejecuta el modelo.

.invoke() devuelve un mensaje completo; .stream() produce mensajes parciales. Ambos implementan la interfaz Runnable de LangChain.

2 · Convierte el bucle en un grafo

createReactAgent({llm, tools}) convierte el bucle ReAct del Módulo 1 en nodos explícitos de modelo y herramientas. El grafo compilado puede ejecutarse por sí solo o convertirse en un nodo de un flujo de trabajo más grande.

Regla de oro: diseña un grafo cuando un bucle simple ya no pueda expresar el flujo de control necesario.

3 · Ensambla el agente de investigación

Esta celda expone cada etapa como un nodo independiente, con archivos compartidos visibles entre la delegación y la síntesis. El paquete deepagents encapsula un patrón similar para aplicaciones Node.js.

Comprueba tu comprensión

  1. ¿Qué entra en el contexto de cada subagente y qué queda fuera?
  2. ¿Por qué preservar los resultados en lugar de pasar una transcripción en crecimiento?
  3. ¿Cómo evitan fallos distintos el aislamiento de contexto y el sandbox del sistema operativo?
Profundo · Fuentes¿Rastrear las fuentes de implementación de la investigación profunda?

Referencias

Lista completa en Para ir más lejos · Referencias.

← Módulo 2b: El agente de indexación