
Un chatbot con LLM contesta; un agente actúa. Esa es la diferencia entre una demo resultona y una herramienta que resuelve tareas: el agente decide qué hacer, usa herramientas y comprueba si el resultado sirve. Y eso se programa.
Anatomía: cuatro piezas y un bucle
- Bucle de razonamiento: el modelo elige el siguiente paso; tú no lo cableas.
- Herramientas: funciones que puede invocar (consultar una API, hacer una cuenta, leer un fichero).
- Memoria: el historial de mensajes y de los resultados de cada acción.
- Ejecución: alguien corre la herramienta y le devuelve la salida al modelo. Ese alguien es tu código.
Del chatbot al agente, en Python
- Acota la tarea. "Cuántos días laborables quedan hasta fin de mes" vale; "gestiona mi empresa" no.
- Escribe las herramientas como funciones normales:
def dias_laborables(hasta: str) -> int. - Manda al modelo la petición y el catálogo de herramientas, y pídele salida en JSON:
{"accion": ..., "args": ...}. - Ejecuta la acción, añade el resultado como mensaje nuevo y repite.
- Corta a las 8 iteraciones. Los bucles infinitos cuestan dinero y son tediosos.
while pasos < 8:
r = llm(mensajes, tools=herramientas)
if r.tipo == "final":
return r.texto
mensajes.append(ejecutar(r.accion, r.args))
pasos += 1
Lo que de verdad cuesta
La memoria y el control de errores. Un agente que no verifica la salida de su herramienta alucina con mucha seguridad. Frameworks como Claude Code, OpenCode o Hermes ya traen ese andamiaje, pero entender el bucle evita tratar al agente como una caja negra y saber por qué se atasca.
Empieza con una tarea pequeña, dos herramientas y ganas de mirar la consola. Si prefieres montarlo guiado, en Clasesdeprogramacion lo construimos paso a paso en Python con Stanislav Vakaruk, doctor en IA: tráete una tarea real y salimos de ahí con un agente funcionando.