Saltar al contenido
Capítulo 05 · 12 min

Agentes que aguantan el tipo

«Agente» es la palabra más sobrevendida de la IA. Despojado del bombo, un agente es un modelo en un bucle que puede llamar a herramientas, leer los resultados y decidir qué hacer a continuación. Esa estructura simple es genuinamente potente para tareas acotadas, y genuinamente frágil cuando le pides demasiado. Este capítulo trata de cómo quedarte en el lado útil de esa línea.

The agent loopThe model sits on the left, tools on the right. An arrow goes from the model to a chosen tool, the tool returns a result, and a step counter tracks how many turns have elapsed. If the model emits a final answer or hits the step limit, the loop exits.modeltoolssearch()calc()run_sql()call a toolread the resultSTEP COUNTER1234Nexits on final answer or step cap

Un agente es un becario con una lista de tareas y un teléfono. Útil para recados; peligroso con tu tarjeta de crédito.

Un agente no es más que un bucle

No hay magia. Un agente es: un prompt de sistema, un conjunto de herramientas y un bucle que ejecuta el modelo, ejecuta cualquier herramienta que llame, devuelve el resultado y repite hasta que el modelo produce una respuesta final o alcanza un límite de pasos. Esa es toda la idea. Todo lo demás es disciplina de ingeniería alrededor de ese bucle.

The agent loopThe model sits on the left, tools on the right. An arrow goes from the model to a chosen tool, the tool returns a result, and a step counter tracks how many turns have elapsed. If the model emits a final answer or hits the step limit, the loop exits.modeltoolssearch()calc()run_sql()call a toolread the resultSTEP COUNTER1234Nexits on final answer or step cap
El modelo llama a una herramienta, lee el resultado, decide el siguiente paso y se detiene cuando tiene una respuesta, o cuando alcanza el tope de pasos.
messages = [system_prompt, user_message]
for step in range(MAX_STEPS):
    response = model.call(messages, tools=TOOLS)
    if response.is_final_answer:
        return response.text
    result = run_tool(response.tool_call)   # your code, with all the guards
    messages += [response, result]
raise StepLimitExceeded()                   # never loop forever

Por qué los agentes se caen: el error compuesto

La razón por la que las ejecuciones largas de agentes fracasan no es que el modelo sea tonto. Es aritmética. Si cada paso es fiable al 95 %, una tarea de 10 pasos tiene éxito el 0,95^10 ≈ 60 % de las veces. Una tarea de 20 pasos: 36 %. El error se compone de forma multiplicativa, y no hay ningún prompt que derogue la multiplicación.

El estado honesto de los agentes: excelentes para tareas bien acotadas de unos pocos pasos («tría este ticket con estas herramientas», «concilia estos dos registros»), poco fiables para objetivos abiertos y de largo horizonte. El alcance es la palanca.

Cómo construir uno que funcione

Todo agente de producción fiable hace el mismo puñado de cosas. Ninguna es exótica; todas son disciplina.

  • Alcance estrecho: un solo trabajo, un conjunto pequeño de herramientas, una definición clara de lo terminado. Cuanto más estrecho el alcance, más tratable la evaluación.
  • Tope de pasos estricto: el bucle siempre debe terminar. Un agente sin tope es una factura sin techo.
  • Herramientas idempotentes: cada herramienta segura de reintentar, porque el agente reintentará.
  • Humano en el bucle para las acciones de alto riesgo: propón, no ejecutes, cuando la acción es irreversible.
  • Registra todo: cada prompt, respuesta, llamada a herramienta y resultado. Lo necesitarás dentro de la semana.

Y prefiere la estructura a la autonomía. Un flujo de trabajo fijo con un modelo en cada punto de decisión es más fiable que un agente totalmente autónomo que decide su propio plan, y mucho más fácil de evaluar. Recurre a la autonomía abierta solo cuando la tarea lo exige de verdad, lo cual es más raro de lo que sugieren las demos.

Los sistemas multiagente: prematuros casi siempre

Es tentador construir un equipo de agentes especializados que se hablan entre sí. A veces ese es el diseño correcto. Por lo general multiplica el problema del error compuesto (ahora tienes varios bucles frágiles coordinándose) a la vez que vuelve el sistema mucho más difícil de depurar y evaluar. Haz que funcione primero un solo agente. Añade agentes solo cuando puedas señalar el límite concreto que uno solo alcanzó.

Una línea por cada uno

  • Un agente es un modelo en un bucle con herramientas y un tope de pasos. No hay magia, solo ingeniería alrededor del bucle.
  • Los agentes se caen porque el error se compone: el 95 % por paso es ~60 % en 10 pasos. A la multiplicación no le importa tu prompt.
  • Constrúyelos estrechos: un solo trabajo, conjunto pequeño de herramientas, tope de pasos estricto, herramientas idempotentes, puertas humanas, registro completo.
  • Prefiere los flujos de trabajo a la autonomía y un solo agente a varios; añade complejidad solo frente a un límite que de verdad hayas alcanzado.
Agentes que aguantan el tipo · Cursos de IA · SDEN