14 · ReAct: razonar + actuar
ReAct es el patrón detrás de la mayoría de los agentes: intercalar un Pensamiento, una Acción y una Observación en cada turno, hasta que el modelo escribe una Respuesta Final. El pensamiento explícito es lo que hace fiable el uso de herramientas multi-paso.
ReAct (Reason + Act) estructura el bucle del agente para que cada turno produzca un Pensamiento (razonamiento en palabras), luego una Acción (una llamada a herramienta), luego una Observación (el resultado de la herramienta) — repitiendo hasta que el modelo emite una Respuesta Final. Escribir el razonamiento en voz alta hace el uso de herramientas multi-paso mucho más fiable.
Sin esto:
Sin el paso explícito de Pensamiento, el modelo salta directo a las acciones y se salta pasos en preguntas multi-salto; sin el paso de Observación no puede reaccionar a lo que la herramienta realmente devolvió.
ReAct ("Reason + Act") es el patrón de agente más influyente, y es un refinamiento diminuto del bucle que ya construiste. La idea: hacer que el modelo escriba su razonamiento en voz alta antes de cada acción. Cada turno tiene una forma fija:
- Pensamiento (Thought) — el modelo dice, en lenguaje claro, qué intenta hacer a continuación y por qué.
- Acción (Action) — llama a una herramienta (nombre + argumentos), elegida según ese pensamiento.
- Observación (Observation) — tu código corre la herramienta y devuelve el resultado.
El bucle se repite — Pensamiento, Acción, Observación, Pensamiento, Acción, Observación — hasta que el modelo decide que tiene suficiente y escribe una Respuesta Final en vez de otra acción.
¿Por qué importa el Pensamiento explícito? Dos razones:
- Fiabilidad. Forzar al modelo a razonar en palabras antes de actuar (el mismo efecto que chain-of-thought) reduce drásticamente los pasos saltados en preguntas multi-salto — las que necesitan varias llamadas a herramientas, donde cada paso depende del resultado anterior.
- Depurabilidad. La traza Pensamiento/Acción/Observación es un registro completo y legible de por qué el agente hizo lo que hizo. Cuando un agente falla, esta traza es lo primero que lees.
Abajo hay un mini agente ReAct respondiendo una pregunta de 2 pasos: "¿Cuál es la población de Francia por 3?" Primero debe buscar la población, luego multiplicar — no puede hacer ambas a la vez. La política está basada en reglas (un sustituto de un LLM) para que toda la traza corra de forma determinista y offline. Observa cómo el scratchpad (memoria) lleva la población del paso 1 hacia el cálculo del paso 2.
Python (in browser)
Una traza ReAct completa: Pensamiento→Acción→Observación dos veces (buscar población, luego multiplicar) antes de la Respuesta Final. El scratchpad lleva los hechos hacia adelante — así resuelve una pregunta multi-paso.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
En un agente ReAct real la función policy se reemplaza por un LLM, y el formato Pensamiento/Acción/Observación se le enseña al modelo con un prompt (o se impone vía function calling). En cada turno agregas la nueva Observación al prompt y vuelves a llamar al modelo — el mismo bucle, con un razonador real. Lee la versión estilo LangChain de abajo; por dentro corre la misma traza que acabas de ver.
Un agente ReAct real de LangChain: un LLM como razonador, funciones decoradas como herramientas, un prompt del hub para el formato Pensamiento/Acción/Observación y `max_iterations` como guard de pasos — el mismo bucle, automatizado.
En ReAct, ¿por qué es valioso el paso explícito de 'Pensamiento' (razonamiento escrito antes de cada acción)?
- ReAct = intercalar Pensamiento (razonar en palabras) → Acción (llamada a herramienta) → Observación (resultado), repitiendo hasta una Respuesta Final.
- El Pensamiento explícito (chain-of-thought) hace el uso de herramientas multi-paso / multi-salto mucho más fiable.
- La traza Pensamiento/Acción/Observación es un registro completo y legible — tu primera parada al depurar un agente.
ReAct es el patrón de agente por defecto en LangChain, LlamaIndex y la mayoría de los agentes de investigación; el formato Pensamiento/Acción/Observación es lo que imprime `verbose=True` y lo que visualizan las herramientas de observabilidad (LangSmith).
Si lo quitas: Quita el Pensamiento y el agente actúa impulsivamente, saltándose pasos en preguntas multi-salto; quita el bucle de Observación y no puede adaptarse a lo que las herramientas realmente devolvieron — ambos lo colapsan de vuelta a una frágil llamada de un solo disparo.