Esencia Del Patrón
Research Agent es un patrón donde el agente realiza investigación controlada con un pipeline acotado: search, dedupe, policy-check, read, extract notes con provenance, y synthesize de respuesta solo desde material verificado.
Cuándo usarlo: cuando necesitas reunir y verificar hechos de varias fuentes, no responder sin base de evidencia.
Esto no es "solo browse".
Un research-pipeline normalmente incluye:
Search + dedupe URL: quitar duplicados antes de leerRead con presupuesto: leer páginas dentro de límites de tiempo y fuentesExtract facts: crear notas estructuradasVerify claim/citation: verificar de forma básica los claims claveSynthesize con referencias: escribir respuesta final con citas
Problema
Imagina que pides:
"Busca las reglas en la nueva ley y explícalas brevemente."
El agente "googleó" y devolvió una conclusión, pero sin rastro claro de fuentes.
Entonces aparecen riesgos típicos:
- lectura superficial (se abre mucho, se lee poco)
- duplicados del mismo material
- mezcla de hechos con interpretación del autor
- citación débil o falsa
- cero reproducibilidad del resultado
La investigación en open-web sin proceso se vuelve rápido un caos: muchos pasos, poca evidencia.
Ese es el problema central: sin pipeline controlado es difícil demostrar que la conclusión está basada en fuentes reales y verificadas.
Solución
Research Agent trabaja con pipeline acotado, no con "buscar un poco más".
Analogía: es como investigación periodística con checklist. Primero reúnes fuentes y notas con enlaces, luego escribes conclusiones. Sin eso es fácil mezclar hechos con supuestos.
Principio clave: writer obtiene permiso para synthesis solo después de notas extraídas con origen.
Proceso controlado:
- Búsqueda (
Search): encontrar una cantidad limitada de fuentes - Deduplicación (
Dedupe): normalizar URL y quitar duplicados - Verificación de policy (
Policy Check): pasar fuentes por policy-gate - Lectura (
Read): leer solo páginas permitidas - Extracción (
Extract): formar notas con origen (url+quote) - Verificación (
Verify): verificar claims clave - Síntesis (
Synthesize): escribir respuesta solo con notas
Esto permite adjuntar a la respuesta:
- qué páginas se leyeron
- qué citas se extrajeron
- qué claims se verificaron
- por qué el pipeline se detuvo (
stop reason)
Funciona bien si:
- el paso de búsqueda (
Search) tiene límites claros (max_urls,max_seconds) - el paso de lectura (
Read) pasa por policy-check - el paso de extracción (
Extract) incluye origen completo - la ejecución prohíbe synthesis sin notes
Si no, el agente puede:
- citar fuentes que nunca leyó
- mezclar hechos no verificados
- inventar citación para sonar convincente
Por eso se necesitan budget caps, dedupe + cache, ejecución protegida y stop-rules contra search-loop infinito.
Cómo Funciona
Principio crítico: writer no debe inventar fuentes. Trabaja solo con extracted notes.
Flujo completo: Search → Dedupe → Policy Check → Read → Extract → Verify → Synthesize
Búsqueda (Search)
Uno o dos pasos de search controlados con límites de tiempo y cantidad de URL.
Dedupe (Dedupe)
Las URL se normalizan y los duplicados se eliminan antes de leer.
Policy check (Policy Check)
Solo se procesan domains, tipos de contenido y niveles de riesgo permitidos.
Lectura (Read)
Las páginas se cargan con cache para no leer el mismo contenido dos veces.
Extracción (Extract)
Los hechos se guardan de forma estructurada: url, quote, claims, timestamp.
Verificación (Verify)
Spot-check básico: si los claims clave están respaldados por citas de página.
Síntesis (Synthesize)
La respuesta final se escribe solo con notas e incluye citas explícitas.
En Código Se Ve Así
budget = {"max_urls": 10, "max_seconds": 90}
urls = search_once(goal, k=8)
urls = dedupe_and_normalize(urls)[: budget["max_urls"]]
notes = []
for url in urls:
if budget_exceeded(budget):
break
if not policy_allow(url):
continue # stop/skip reason puede loguearse
page = fetch_with_cache(url)
note = extract_structured_note(goal, page, url=url)
notes.append(note)
if not notes:
return partial_or_escalate("no_reliable_sources")
verified = spot_check_claims(notes, sample_size=2)
answer = synthesize_from_notes(goal, notes, verified=verified)
return answer
Aquí lo importante no son "prompts bonitos", sino ejecución controlada: budget, dedupe, cache, stop reasons.
Cómo Se Ve En Ejecución
Goal: ¿Qué restricciones del EU AI Act aplican a sistemas high-risk?
Search:
- 12 URL encontradas
- tras dedupe: 7 únicas
Read/Extract:
- 5 páginas leídas correctamente
- 2 rechazadas por baja relevancia
Verify:
- 2 claims clave pasaron spot-check
Synthesize:
- resumen corto generado
- citas añadidas desde 3 fuentes
Ejemplo completo de agente Research
Cuándo Encaja - Y Cuándo No
Encaja
| Situación | Por Qué Research Encaja | |
|---|---|---|
| ✅ | Las fuentes externas son obligatorias y se necesitan citas | Research-agent sabe buscar, leer y citar fuentes. |
| ✅ | Tema dinámico y base interna insuficiente | La búsqueda en runtime obtiene datos actuales del open-web o fuentes externas. |
| ✅ | Se necesita trazabilidad de conclusiones | Se puede mostrar explícitamente de dónde vienen hechos y claims clave. |
| ✅ | Hay control de ejecución: budgets y reglas de tools | La investigación acotada controla costo y reduce riesgo de tool-loop. |
No Encaja
| Situación | Por Qué Research No Encaja | |
|---|---|---|
| ❌ | Los datos ya están en RAG | La búsqueda externa no hace falta, basta con recuperación interna. |
| ❌ | Latencia crítica | Buscar y leer páginas suele ser más caro que generación local. |
| ❌ | No existe pipeline seguro por policy para browse | No está garantizado el control seguro de tools y domains. |
Porque el modo research casi siempre es más caro que generación local o RAG.
Diferencia Frente A RAG
| RAG | Research Agent | |
|---|---|---|
| Fuentes | Índice/base de conocimiento interna | Open-web o fuentes externas |
| Foco | Respuesta rápida y aterrizada | Búsqueda, lectura y verificación de hechos |
| Control de costo | Relativamente estable | Necesita budget caps estrictos |
| Riesgo principal | Búsqueda débil | Ciclos de tools y citación falsa |
RAG trabaja sobre knowledge layer preparado. Research Agent obtiene conocimiento externo en runtime.
Cuándo Usar Research (vs Otros Patrones)
Usa Research Agent cuando necesitas reunir hechos de varias fuentes y consolidarlos como evidencia estructurada.
Prueba corta:
- si necesitas "investigar tema en varias fuentes y dar conclusión fundamentada" -> Research
- si necesitas "analizar un dataset ya dado" -> Data Analysis Agent
Comparación con otros patrones y ejemplos
Chuleta rápida:
| Si la tarea se ve así... | Usa |
|---|---|
| Después de cada paso hay que decidir qué hacer después | ReAct Agent |
| Primero hay que dividir una meta grande en tareas ejecutables más pequeñas | Task Decomposition Agent |
| Hay que ejecutar código, verificar resultados e iterar de forma segura | Code Execution Agent |
| Hay que analizar datos y devolver conclusiones basadas en análisis | Data Analysis Agent |
| Se necesita investigación de varias fuentes con evidencia estructurada | Research Agent |
Ejemplos:
ReAct: "Encuentra causa de caída de API: revisa logs -> mira errores -> corre siguiente check según resultado".
Task Decomposition: "Preparar lanzamiento de nuevo plan: divide tarea en subtareas para contenido, técnica, QA y soporte".
Code Execution: "Calcula retention de 12 meses en Python y valida fórmulas con datos reales".
Data Analysis: "Analiza CSV de ventas: encuentra tendencias, outliers y da conclusiones cortas".
Research: "Reúne datos de 5 competidores desde varias fuentes y haz resumen comparativo".
Cómo Combinar Con Otros Patrones
- Research + RAG: hallazgos externos verificados se guardan en la knowledge base interna para respuestas futuras.
- Research + Guarded-Policy: las policies limitan tools, domains y tipos de datos permitidos.
- Research + Fallback-Recovery: con search/fetch inestable, el agente reintenta o cambia a fuentes de respaldo.
Resumen
Research Agent:
- ejecuta búsqueda acotada y lectura de fuentes
- extrae notas estructuradas con origen
- verifica claims clave antes de responder
- devuelve respuesta citada sin loops infinitos de revisión
Ventajas Y Desventajas
Ventajas
reúne datos de varias fuentes en un mismo flujo
añade enlaces, por eso la respuesta es más verificable
cubre mejor un tema que una sola fuente
útil para comparar hechos y versiones
Desventajas
funciona más lento por búsqueda y lectura de fuentes
sin límites puede gastar demasiados recursos
la calidad depende de la calidad de fuentes
FAQ
Q: ¿Se puede buscar "hasta tener confianza"?
A: No. El nivel de confianza no es condición de parada. Necesitas límites claros: max_urls, max_seconds y reglas de stagnation/convergence.
Q: ¿Por qué es importante dedupe de URL?
A: Sin dedupe, el agente paga por releer el mismo contenido y distorsiona el conteo real de fuentes.
Q: ¿Basta con agregar citas al final de la respuesta?
A: No. Las citas deben venir de extracted notes, no generarse "de adorno".
Qué Sigue
Research Agent cubre búsqueda y citación open-world.
Ahora que conoces los patrones clave, la siguiente pregunta es: ¿cómo combinarlos en un sistema real? ¿Cuándo usar workflow determinista y cuándo agente flexible? ¿Y cómo trabajan juntos?