Es importante analizar detenidamente cómo y dónde se toman las decisiones en un sistema de agentes.
Delegar más decisiones en un LLM permite que el sistema pueda generalizarse a más tareas, aunque quizá a costa de la velocidad, la fiabilidad y la solidez.
Siempre que sea posible, intente trasladar del LLM al código explícito del software la mayor parte posible del proceso de toma de decisiones. Esto es especialmente importante en los flujos de trabajo de alto riesgo o de producción.
Al diseñar un sistema de agentes basado en LLM, una de las decisiones más importantes es cuánto del proceso de toma de decisiones se encapsula en un modelo LLM y cuánto se implementa mediante software explícito.
Para entenderlo mejor, podemos considerar esta elección como un espectro entre los siguientes enfoques:
Las arquitecturas basadas en enrutadores definen explícitamente el orden y la lógica en el código, lo que garantiza la facilidad de prueba, la previsibilidad y la solidez en tareas de ámbito limitado (también se denominan «agentes de flujo de trabajo»).
Los agentes orquestadores recurren a modelos de lenguaje de gran tamaño (LLM) para decidir dinámicamente los flujos de las tareas mediante instrucciones en lenguaje natural. Son idóneos para interacciones abiertas en las que una lógica predefinida resulta insuficiente o inviable.


En los flujos de trabajo de producción y alto riesgo, solemos recomendar un mayor uso de funciones basadas en enrutadores y reservar los orquestadores para aplicaciones que exijan conversaciones flexibles y de carácter general.
Arquitecturas basadas en enrutadores
Los sistemas de agentes con enrutador:
Definen explícitamente el flujo de toma de decisiones mediante código o software y utilizan un LLM para determinar qué ruta debe seguir dicho software.
Se asemejan más a los sistemas de software tradicionales, ya que siguen rutas claras y previsibles que producen resultados más coherentes.
Son idóneos para tareas que pueden definirse de manera estricta.
A continuación se muestra un ejemplo simplificado de un agente de reservas para un chatbot de una aerolínea que emplea el «enfoque de enrutador». Aunque el LLM ayuda a clasificar la intención de la pregunta entre tres opciones posibles, es el software el que finalmente vincula esa intención con una respuesta de texto predefinida. Como el LLM está sometido a muchas restricciones, el usuario percibirá un comportamiento más coherente.


Arquitecturas de orquestadores
A diferencia de los sistemas con enrutador, los sistemas de agentes con orquestador:
Definen los flujos lógicos mediante instrucciones en lenguaje natural en lugar de software. Nota: en comparación con un lenguaje de programación, el lenguaje natural es intrínsecamente ambiguo y flexible, características que son tanto positivas como negativas, según veremos más adelante. Concebimos este enfoque como «intención en lugar de instrucción».
Pueden ofrecer varias opciones de procesamiento y dejar que el LLM determine el orden y el método de ejecución.
Pueden crear dinámicamente nuevas rutas lógicas que resultarían difíciles de definir explícitamente mediante software.
Esta ambigüedad puede generar resultados incoherentes, pero, cuando funciona, puede parecer «mágica».
El siguiente ejemplo aplica un enfoque de orquestador al mismo caso simplificado de la aerolínea. En lugar de dejar que el software decida qué respuesta es adecuada, la toma de decisiones se delega en la capa del LLM. Aquí tenemos un sistema multiagente en el que un agente orquestador «principal» clasifica la consulta del usuario y la deriva a un agente diseñado específicamente para cambiar vuelos, que finalmente responde al usuario.
En este ejemplo, la capa del LLM desempeña las funciones de clasificador, enrutador y redactor de respuestas. En el ejemplo del enrutador, solo desempeñaba la función de clasificador, mientras que el software se ocupaba del resto.


Siempre que sea posible, recomendamos utilizar enfoques basados en enrutadores, ya que ofrecen las siguientes ventajas:
Velocidad y eficiencia: los cálculos locales son más rápidos que los orquestadores que dependen de API externas. También resulta mucho más barato procesar la lógica «IF/ELSE» en Python que pagar a un proveedor de LLM para que la procese mediante su modelo de 400 000 millones de parámetros.
Facilidad de prueba y previsibilidad: las prácticas de software consolidadas facilitan considerablemente la depuración, las pruebas y el mantenimiento.
Transparencia y fiabilidad: una menor variación del comportamiento facilita la resolución de problemas. Además, una mayor proporción del flujo de la aplicación se expresa mediante software transparente y sujeto a control de versiones, en lugar de mediante los parámetros opacos e ininterpretables de un LLM.
Los enfoques basados en enrutadores tienen el inconveniente de que pueden resultar rígidos e inflexibles y afrontar dificultades ante problemas más abiertos. Los usuarios podrían considerar aburrido o estancado un chatbot que siempre ofrezca exactamente las mismas respuestas.
Los diseños con orquestadores ofrecen prestaciones muy potentes:
Planificación: pueden planificar respuestas de forma dinámica.
Selección de herramientas y derivación a agentes: seleccionan las herramientas adecuadas o delegan tareas en agentes.
Combinación iterativa de resultados: iteran y recombinan resultados de forma creativa.
Determinación de la finalización: determinan cuándo se ha recopilado suficiente información para completar una respuesta.
Los marcos como Pydantic-AI o el SDK de Agents de OpenAI permiten implementar la orquestación de forma rápida y sencilla. Por eso, este enfoque es excelente para demostraciones o pruebas de concepto.
Este enfoque presenta los siguientes inconvenientes:
No existe ninguna garantía de que los pasos de planificación del LLM y las acciones posteriores sean correctos o adecuados. El sistema con enrutador presenta el mismo problema, pero, al estar más restringido, su comportamiento es más previsible.
En tareas sencillas y bien definidas, es poco probable que necesitemos toda la capacidad de un sistema multiagente. Por ejemplo, en el caso de nuestro agente de aerolínea, probablemente solo haya un número limitado de tipos de consulta que una persona quiera realizar al interactuar con un sistema de asistencia de una aerolínea.
Como el LLM contiene más lógica, es mucho más susceptible de sufrir un jailbreak o ser explotado por actores maliciosos.
Este enfoque abstrae la toma de decisiones dentro del LLM y, por tanto, dificulta la comprensión del sistema, aunque herramientas de supervisión como Langfuse o Braintrust pueden ayudar en parte.
Nota para el lector: aunque las capacidades de los modelos evolucionan con rapidez, es poco probable que lo expuesto a continuación cambie a corto plazo.
Determine el alcance del problema.
¿Puede definir fácilmente en un diagrama la lógica de decisión que desea?
¿Resultan inaceptables los fallos o los comportamientos inesperados en su aplicación?
Responder «sí» a cualquiera de las dos preguntas anteriores indica que las funciones de enrutador serían más adecuadas.
Siempre que sea posible, recomendamos utilizar enfoques con enrutador mientras resulten suficientes. Como principio general, si una parte del sistema puede expresarse mediante código, debe implementarse en código; es decir, no conviene abusar de los LLM cuando no sean necesarios.
Cuando se alcanzan los límites de estos enfoques, algunas de las ventajas abiertas de los orquestadores pueden reproducirse de forma controlada. Por ejemplo:
Selección de herramientas y derivación a agentes: pueden implementarse fácilmente mediante ramificaciones condicionales o clasificadores LLM.
Determinación de la finalización: unos clasificadores LLM sencillos pueden comprobar si la respuesta está completa antes de devolvérsela al usuario.
Sin embargo, la «planificación» y la «combinación iterativa de resultados» son, sin duda, mucho más difíciles de conseguir en un sistema rígido con enrutador. Por tanto, cuando una tarea requiera estas funciones, según determine un clasificador LLM u otra lógica, recomendamos crear en el sistema una rama de orquestador con menos restricciones.
La elección entre arquitecturas de enrutadores y de orquestadores debe reflejar la claridad, la complejidad y el estilo de interacción de la aplicación. Actualmente, los enfoques basados en enrutadores ofrecen fiabilidad, eficiencia y facilidad de prueba para tareas bien definidas. Los orquestadores ofrecen mayor flexibilidad para interacciones conversacionales más amplias.
A medida que los LLM sigan avanzando, el equilibrio entre ambos enfoques podría evolucionar. Nos inclinamos por las arquitecturas basadas en enrutadores o híbridas para las cargas de trabajo de producción, y reservamos los orquestadores para problemas abiertos que exijan una interacción dinámica y similar a la humana.