Wu Wei

Cómo funciona el bucle de un agente

· #agentes

Explainer

Tema
El bucle de un agente (agent loop)
Nivel
Intermedio
Cubre
tool-calling · contexto · parada · riesgos

"Agente" es la palabra más gastada del año. Pero debajo del ruido hay una mecánica concreta y bastante simple, y entenderla es la diferencia entre usar un agente con criterio y rezar para que funcione. La definición que mejor ha aguantado es la de Anthropic, que Simon Willison resume en una frase: un agente es un modelo usando herramientas en un bucle (simonwillison.net). Sin bucle no hay agente; hay una llamada suelta a un modelo.

Agente no es lo mismo que workflow

Antes del bucle conviene una distinción que ahorra muchos disgustos. Anthropic separa dos cosas que la jerga mezcla: un workflow es un sistema donde el modelo y las herramientas se orquestan por rutas de código que tú escribes de antemano; un agente es un sistema donde el propio modelo decide su trayectoria y qué herramienta usar a partir del feedback del entorno, en bucle (Building Effective AI Agents). El workflow es predecible y barato; el agente es flexible y caro. La mayoría de problemas se resuelven con lo primero — el agente se reserva para cuando no puedes cablear el camino de antemano pero sí verificar el resultado.

El ladrillo: el "augmented LLM"

La pieza básica no es el modelo pelado, sino lo que Anthropic llama el augmented LLM: un modelo con acceso a recuperación (buscar datos), herramientas (ejecutar acciones) y memoria. Lilian Weng lo describe con el modelo como "cerebro" y tres pilares alrededor — planificación (descomponer en subobjetivos, corregirse), memoria (corto y largo plazo) y uso de herramientas (LLM Powered Autonomous Agents). El bucle es lo que pone todo eso en movimiento.

Pensar, actuar, observar

El patrón que ordena el bucle viene de un paper de 2022: ReAct (Reason + Act). La idea es intercalar razonamiento y acción en vez de separarlos: el modelo razona un paso ("necesito el precio actual, no lo sé de memoria"), ejecuta una acción (llama a una herramienta de búsqueda), observa el resultado, y ese resultado alimenta el siguiente razonamiento (Yao et al., 2022). El razonamiento planifica y gestiona las excepciones; la acción trae información del mundo exterior que el modelo no tenía.

1
Pensar

El modelo razona sobre el objetivo y el estado actual, y decide el siguiente paso: responder ya, o pedir una herramienta.

2
Actuar

Si hace falta, emite una llamada a una herramienta (buscar, leer un archivo, ejecutar código). Tu código la ejecuta — el modelo no toca nada por su cuenta.

3
Observar

El resultado de la herramienta vuelve al contexto como una observación. El modelo la lee y el ciclo vuelve a empezar, ahora con más información.

El round trip, en concreto

En la práctica, ese "actuar" tiene una forma muy precisa en las APIs actuales. Cuando el modelo quiere usar una herramienta, no la ejecuta: para su turno con una señal —en la API de Claude, stop_reason: "tool_use"— y devuelve un bloque describiendo qué herramienta quiere y con qué argumentos. Tu código ejecuta esa operación y le devuelve el resultado en un bloque tool_result, que reentra en el contexto en la siguiente iteración (Tool use with Claude). OpenAI documenta el mismo baile en cinco pasos: petición con herramientas → el modelo pide una llamada → tu app la ejecuta → segunda petición con la salida → respuesta final o más llamadas (Function calling).

Quitado el detalle de cada proveedor, el bucle entero cabe en unas líneas:

agent loop
# El bucle de un agente, en esencia
mensajes = [prompt_del_usuario]

while True:
    respuesta = modelo.generar(mensajes, herramientas)
    mensajes.append(respuesta)

    if respuesta.motivo_parada == "fin":
        break                       # el modelo decidió que terminó

    # el modelo pidió una o más herramientas: las ejecuta TU código
    resultados = [ejecutar(ll) for ll in respuesta.llamadas]
    mensajes.append(resultados)     # las observaciones vuelven al contexto

Eso es todo. No hay más magia en el núcleo: un while que alterna generación del modelo y ejecución de herramientas, acumulando la conversación entera en mensajes hasta que el modelo señala que terminó. Lo que cambia entre un juguete y un agente serio no es el bucle — es lo que rodea a esas dos líneas.

Detalle que se pasa por alto: quien ejecuta la herramienta eres tú, no el modelo. El modelo solo pide. Ese hueco entre "pedir" y "ejecutar" es donde metes permisos, validación y límites — la única barrera real entre una sugerencia del modelo y un rm -rf de verdad.

Por qué el contexto crece en cada vuelta

Fíjate en que mensajes solo hace una cosa: crecer. Cada vuelta añade la respuesta del modelo y el resultado de cada herramienta. En tareas largas esto se acumula rápido, y ahí aparece el primer problema real. Anthropic lo dice sin rodeos: "un agente corriendo en bucle genera cada vez más datos… que hay que refinar cíclicamente" (Effective context engineering). La ventana de contexto es un presupuesto de atención finito, y pasado cierto punto aparece el context rot: a más tokens metidos, peor recupera el modelo lo que importaba. Por eso los agentes serios compactan, resumen o toman notas — no por elegancia, sino porque el bucle, sin gestión, se ahoga en su propio historial.

Dónde se rompe

El bucle es simple, y por eso mismo tiene fallos predecibles. Vale la pena conocerlos antes de soltar un agente a producción:

  • El coste crece en cada iteración. Cada vuelta reenvía todo el historial acumulado y añade más. Un agente que da veinte vueltas no cuesta veinte llamadas pequeñas: cuesta veinte llamadas cada vez más grandes.
  • Los errores se propagan. Un razonamiento equivocado en la vuelta 3 entra en el contexto y contamina las vueltas 4, 5, 6… El modelo arrastra su propio error como si fuera un hecho. Anthropic recomienda por esto el patrón más simple que pase la evaluación, no el más agéntico (Building Effective AI Agents).
  • La parada no es gratis. El while True del ejemplo depende de que el modelo emita "fin". Un agente puede quedarse dando vueltas, repetir acciones o no reconocer que terminó. En serio hace falta un límite de iteraciones, detección de bucles y una condición de parada explícita — el objetivo es alcanzar una meta, no iterar sin fin.

Lo que hay que llevarse

Un agente es un while alrededor de un modelo que llama herramientas y va acumulando lo que observa. Entender esa mecánica no lo hace menos útil — lo hace usable con criterio: sabes que el coste escala con las vueltas, que el contexto se degrada si no lo gestionas, que un error temprano envenena el resto, y que tú controlas el punto exacto donde una herramienta se ejecuta o no. Nada de eso se ve desde fuera, donde solo hay "un agente que hace cosas". Se ve desde dentro del bucle. Y mirar dentro, antes de confiar, es justo el punto medio que este sitio persigue: ni rechazar los agentes por reflejo, ni ejecutarlos a ciegas.