12 · El bucle del agente
Un agente no es un modelo especial — es un LLM ordinario puesto en un bucle con memoria y una condición de parada. Razonar → actuar → observar, repetir. El bucle (y el guard que lo termina) es toda la idea.
Un agente = un LLM llamado repetidamente en un bucle: en cada turno razona sobre el estado actual, toma una acción, observa el resultado y actualiza su memoria — hasta que se dispara una condición de parada. Un guard de pasos limita el bucle para que no corra para siempre.
Sin esto:
Sin el modelo mental del bucle, los agentes parecen una capacidad nueva y misteriosa. Con él, ves que son control de flujo simple — y sabes exactamente dónde pueden quedar girando para siempre, perder el estado o nunca decidir parar.
Hasta ahora cada lección ha sido una única llamada: construir un prompt, enviarlo, parsear la respuesta, listo. Un agente rompe ese patrón de un solo disparo. En vez de pedirle al modelo toda la respuesta de una vez, lo pones en un bucle y dejas que avance hacia una meta un paso a la vez.
El bucle tiene tres fases, repetidas en cada turno:
- Razonar — dado el estado actual (la meta, más todo lo observado hasta ahora), decidir la siguiente acción. Este es el trabajo del modelo; la acción puede ser "llama a esta herramienta", "haz una repregunta" o "ya terminé".
- Actuar — ejecutar esa acción contra el mundo (correr la herramienta, consultar la base de datos, escribir el archivo).
- Observar — tomar el resultado de la acción y agregarlo a la memoria (el historial acumulado que el modelo verá en el siguiente turno).
Luego se vuelve al paso 1 con el estado actualizado. Tres piezas más hacen esto seguro y finito:
- Memoria — el registro acumulado de acciones y observaciones, para que en cada turno el modelo construya sobre lo que ya aprendió.
- Una condición de parada — el modelo señala que terminó (p. ej. emite una acción de "respuesta final").
- Un guard de pasos — un tope duro
max_stepspara que un agente confundido no pueda girar para siempre y quemar tu presupuesto.
Ese es todo el concepto. No hay un "modelo de agente" especial — es un predictor del siguiente token ordinario envuelto en este bucle. Abajo, la política (el paso de razonamiento) es una función determinista basada en reglas para que corra offline; en producción esa función se reemplaza por una llamada a un LLM.
Python (in browser)
El bucle del agente completo: razonar→actuar→observar con una lista de memoria y un guard de max-steps. Cambia la `policy` por reglas por una llamada a un LLM y tienes un agente real.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Fíjate en lo que hizo el bucle: nunca planeó toda la secuencia por adelantado. En cada turno miró solo el estado actual (el monto restante), eligió una acción, observó el resultado y reconsideró. Ese estilo incremental de observar-y-adaptar es exactamente por qué los agentes pueden manejar tareas donde no puedes conocer el plan completo de antemano — el siguiente paso depende de lo que devolvió el anterior.
En producción el único cambio es quién juega el papel de policy. Abajo está la forma de un bucle de agente real donde cada turno es una llamada a un LLM: envías la conversación hasta ahora (la memoria), el modelo responde, agregas la respuesta y vuelves al bucle. Léelo — el control de flujo es idéntico al de la celda de arriba.
Mismo bucle, modelo real: la lista `messages` es la memoria, la llamada al LLM es la política, el conteo de pasos es el guard. Los agentes son control de flujo, no magia.
¿Qué distingue a un agente de una llamada única y ordinaria a un LLM?
- Un agente = un LLM en un bucle: razonar → actuar → observar, repetido, con memoria llevada de turno a turno.
- Dos cosas hacen el bucle finito y seguro: una condición de parada que el modelo señala y un guard duro `max_steps`.
- No hay un 'modelo de agente' especial — solo el mismo predictor del siguiente token envuelto en control de flujo que decide una acción a la vez.
Cada copiloto de código, agente de navegador y asistente 'hazlo-por-mí' es este bucle; frameworks como LangChain, el OpenAI Agents SDK y CrewAI implementan razonar→actuar→observar con un tope de pasos.
Si lo quitas: Sin el bucle te limitas a respuestas de un solo disparo — el modelo no puede recopilar información, reaccionar a resultados ni encadenar varios pasos hacia una meta.