Arquitectura de agentes en React: patrones, errores y soluciones

Domina el patrón ReAct en arquitecturas de agentes React: bucle reason-act, uso de herramientas y guardrails para producción.
En esta página
  1. Esencia del patrón
  2. Problema
  3. Solución
  4. Cómo funciona
  5. Importante: el agente no ejecuta acciones por sí solo
  6. En código se ve así
  7. Cómo se ve durante la ejecución
  8. Cuándo encaja - y cuándo no
  9. Encaja
  10. No encaja
  11. Cuándo usar ReAct (vs otros patrones)
  12. Cómo combinarlo con otros patrones
  13. Resumen
  14. Ventajas y desventajas
  15. FAQ
  16. Qué sigue

Esencia del patrón

ReAct (Reasoning + Acting) es un patrón que permite que un agente actúe paso a paso, tomando una decisión después de cada acción en función del resultado obtenido.

Cuándo usarlo: cuando no se puede planificar de forma fiable todo el camino por adelantado y el siguiente paso depende del resultado anterior.


Cada paso consta de tres acciones:

  • Think — decide qué hacer después
  • Act — ejecuta una acción o llama a una herramienta
  • Observe — analiza el resultado

Después de eso, el agente vuelve a decidir cuál es el siguiente paso.

Agente ReAct: acción paso a paso

Problema

Imagina esto: estás por primera vez en una ciudad nueva y buscas una farmacia abierta con el medicamento que necesitas.

Todavía no sabes de antemano:

  • qué farmacias hay cerca
  • si están abiertas ahora
  • si tienen el medicamento necesario

Es imposible construir un plan completo de inmediato, porque cada paso depende de un resultado nuevo.

Por eso actúas en ciclo:

  1. Encontraste la farmacia más cercana
  2. Verificaste si está abierta
  3. Si no, pasaste a la siguiente
  4. Repetiste hasta encontrar la correcta

Es decir, constantemente: información -> decisión -> acción -> información nueva.

Y si te fuerzas a fijar la ruta desde el inicio ("#1 -> #2 -> #3"), eso es un plan al azar.

Ese es el problema: en muchas tareas es imposible planificar correctamente todos los pasos por adelantado.

Solución

ReAct resuelve esto con decisiones durante la ejecución, no con un plan rígido definido de antemano.

Analogía: es como un navegador en carretera. Construyes la siguiente maniobra después de cada giro nuevo o cierre de vía. La ruta se ajusta sobre la marcha, no se fija para siempre.

Principio clave: no se puede construir un plan completo de inmediato, por eso el agente debe adaptarse después de cada resultado.

En lugar de primero plan completo -> luego ejecución, el agente trabaja así:

  1. Razonamiento (Think): toma una decisión
  2. Acción (Act): ejecuta una acción
  3. Observación (Observe): analiza el resultado

Después de eso, define el siguiente paso según el nuevo contexto.

Si una farmacia está cerrada, el agente no "fuerza" el plan anterior, sino que ajusta acciones de inmediato.

Cada resultado nuevo:

  • se agrega al contexto
  • influye en la siguiente decisión
  • cambia la ruta posterior

ReAct no ejecuta un guion predefinido, se adapta en cada paso.

El modelo puede "querer" repetir acciones sin fin, por eso la política de ejecución (execution-policy) define las condiciones para detener el ciclo.

Cómo funciona

Diagram

Importante: el agente no ejecuta acciones por sí solo

En la etapa de razonamiento (Think), el agente solo decide qué se debe hacer después.

Pero no ejecuta la acción por sí mismo.

Genera una decisión en forma de texto, por ejemplo:

“Hay que llamar la herramienta search_docs con el parámetro X”

Después de eso:

  • el sistema alrededor del agente lee esa decisión
  • ejecuta la acción o llama la herramienta
  • devuelve el resultado

Ese resultado se vuelve una nueva observación (Observe).

Descripción del flujo completo: Think → Act → Observe

Razonamiento (Think)
El agente decide qué se debe hacer después.

Acción (Act)
El sistema ejecuta la acción o llama a una herramienta.

Observación (Observe)
El entorno devuelve un resultado, que se convierte en un nuevo contexto.

El agente solo toma decisiones.

Todas las acciones las ejecuta una capa externa de ejecución (execution layer).

Si esta capa no tiene límites, el agente puede:

  • llamar una herramienta decenas de veces
  • repetir las mismas acciones
  • gastar el presupuesto en llamadas API

El ciclo se repite hasta que la tarea se completa o se alcanza una condición de parada.

En código se ve así

PYTHON
max_steps = 8

for step_no in range(1, max_steps + 1):
    thought = think(context)
    action = act(thought)
    result = observe(action)

    context.append(result)  # Observe -> nuevo context para el siguiente Think.

    if is_done(result):
        done = True
        break

if not done:
    return stop_with_reason("max_steps_reached")

Cómo se ve durante la ejecución

TEXT
Goal: encontrar la farmacia abierta más cercana

Think: hay que encontrar una farmacia cercana
Act: el sistema llama find_nearby_pharmacies(user_location)
Observe: se recibió una lista de farmacias ordenada por distancia
Entre iteraciones: la lista de farmacias se agrega al context

Think: verificar la primera farmacia (la más cercana)
Act: el sistema llama check_pharmacy("Farmacia #1")
Observe: la farmacia está cerrada
Entre iteraciones: el estado "cerrada" se agrega al context

Think: verificar la siguiente farmacia
Act: el sistema llama check_pharmacy("Farmacia #2")
Observe: la farmacia está abierta

Think: esta es la farmacia abierta más cercana
Act: el sistema devuelve la dirección
Observe: el usuario recibió el resultado
Stop: condición cumplida, el ciclo termina

El agente decide qué hacer, ejecuta una acción y obtiene un resultado.

Cada resultado se agrega al contexto y se convierte en base para el siguiente paso.

Ejemplo completo de agente ReAct

PYPython
TSTypeScript · pronto

Cuándo encaja - y cuándo no

Encaja

SituaciónPor qué ReAct encaja
La ruta al resultado no es obviaReAct ajusta el plan en cada paso según nuevas observaciones.
El siguiente paso depende de la respuesta de una herramientaLa lógica Think -> Act -> Observe está hecha exactamente para este ciclo.
Necesitas trabajar con API, base de datos, búsqueda u otras herramientasEl agente llama herramientas durante la ejecución y se adapta.

No encaja

SituaciónPor qué ReAct no encaja
La tarea tiene un escenario fijo y predecibleEs más simple y más barato ejecutar un pipeline predefinido.
Se requiere velocidad de respuesta crítica (latencia mínima)Cada ciclo agrega tiempo por pasos extra de razonamiento y llamadas.
Cada llamada de herramienta es costosa o estrictamente limitadaSin límites duros, ReAct puede hacer muchas iteraciones.

Si eliges ReAct, define límites desde el principio: max_steps, timeouts, condiciones de parada y presupuesto para llamadas de herramientas.

Cuándo usar ReAct (vs otros patrones)

Usa ReAct cuando el agente deba tomar decisiones paso a paso según los resultados de acciones anteriores.

Prueba rápida:

  • si necesitas "vi el resultado -> decidí el siguiente paso" -> ReAct
  • si necesitas "primero dividir un objetivo grande en subtareas" -> Task Decomposition 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ésAgente ReAct
Primero hay que dividir un objetivo grande en tareas más pequeñas y ejecutablesTask Decomposition Agent
Hay que ejecutar código, verificar resultados e iterar de forma seguraCode Execution Agent
Hay que analizar datos y devolver conclusiones basadas en ese análisisData Analysis Agent
Se necesita investigación desde múltiples fuentes con evidencia estructuradaResearch Agent

Ejemplos:

ReAct: "Encuentra la causa de la caída de la API: revisa logs -> mira errores -> ejecuta la siguiente verificación según el resultado".

Task Decomposition: "Prepara el lanzamiento de una nueva tarifa: divide la tarea en subtareas para contenido, ingeniería, QA y soporte".

Code Execution: "Calcula la retención de 12 meses en Python y verifica que las fórmulas sean correctas con datos reales".

Data Analysis: "Analiza un CSV de ventas: encuentra tendencias, anomalías y da conclusiones cortas".

Research: "Recoge datos sobre 5 competidores desde varias fuentes y genera un resumen comparativo".

Cómo combinarlo con otros patrones

ReAct se usa con frecuencia junto con otros patrones.

  • ReAct + RAG — cuando faltan hechos, el agente primero los recupera de la base de conocimiento y solo después da el siguiente paso.
  • ReAct + Reflection — después de cada paso, el agente se revisa a sí mismo para detectar y corregir errores rápido.
  • ReAct + Supervisor — el agente no ejecuta acciones de riesgo por su cuenta; las pasa para aprobación humana.

ReAct agrega un ciclo de decisión. Otros patrones agregan control, memoria o coordinación.

Resumen

En resumen

Agente ReAct:

  • toma decisiones de forma gradual
  • ejecuta una acción
  • analiza el resultado

Y repite el ciclo hasta completar la tarea.

Ventajas y desventajas

Ventajas

se adapta rápido a datos nuevos

los errores se ven ya en el siguiente paso

funciona bien cuando las condiciones cambian durante la ejecución

cada paso es fácil de explicar

Desventajas

puede ser más lento por la mayor cantidad de pasos

sin límites, puede quedarse en bucle

hay que definir claramente las condiciones de parada

FAQ

Q: ¿ReAct planifica todos los pasos por adelantado?
A: No. Toma decisiones después de cada acción.

Q: ¿ReAct puede quedarse atascado en un ciclo?
A: Sí, si no se definen condiciones de parada.

Q: ¿ReAct funciona sin herramientas?
A: Sí. El agente puede usar el ciclo Think -> Act -> Observe incluso sin llamadas a herramientas, por ejemplo para cambiar el enfoque de una tarea. Pero sin acceso a acciones externas, no puede obtener datos nuevos y trabaja solo con lo que ya está en el contexto.

Qué sigue

ReAct permite que un agente actúe paso a paso.

Pero, ¿qué hacer si la tarea es compleja y está formada por varias subtareas?

⏱️ 11 min de lecturaActualizado Mar, 2026Dificultad: ★★☆
Continuación práctica

Ejemplos de implementación del patrón

Continúa con la implementación usando proyectos de ejemplo.

Python
ReAct Agent — Python (implementación completa con LLM)
Abrir ejemplo
TypeScript
ReAct Agent — TypeScript (implementación completa)
Próximamente
Integrado: control en producciónOnceOnly
Guardrails para agentes con tool-calling
Lleva este patrón a producción con gobernanza:
  • Presupuestos (pasos / topes de gasto)
  • Permisos de herramientas (allowlist / blocklist)
  • Kill switch y parada por incidente
  • Idempotencia y dedupe
  • Audit logs y trazabilidad
Mención integrada: OnceOnly es una capa de control para sistemas de agentes en producción.
Autor

Esta documentación está curada y mantenida por ingenieros que despliegan agentes de IA en producción.

El contenido es asistido por IA, con responsabilidad editorial humana sobre la exactitud, la claridad y la relevancia en producción.

Los patrones y las recomendaciones se basan en post-mortems, modos de fallo e incidentes operativos en sistemas desplegados, incluido durante el desarrollo y la operación de infraestructura de gobernanza para agentes en OnceOnly.