Ir al contenido

IDEAS PRÁCTICAS · ASIMOV INGENIERÍA

19. Orquestación de agentes: quién manda y cómo se coordinan

Descubre cómo se coordinan varios agentes de inteligencia artificial, qué función cumple un orquestador y cómo diseñar flujos de trabajo para que diferentes agentes colaboren de manera eficiente, controlada y segura.

Table of contents

No titles in the blog post

En el artículo anterior vimos cómo una arquitectura multi-agente permite combinar varios agentes especializados para resolver problemas que pueden ser demasiado complejos para un único agente. En lugar de pedirle a una sola inteligencia artificial que investigue, analice, programe y revise al mismo tiempo, podemos dividir el trabajo entre diferentes componentes.n el artículo anterior vimos cómo una arquitectura multi-agente permite combinar varios agentes especializados para resolver problemas que pueden ser demasiado complejos para un único agente. En lugar de pedirle a una sola inteligencia artificial que investigue, analice, programe y revise al mismo tiempo, podemos dividir el trabajo entre diferentes componentes.

Pero cuando tenemos varios agentes aparece una pregunta fundamental: ¿quién decide qué debe hacer cada uno? Tener varios agentes no garantiza que colaboren correctamente. Necesitamos establecer reglas que indiquen cuándo debe ejecutarse cada agente, qué información debe recibir, qué resultado debe producir y qué agente debe continuar con el proceso.

Aquí entra en juego la orquestación de agentes. La orquestación es el conjunto de mecanismos utilizados para coordinar agentes, herramientas, información y decisiones dentro de un flujo de trabajo. Es lo que permite convertir un grupo de agentes independientes en un sistema organizado.

En este artículo veremos qué es un orquestador, cuáles son sus principales responsabilidades, cómo puede asignar tareas, qué tipos de flujos existen y cómo podemos diseñar una arquitectura de orquestación para aplicaciones reales.

1. ¿Qué significa orquestar agentes de IA?

La palabra “orquestación” puede parecer complicada, pero el concepto es sencillo.

Imaginemos una orquesta musical. Tenemos diferentes músicos y cada uno toca un instrumento distinto. No todos realizan la misma actividad al mismo tiempo. Existe una persona que coordina cuándo entra cada sección, cómo se mantiene el ritmo y cómo se combina todo para producir una pieza completa.

En un sistema multi-agente ocurre algo parecido.

Tenemos diferentes agentes con diferentes responsabilidades y necesitamos controlar la manera en que colaboran.

El orquestador puede decidir:

  • Qué agente debe comenzar.
  • Qué información debe recibir.
  • Qué herramienta puede utilizar.
  • Qué agente debe ejecutarse después.
  • Qué hacer cuando ocurre un error.
  • Cuándo es necesario solicitar aprobación humana.
  • Cuándo debe finalizar el proceso.

Por lo tanto, el orquestador es el componente encargado de controlar el flujo de trabajo.

2. El orquestador no necesariamente resuelve el problema

Una confusión frecuente consiste en pensar que el orquestador tiene que hacer todo el trabajo.

No necesariamente.

Su principal responsabilidad es coordinar.

Por ejemplo, supongamos que queremos analizar un documento técnico.

El orquestador puede recibir la solicitud del usuario y determinar que primero debe intervenir un agente especializado en documentos.

Después puede enviar el resultado a un agente de análisis.

Finalmente puede solicitar a un agente revisor que compruebe las conclusiones.

El orquestador no tiene que analizar personalmente el documento. Su trabajo consiste en decidir quién debe hacerlo y en qué momento.

Esta separación permite mantener una arquitectura más organizada.

3. ¿Por qué necesitamos coordinación?

Supongamos que tenemos tres agentes:

Agente A: investigador.

Agente B: analista.

Agente C: redactor.

Si simplemente los colocamos juntos, todavía tenemos que responder varias preguntas.

¿Qué agente empieza?

¿Qué información recibe el analista?

¿El redactor puede trabajar si el análisis está incompleto?

¿Qué ocurre si el investigador no encuentra información?

¿Qué pasa si el analista produce un resultado incorrecto?

¿Quién decide cuándo el trabajo terminó?

Estas preguntas forman parte del problema de orquestación.

Un sistema multi-agente necesita algo más que agentes. Necesita un flujo de ejecución definido.

4. Orquestación basada en reglas

La forma más sencilla de coordinar agentes es mediante reglas tradicionales.

Por ejemplo:

Si el usuario solicita una investigación,

entonces ejecutar agente investigador.

Después:

Si la investigación terminó correctamente,

entonces ejecutar agente analista.

Y finalmente:

Si el análisis fue validado,

entonces ejecutar agente redactor.

Este enfoque tiene una ventaja importante: es predecible.

Podemos saber exactamente qué sucederá ante cada situación.

No todo tiene que ser decidido por un modelo de inteligencia artificial. De hecho, utilizar reglas tradicionales para controlar partes críticas del flujo puede hacer que el sistema sea mucho más confiable.

5. Orquestación mediante un agente supervisor

Otra posibilidad consiste en utilizar un agente de IA como supervisor.

En este caso, el supervisor recibe el objetivo general y decide qué agente debe intervenir.

Por ejemplo:

Usuario:

“Investiga las causas más comunes de fallas en motores eléctricos y prepara un informe.”

El supervisor podría determinar:

Paso 1: enviar la tarea al agente investigador.

Después de recibir los resultados:

Paso 2: enviar la información al agente técnico.

Finalmente:

Paso 3: enviar las conclusiones al agente redactor.

El supervisor utiliza el modelo de IA para tomar decisiones sobre el flujo.

Esto proporciona mayor flexibilidad, aunque también significa que debemos controlar cuidadosamente las decisiones del supervisor.

6. Flujo secuencial

Uno de los patrones de orquestación más fáciles de comprender es el flujo secuencial.

En este caso, cada agente se ejecuta después del anterior.

Por ejemplo:

Investigador → Analista → Redactor → Revisor

El investigador produce información.

El analista utiliza esa información.

El redactor utiliza el análisis.

El revisor comprueba el resultado.

Este patrón funciona muy bien cuando existe una dependencia clara entre las tareas.

Por ejemplo, no tiene sentido que el redactor genere un reporte antes de que exista información que pueda utilizar.

La ventaja principal es que el comportamiento resulta sencillo de controlar.

7. Flujo paralelo

En otros casos, varias tareas pueden ejecutarse simultáneamente.

Supongamos que queremos analizar un producto tecnológico.

Podemos utilizar:

Agente A: investigación técnica.

Agente B: investigación de características.

Agente C: búsqueda de alternativas.

Agente D: análisis de opiniones.

Estas tareas pueden realizarse de manera independiente.

Después, el orquestador reúne los resultados y los entrega a un agente encargado de generar una conclusión.

Este patrón puede ser mucho más rápido que ejecutar todos los agentes uno después de otro.

Sin embargo, requiere administrar correctamente los resultados y controlar los recursos utilizados.

8. Orquestación condicional

No todos los procesos tienen que seguir exactamente el mismo camino.

Podemos utilizar condiciones para decidir qué debe ocurrir.

Por ejemplo:

Si un documento contiene información suficiente, podemos enviarlo directamente al agente analista.

Si está incompleto, podemos solicitar información adicional.

Si contiene información sensible, podemos enviarlo primero a un agente encargado de revisar permisos.

Esto permite crear flujos dinámicos.

Conceptualmente podríamos tener:

Solicitud → análisis inicial → decisión → agente A o agente B

Aquí el orquestador funciona como un sistema de control que determina cuál será el siguiente paso.

9. Handoffs: pasar una tarea de un agente a otro

En los sistemas de agentes aparece frecuentemente el concepto de handoff, que podemos entender como una transferencia de responsabilidad.

Un agente comienza trabajando con el usuario, pero determina que otro agente está mejor preparado para continuar.

Por ejemplo, un agente general recibe:

“Necesito analizar una base de datos de ventas.”

El agente general identifica que la tarea requiere análisis de datos.

Entonces transfiere la tarea al agente especializado en datos.

El segundo agente recibe el contexto necesario y continúa el trabajo.

Esto permite construir sistemas donde diferentes especialistas pueden tomar el control dependiendo de la situación.

10. El contexto que se debe transferir

Cuando un agente entrega una tarea a otro, existe un detalle muy importante:

¿Qué información debe recibir el siguiente agente?

No siempre conviene enviar toda la conversación.

Supongamos que el usuario ha escrito veinte mensajes y solamente los últimos tres contienen información relevante para el análisis.

Enviar todo el contexto puede aumentar el consumo de tokens y dificultar la interpretación.

Por eso, el orquestador puede preparar un contexto específico.

Por ejemplo:

Objetivo: analizar ventas de agosto.

Datos disponibles: archivo ventas.csv.

Tarea: calcular crecimiento mensual.

Restricción: no modificar los datos originales.

El siguiente agente recibe exactamente la información necesaria para realizar su función.

11. Estado del sistema

Para coordinar correctamente agentes necesitamos saber en qué estado se encuentra el proceso.

Imaginemos un sistema de generación de reportes.

Podríamos tener estados como:

recibido

investigando

analizando

redactando

revisando

terminado

El orquestador puede utilizar este estado para determinar qué debe ocurrir después.

Si el estado es “analizando”, sabe que todavía no debe entregar el reporte final.

Si el estado cambia a “revisando”, puede activar al agente correspondiente.

El concepto de estado resulta especialmente importante cuando los procesos son largos o pueden pausarse y continuar posteriormente.

12. Qué ocurre cuando un agente falla

Los agentes pueden equivocarse.

Una API puede dejar de responder.

Una búsqueda puede no producir resultados.

Un agente puede generar una consulta incorrecta.

Un archivo puede estar corrupto.

Por eso, la orquestación también debe incluir manejo de errores.

Supongamos que un agente de base de datos intenta realizar una consulta y recibe un error.

El orquestador podría:

  1. Registrar el error.
  2. Solicitar al agente que corrija la consulta.
  3. Reintentar la operación.
  4. Si continúa fallando, detener el proceso.
  5. Informar al usuario.

Esto es mucho más seguro que permitir que el sistema continúe como si nada hubiera ocurrido.

13. Reintentos y límites

Un sistema de agentes debe tener límites.

Supongamos que un agente intenta resolver un problema y falla repetidamente.

Si no establecemos un límite, podría entrar en un ciclo:

intentar → fallar → corregir → intentar → fallar → repetir

Esto puede consumir recursos y generar costos innecesarios.

Por eso podemos establecer reglas como:

Máximo de tres intentos.

Después de tres errores, el sistema detiene el proceso o solicita intervención humana.

Los límites también pueden aplicarse al número de llamadas a APIs, búsquedas web, ejecuciones de código y cantidad de agentes activados.

14. Orquestación y memoria

La memoria también puede formar parte del proceso de coordinación.

Supongamos que un sistema de soporte técnico ya ha analizado varios incidentes relacionados con una máquina.

Cuando aparece un nuevo problema, el orquestador puede solicitar al agente de memoria que recupere incidentes anteriores similares.

Después puede entregar esa información al agente de diagnóstico.

Así, la memoria se convierte en otro componente del flujo.

La arquitectura podría funcionar conceptualmente de esta manera:

Solicitud → Memoria → Diagnóstico → Herramientas → Revisión → Resultado

Esto conecta directamente con lo que vimos anteriormente sobre memoria persistente y bases de datos vectoriales.

15. Orquestación con herramientas externas

Los agentes no solamente pueden comunicarse entre ellos.

También pueden utilizar herramientas externas.

Por ejemplo, un sistema podría tener:

Agente investigador → búsqueda web

Agente de datos → base de datos

Agente programador → Python

Agente documental → archivos

El orquestador determina cuándo debe utilizarse cada recurso.

Esto permite crear flujos donde la inteligencia artificial no está aislada, sino conectada con sistemas reales.

16. Un ejemplo de orquestación para IoT

Veamos un ejemplo relacionado con ingeniería.

Supongamos que tenemos una instalación IoT con sensores de temperatura, presión y gas.

El sistema recibe continuamente nuevas lecturas.

El orquestador puede recibir una alerta cuando un valor supera determinado límite.

Primero activa un agente de análisis.

El agente determina si la lectura realmente representa una anomalía.

Si existe una anomalía, el orquestador activa un agente de diagnóstico.

Este agente consulta el historial de lecturas y analiza posibles causas.

Después puede activar un agente de recomendaciones.

Finalmente, un agente de notificaciones prepara un mensaje para el usuario.

El proceso podría ser:

Sensor → Orquestador → Análisis → Diagnóstico → Recomendación → Notificación

En este ejemplo, el orquestador controla el flujo, pero no necesariamente realiza el análisis técnico.

17. Decisiones críticas y supervisión humana

Una arquitectura de agentes no debería asumir que la inteligencia artificial tiene permiso para realizar cualquier acción.

Esto es especialmente importante cuando el sistema puede afectar el mundo físico.

Por ejemplo, un agente puede detectar una condición peligrosa en una instalación y recomendar cerrar una válvula.

Pero el sistema podría establecer que las acciones físicas críticas requieren autorización.

El flujo sería:

Agente → recomendación → autorización → ejecución

En otras aplicaciones, incluso podríamos establecer diferentes niveles.

Una acción de bajo riesgo puede ejecutarse automáticamente.

Una acción de riesgo medio puede requerir una segunda validación.

Una acción crítica necesita autorización humana.

Esto permite combinar autonomía con control.

18. Orquestación centralizada

En una arquitectura centralizada existe un componente principal que controla prácticamente todo el flujo.

Por ejemplo:

Orquestador

→ Investigador

→ Analista

→ Programador

→ Revisor

Todos los agentes reciben instrucciones del orquestador.

Este diseño tiene una ventaja importante: resulta relativamente fácil de entender.

También facilita registrar las decisiones y controlar permisos.

Sin embargo, si el orquestador falla, una gran parte del sistema puede quedar detenida.

19. Orquestación distribuida

Otra posibilidad consiste en permitir que los agentes tomen algunas decisiones por sí mismos.

Un agente puede determinar que necesita la ayuda de otro y comunicarse directamente con él.

Esto reduce la dependencia de un único coordinador.

Sin embargo, también aumenta la complejidad.

Cuando muchos agentes pueden iniciar acciones independientemente, resulta más difícil predecir el comportamiento general.

Por eso, en sistemas reales puede ser conveniente combinar ambos enfoques: mantener una coordinación central para las decisiones importantes y permitir cierta autonomía local.

20. La importancia de los registros

Cuando tenemos un sistema con varios agentes, necesitamos saber qué ocurrió.

Por ejemplo:

10:30 — Solicitud recibida.

10:30 — Orquestador activa agente investigador.

10:31 — Investigación completada.

10:31 — Agente analista activado.

10:32 — Análisis terminado.

10:32 — Agente revisor detecta inconsistencia.

10:33 — Análisis corregido.

Estos registros son conocidos como logs y son fundamentales para depurar sistemas.

Si un usuario recibe un resultado incorrecto, podemos revisar qué agente produjo el problema y en qué parte del flujo ocurrió.

21. Cómo evitar una arquitectura demasiado complicada

Un error frecuente al aprender sobre agentes es intentar utilizar todos los conceptos al mismo tiempo.

Podemos terminar con:

  • Cinco agentes.
  • Tres memorias.
  • Diez herramientas.
  • Varias APIs.
  • Ejecución paralela.
  • Agentes que llaman a otros agentes.
  • Reintentos automáticos.
  • Supervisores.
  • Revisores.

Aunque técnicamente sea posible, esto puede convertir un proyecto sencillo en un sistema difícil de mantener.

Una mejor estrategia consiste en comenzar con un flujo pequeño.

Por ejemplo:

Agente A → Agente B

Después agregar validación:

Agente A → Agente B → Revisor

Y solamente cuando sea necesario introducir un orquestador más avanzado.

22. Un sistema completo de orquestación

Imaginemos ahora una aplicación empresarial para analizar solicitudes de clientes.

El usuario escribe:

“Analiza esta solicitud y dime qué departamento debe atenderla.”

El orquestador recibe el mensaje.

Primero activa un agente clasificador.

El clasificador determina si el problema pertenece a ventas, soporte técnico o administración.

Después, el orquestador envía la solicitud al agente correspondiente.

Si se trata de soporte técnico, el agente puede consultar documentación y una base de datos de incidentes.

Después genera una respuesta.

Un agente revisor comprueba que la información sea correcta.

Finalmente, el sistema entrega la respuesta al usuario.

Aquí podemos observar que el orquestador no tiene que ser el componente más inteligente. Su valor está en organizar correctamente el trabajo.

23. Frameworks y orquestación

A medida que los sistemas crecen, escribir manualmente toda la lógica de coordinación puede resultar complicado.

Frameworks como LangGraph están diseñados precisamente para trabajar con flujos de agentes, estados, decisiones y ciclos de ejecución.

Otros frameworks, como CrewAI, facilitan la definición de equipos de agentes con roles y tareas específicas.

La herramienta adecuada depende de la arquitectura que queramos construir.

Para aprender, incluso puede ser conveniente comenzar sin framework y construir un pequeño flujo utilizando Python. Después podemos migrar a una herramienta especializada cuando la complejidad lo justifique.

24. Cómo diseñar una buena estrategia de orquestación

Antes de escribir código, conviene responder algunas preguntas.

¿Cuál es el objetivo principal?

Debemos definir claramente qué resultado esperamos.

¿Qué tareas existen?

Dividimos el problema en actividades concretas.

¿Qué agente es responsable de cada tarea?

Cada agente debe tener una función clara.

¿Qué información necesita cada agente?

No debemos enviar contexto innecesario.

¿Qué ocurre si falla?

Debemos definir reintentos, alternativas o mecanismos de detención.

¿Qué acciones necesitan autorización?

Las acciones críticas deben tener controles.

¿Cómo sabemos que terminamos?

El sistema necesita una condición clara de finalización.

Estas preguntas permiten diseñar la arquitectura antes de comenzar a programarla.

25. Orquestación no significa control absoluto

Aunque el orquestador sea responsable del flujo, no necesariamente debe controlar cada detalle.

Podemos permitir que un agente especializado tome decisiones internas.

Por ejemplo, el orquestador puede decir:

“Analiza este conjunto de datos.”

El agente de análisis puede decidir internamente si necesita Python, qué cálculos realizar y cómo interpretar los resultados.

Después devuelve un resultado al orquestador.

Esto permite combinar dos niveles de decisión:

Orquestación: decide qué tarea debe realizarse.

Agente: decide cómo realizar esa tarea.

Esta separación es una de las ideas más importantes para construir sistemas escalables.

26. ¿Cuándo necesitamos un orquestador?

No todos los agentes necesitan un sistema de orquestación complejo.

Si solamente tenemos un agente con una herramienta, probablemente no necesitamos uno.

Si tenemos dos agentes con un flujo completamente fijo, unas cuantas reglas pueden ser suficientes.

El orquestador comienza a ser especialmente útil cuando tenemos:

  • Varios agentes.
  • Diferentes rutas de ejecución.
  • Dependencias entre tareas.
  • Errores y reintentos.
  • Ejecución paralela.
  • Memoria compartida.
  • Herramientas externas.
  • Acciones que necesitan autorización.
  • Procesos largos.

En estos escenarios, la coordinación deja de ser un detalle secundario y se convierte en una parte fundamental de la arquitectura.

Conclusiones

La orquestación es uno de los elementos fundamentales para construir sistemas multi-agente funcionales. Mientras que los agentes se encargan de realizar tareas especializadas, el orquestador controla cómo se conectan esas tareas y determina qué debe ocurrir en cada etapa del proceso.

Podemos utilizar reglas, agentes supervisores o combinaciones de ambos. También podemos crear flujos secuenciales, paralelos, condicionales o jerárquicos, dependiendo de las necesidades de la aplicación.

Una buena arquitectura de orquestación debe controlar el contexto, el estado, los errores, los permisos y las condiciones de finalización. También debe evitar una complejidad innecesaria: no necesitamos utilizar múltiples agentes si una función sencilla puede resolver el problema.

En el siguiente artículo profundizaremos precisamente en uno de los conceptos que hacen posible estos sistemas: los agentes con roles especializados, donde cada agente funciona como un integrante de un equipo de inteligencia artificial con responsabilidades concretas.

Anterior                                                                                                       Siguiente