¿Qué son los agentes de IA? Cómo funcionan, con un bucle de agente simple que puedes ejecutar
Un agente de IA hace más que responder. Se fija un objetivo, elige acciones, comprueba los resultados y sigue adelante. Aprenda lo que hay dentro de uno, ejecute un pequeño bucle en Python y comprenda los riesgos antes de confiar en uno.
- Un agente de IA suele ser un modelo de lenguaje que se ejecuta en bucle, con herramientas y un objetivo.
- El bucle es sencillo: decide, actúa, observa el resultado y repite hasta terminar.
- El modelo sólo sugiere acciones. Su código los ejecuta, que es donde aplica las reglas.
- Los agentes pueden hacer bucles o hacer un mal uso de las herramientas, por lo que debe establecer límites de pasos y exigir aprobación para acciones riesgosas.
Pregúntele a un chatbot sobre un pedido retrasado y le dará algunos consejos. Pregúntele a un agente de AI y podrá buscar el pedido, comprobar el retraso, aplicar un vale e informar. La diferencia es que un agente puede tomar acciones y reaccionar ante lo que sucede, en lugar de producir una sola respuesta.
El término se extiende en marketing, por lo que esta guía se centra en cómo funcionan realmente estos sistemas. Para hacerlo concreto, creamos un pequeño bucle de agente en Python 3.13 y lo ejecutamos, y el resultado a continuación proviene de esas ejecuciones. Nuestro “modelo” es una función programada, no un modelo de IA real, por lo que cualquier persona puede ejecutar y probar el bucle. Muestra la estructura de control, no la inteligencia. ¿Nuevo en lo básico? Lea primero qué es un modelo de lenguaje grande.
¿Qué es un agente de IA?
No existe una definición única acordada. En la práctica actual, un agente de IA es un software que persigue un objetivo decidiendo repetidamente qué hacer a continuación, utilizando herramientas para actuar en el mundo y ajustándolo en función de los resultados. Por lo general, la toma de decisiones proviene de un modelo de lenguaje grande.
Piense en la diferencia entre una persona que da instrucciones y una persona que hace el recado. El primero responde una vez. El segundo sale, encuentra la tienda cerrada, prueba en otra y sólo regresa cuando el trabajo está terminado.
¿Chatbot, flujo de trabajo o agente?
| Tipo | ¿Quién decide los pasos? | ¿Puede actuar? | Ejemplo |
|---|---|---|---|
| chatbot | El usuario conduce cada turno. | Por lo general no | Responde preguntas del texto |
| Flujo de trabajo fijo | El desarrollador, de antemano | Sí, en caminos establecidos | Resuma cada ticket y luego enrútelo |
| agente de IA | El modelo, en tiempo de ejecución. | Sí, dentro de límites | Investiga y resuelve un ticket |
Estos existen en un espectro y muchos sistemas útiles son una combinación. La pregunta clave es qué parte del camino se decide en tiempo de ejecución.
¿Qué hay dentro de un agente?
| parte | Rol |
|---|---|
| modelo | Decide el siguiente paso, basándose en el objetivo y en lo que ha sucedido hasta ahora. |
| Instrucciones | El objetivo, las reglas y los límites que debe seguir |
| Herramientas | Funciones que puede solicitar, como buscar o llamar a una API |
| Memoria | Lo que sabe de pasos anteriores o sesiones pasadas |
| Bucle de control | Código ordinario que ejecuta herramientas y aplica límites. |
El bucle del agente
- Decidir. El modelo analiza el objetivo y el historial, elige una acción o decide que está terminada.
- Act. Su código ejecuta la herramienta solicitada.
- Observar. El resultado se agrega al historial.
- Repetir, hasta alcanzar el objetivo o alcanzar un límite.
Ese es el núcleo de la mayoría de los agentes. La sofisticación reside principalmente en el modelo, las herramientas y las salvaguardias en torno a este circuito.
Un bucle que puedes ejecutar
Nuestro pequeño agente se encarga de los pedidos retrasados. Tiene dos herramientas y una de ellas necesita aprobación humana porque cuesta dinero:
ORDERS = {
"A100": {"status": "delayed", "days_late": 6},
"B200": {"status": "shipped", "days_late": 0},
}
def get_order(order_id):
return ORDERS.get(order_id, {"error": "order not found"})
def issue_voucher(order_id, amount):
return {"voucher": f"V-{order_id}", "amount": amount}
TOOLS = {"get_order": get_order, "issue_voucher": issue_voucher}
NEEDS_APPROVAL = {"issue_voucher"}
Y aquí está el bucle en sí. Es un código ordinario y todas las reglas de seguridad se encuentran aquí y no en el modelo:
def run_agent(goal, model, approve, max_steps=5):
history = []
for step in range(1, max_steps + 1):
decision = model(goal, history)
if "finish" in decision:
return decision["finish"]
name, args = decision["tool"], decision["args"]
if name in NEEDS_APPROVAL and not approve(name, args):
result = {"denied": True}
else:
result = TOOLS[name](**args)
history.append({"tool": name, "result": result})
return None # stopped: step limit reached
Para usar un modelo real, reemplazaría la función model con una llamada a una API LLM, pasándole el objetivo, el historial y las descripciones de sus herramientas. El bucle sigue siendo casi el mismo.
¿Qué pasó en nuestras carreras?
Probamos cinco situaciones con la función de decisión programada y registramos cada paso.
Un pedido retrasado, con el bono aprobado
step 1: get_order({'order_id': 'A100'}) -> {'status': 'delayed', 'days_late': 6}
step 2: issue_voucher({'order_id': 'A100', 'amount': 200}) -> {'voucher': 'V-A100', 'amount': 200}
step 3: finish -> Sorry for the delay. Voucher V-A100 issued.
Cada paso utilizó el resultado del anterior. El bono sólo fue considerado una vez confirmado el retraso.
La misma orden, con aprobación denegada.
step 2: issue_voucher({'order_id': 'A100', 'amount': 200}) -> {'denied': True}
step 3: finish -> Your order is late. A person will review compensation.
El humano dijo que no, la herramienta nunca se ejecutó y el agente adaptó su respuesta.
Un orden desconocido
step 1: get_order({'order_id': 'Z999'}) -> {'error': 'order not found'}
step 2: finish -> I could not find that order.
Proporcionar a las herramientas mensajes de error claros ayuda. Un modelo real puede leerlos y responder con sensatez, en lugar de adivinar.
Un modelo que se estanca
También intercambiamos una función de decisión defectuosa que repetía la misma acción para siempre:
step 1: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
step 2: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
step 3: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
stopped: step limit reached
Los agentes realmente pueden caer en bucles como este, y cada paso con un modelo real cuesta dinero. Sin max_steps, este nunca habría terminado.
Cómo funcionan las herramientas
Esta es la parte más incomprendida. Un modelo de lenguaje no puede ejecutar nada por sí solo. Produce un texto estructurado que dice qué herramienta quiere y con qué argumentos. Tu código decide si ejecutarlo. Por eso el bucle es el lugar adecuado para permisos, validación y registro.
Los proveedores de modelos ofrecen herramientas o funciones que lo requieren. El Model Context Protocol (MCP) es un estándar abierto para conectar modelos a herramientas y datos, y nuestro artículo sobre Playwright MCP muestra un uso. Escriba nombres y descripciones claros de las herramientas, porque el modelo depende de ellos para elegir correctamente.
Consejo: Comience con herramientas de solo lectura. Un agente que sólo puede buscar cosas es mucho menos peligroso que uno que puede enviar, borrar o pagar. Agregue acceso de escritura una herramienta a la vez, una vez que haya visto cómo se comporta.
Memoria
| Tipo | Sostiene | Ejemplo |
|---|---|---|
| A corto plazo | El historial de la tarea actual. | La lista history en nuestro bucle |
| A largo plazo | Hechos guardados entre sesiones. | Preferencias de usuario en una base de datos |
| conocimiento | Documentos que se recuperan cuando es necesario. | RAG usando incrustaciones |
Las tareas largas pueden superar la ventana de contexto de un modelo, por lo que los sistemas suelen resumir pasos más antiguos. Los resúmenes pueden perder detalles, lo cual es una de las razones por las que los agentes de larga trayectoria pueden desviarse del rumbo.
Sistemas multiagente
Algunos sistemas dividen el trabajo entre varios agentes especializados, como un planificador, un investigador y un revisor. Esto puede ayudar con tareas grandes que se dividen claramente. También agrega costos, más formas de fallar y una depuración más difícil. Pruebe primero con un solo agente con buenas herramientas y divídalo solo cuando haya una razón clara.
Riesgos y límites
- Acciones incorrectas. El error de un chatbot es una mala sentencia. El error de un agente puede ser un correo electrónico enviado o un registro eliminado.
- Inyección rápida. Una página web o un correo electrónico que lee el agente podría contener instrucciones ocultas. Trate todos los resultados de la herramienta como datos que no son de confianza, no como comandos.
- Errores agravantes. Un pequeño error al principio puede enviar cada paso posterior en la dirección equivocada.
- Costo y latencia. Cada paso puede ser otra llamada de modelo, por lo que una tarea puede ser mucho más lenta y costosa que un solo mensaje.
- Inconsistencia. El mismo objetivo puede tomar un camino diferente en cada ejecución, lo que dificulta las pruebas.
- Responsabilidad. Las personas siguen siendo responsables de lo que hace el sistema, así que mantenga registros.
Barandillas que importan
- Mínimo privilegio. Proporcione a cada agente solo las herramientas y el acceso que necesita.
- Aprobación humana para cualquier cosa costosa, irreversible o externa, como lo hace nuestra demostración.
- Límites estrictos en cuanto a pasos, tiempo y gastos.
- Valide las entradas de la herramienta en el código y no dependa de las instrucciones del modelo.
- Registra cada paso para que puedas ver por qué sucedió algo. Consulte monitoreo versus observabilidad.
- Prueba con escenarios reales, incluidos fallos. Verifique los resultados finales y las respuestas individuales. Nuestra guía de mejores prácticas para agentes de IA va más allá de la implementación.
Cuando usar un agente
| Utilice un agente cuando | Utilice algo más simple cuando |
|---|---|
| Los pasos no se pueden conocer de antemano | Los pasos son siempre los mismos. |
| La tarea necesita varias herramientas. | Un mensaje puede hacer el trabajo |
| Los resultados cambian lo que sucede después | Un flujo de trabajo fijo funcionaría |
| Los errores son baratos o revisables | Los errores son costosos y difíciles de deshacer |
Los asistentes de codificación son uno de los ejemplos más maduros en la actualidad, ya que pueden leer archivos, ejecutar pruebas, ver fallas y volver a intentarlo, con un humano revisando el resultado. Un conjunto de pruebas les da una clara señal de éxito. Nuestra guía para la ingeniería rápida también se aplica a la redacción de buenas instrucciones para los agentes. Comience con lo más simple que pueda funcionar, porque una sola llamada bien solicitada a menudo supera a un agente complicado.
Conclusión
Un agente de IA es menos misterioso de lo que parece: un modelo, algunas herramientas y un bucle con límites. La parte difícil es la confianza, no el código. Para saber cómo se comportan, tome nuestro pequeño bucle, conéctelo a un modelo real con herramientas de solo lectura y observe los registros mientras funciona. Pronto verás dónde brilla y dónde necesita un humano.
Preguntas frecuentes
¿Qué es un agente de IA en palabras sencillas?
Es un software que trabaja para lograr un objetivo eligiendo acciones, utilizando herramientas y verificando los resultados en un bucle, en lugar de dar una sola respuesta.
¿Cuál es la diferencia entre un chatbot y un agente de IA?
Un chatbot responde principalmente a cada mensaje. Un agente puede planificar varios pasos, recurrir a herramientas y cambiar de rumbo en función de lo que suceda en el camino.
¿Los agentes de IA necesitan un modelo de lenguaje grande?
La mayoría de los más modernos utilizan un LLM para tomar decisiones, aunque la idea más amplia de agentes de software es más antigua y puede utilizar reglas u otros métodos de IA.
¿Son seguros los agentes de IA?
Conlleven riesgos reales, incluidas acciones incorrectas e inyecciones rápidas. Limite sus permisos, solicite aprobación para pasos arriesgados, establezca límites estrictos y registre todo.
¿Puede un agente de IA reemplazar a un desarrollador o evaluador?
Hoy no en general. Pueden manejar muchas tareas bien definidas, pero las personas aún necesitan establecer metas, revisar el resultado y asumir la responsabilidad del resultado.
sigue aprendiendo
¿Necesitas ayuda con pruebas, WordPress o SEO?
Ayudamos a los equipos a enviar mejor software y hacer crecer sus sitios. Cuéntenos en qué está trabajando y le sugeriremos un siguiente paso claro.
Más guías sobre testing, IA y desarrollo moderno
¿Te gustó este artículo? Elige un tema y salta directo a nuestros tutoriales más recientes.
Explicación de las alucinaciones de la IA: por qué los modelos de lenguaje inventan cosas y cómo reducirlas
Se explicaron las alucinaciones de la IA: qué son, por qué los modelos de lenguaje las producen, tipos comunes, cómo reducirlas con conexión a tierr…
Leer artículo →DevOpsExplicación de las variables de entorno: archivos .env, secretos y configuración bien hechos
Variables de entorno explicadas con ejemplos de Python que ejecutamos: leerlas y configurarlas, por qué cada valor es una cadena, archivos .env, her…
Leer artículo →Desarrollo de softwareExplicación de la limitación de velocidad de API: algoritmos, encabezados y manejo de errores 429
La limitación de la tasa de API se explica con una simulación que ejecutamos: depósito de tokens, ventana fija, ventana deslizante, 429 respuestas, …
Leer artículo →Automatización de pruebasBurlarse en Python: unittest.mock, patch y los errores que hacen que las pruebas mientan
Burlarse en Python con unittest.mock, probado: Mock y return_value, side_effect, parches donde se usa un nombre, especificación y autospec, fechas d…
Leer artículo →Pruebas de softwareExplicación de la cobertura del código: cobertura de línea versus sucursal y lo que realmente significa 100%
Cobertura del código explicada con una ejecución real de cobertura.py: cobertura de línea, rama y condición, lectura de un informe, por qué una cobe…
Leer artículo →Bases de datos y SQLDELETE vs TRUNCATE vs DROP en SQL: diferencias, reversión y cuándo usar cada uno
DELETE vs TRUNCATE vs DROP explicado con SQL probado: qué elimina cada uno, reversión, activadores, restablecimiento de identidad, velocidad y en qu…
Leer artículo →Bases de datos y SQLVistas SQL explicadas: cree, use y evite los errores, con ejemplos
Vistas SQL explicadas con consultas que ejecutamos: creación de una vista, resultados en vivo, ocultación de columnas, rendimiento, vistas actualiza…
Leer artículo →Desarrollo de softwareInterfaz TypeScript versus tipo: diferencias reales, probadas con el compilador
Interfaz TypeScript versus tipo, verificado con el compilador real: qué pueden hacer ambos, qué puede hacer solo uno, fusión de declaraciones, exten…
Leer artículo →Desarrollo de softwarePython *args y **kwargs explicados: funciones flexibles con ejemplos claros
Python *args y **kwargs explicados con el código que ejecutamos: empaquetado y desempaquetado, orden de parámetros, argumentos solo de palabras clav…
Leer artículo →Desarrollo de softwareFunciones Lambda de Python: sintaxis, usos reales y cuándo no utilizarlas
Funciones lambda de Python explicadas con el código que ejecutamos: sintaxis, clasificación con clave, mapa y filtro, cierres, trampa de enlace tard…
Leer artículo →Inteligencia artificial¿Qué son los agentes de IA? Cómo funcionan, con un bucle de agente simple que puedes ejecutar
¿Qué son los agentes de IA? Una guía sencilla sobre el bucle del agente, las herramientas, la memoria y las barreras de seguridad, con un pequeño bu…
Leer artículo →DevOpsMonitoreo versus observabilidad: la verdadera diferencia, con registros, métricas y seguimientos
Explicación del monitoreo versus observabilidad: fallas conocidas y desconocidas, registros, métricas y seguimientos, un recorrido por incidentes de…
Leer artículo →DevOpsDocker Volumes versus Bind Mounts: persistir los datos del contenedor de la manera correcta
Se explican los volúmenes de Docker frente a los montajes de enlace: por qué desaparecen los datos del contenedor, volúmenes con nombre, montajes de…
Leer artículo →Automatización de pruebasTDD vs BDD: diferencias clave, una función creada en ambos sentidos y cuándo usar cada una
TDD vs BDD explicado con una característica de descuento construida en ambos sentidos: refactor rojo-verde con el código que ejecutamos, escenarios …
Leer artículo →Desarrollo de softwareGit merge vs rebase: diferencias, ejemplos y cuándo usar cada uno
Git merge vs rebase explicado con salida real del log, una tabla comparativa, la regla de oro del rebase y un flujo de trabajo seguro para equipos.
Leer artículo →Desarrollo de softwareList comprehension en Python: sintaxis, ejemplos y cuándo evitarla
List comprehension en Python explicada: sintaxis, filtros, if-else, bucles anidados, tiempos medidos y cuándo es mejor un bucle for normal.
Leer artículo →