12 de enero de 2025 # 26 - Agentes y sistemas multiagentes ## 1. Introducción Últimamente, en el ámbito de la inteligencia artificial, todo el mundo habla de los agentes y de los sistemas multiagentes. Muchos dicen que no es más que un detalle de implementación, y en parte tienen razón, pero hay cierta gracia en la evolución de un asistente a un agente, y hay cierta magia en poner a varias IAs a colaborar como si fueran personitas en un equipo de trabajo. Vamos a desgranarlo un poco, a ver qué hay detrás de este concepto que suena más complicado de lo que es. Merece la pena que lo entendáis porque tiene pinta que el futuro del software son sistemas multiagentes. > [!cite] [...] tiene pinta de que el futuro del software son sistemas multiagentes. ## 2. ¿Qué es un agente? No hay una definición correcta y precisa de lo que es un agente, sino que hay tantas como personas escribiendo sobre el tema. Y todo esto es nuevo y todo el mundo está aprendiendo todavía. Dicho esto, vamos con lo que podría ser la definición más sencilla posible: > [!info] Definición simple de agente > Un agente es un asistente de IA que puede realizar tareas, idealmente de forma especializada. Tenéis la píldora donde se ve, de forma innecesariamente detallada en 6 pasos o niveles evolutivos, cómo hemos pasado de asistentes a agentes, aquí --> [Evolución del Asistente al Agente en 6 pasos ](1-agentes-definicion.md) ### 2.1. Las 3 características de un agente Desde mi punto de vista, lo que diferencia a un asistente de un agentes es que este último tiene tanto el **comportamiento** como el **conocimiento** personalizado, y además puede realizar **acciones**. 1. **Comportamiento personalizado:** Esto se logra utilizando un prompt interno o instrucciones específicas que guían sus acciones. Por ejemplo, un agente diseñado para explicar contenido a un usuario no se comporta igual que uno diseñado para extraer conceptos de documentos técnicos. 2. **Conocimiento especializado:** Acceso a información o la capacidad de buscar datos relevantes. Esto puede incluir bases de datos internas, capacidades de búsqueda en internet o entrenamiento específico en un conjunto de datos. 3. **Capacidad de ejecutar acciones:** Estas acciones podrían ser, por ejemplo, realizar transacciones en una base de datos o utilizar un software de cálculo para realizar operaciones complejas. Para esto un agente tiene configurado el acceso a un API y es capaz de ejecutarla, o podría simplemente tener acceso a una herramienta y utilizarla igual que lo haría una persona. Esto último de tener acceso a herramientas y usarlas como una persona lo vamos a dejar para otro post, que tiene mucha miga. De momento quedaos con que un agente tiene *agency*, palabro inglés que no sé cómo traducir, pero que viene a ser que *puede realizar acciones*. Dentro imagen simple de lo que sería un agente: ![[Agente-simple.jpg]] > Comúnmente se considera que, si solo ofrece respuestas y conversaciones, es un asistente. Si realiza acciones, es un agente. Tampoco os lo grabéis a fuego, que la definición no está ni medio clara, y todo esto se está construyendo sobre la marcha. ## 3. Sistemas multiagentes Ahora que hemos pasado de asistentes generalistas --meras herramientas de lenguaje-- a agentes especializados que pueden realizar acciones, vamos al siguiente paso: **poner varios agentes a trabajar juntos**. Poner varios agentes a trabajar juntos es lo que se llama un sistema multiagentes. En lugar de intentar crear una inteligencia artificial que sea generalista y "sepa de todo", se apuesta por dividir el trabajo en pequeñas piezas y asignar cada una a un "experto". Cada asistente o agente, tiene un rol definido, y cuando colaboran, el resultado es mucho más eficiente y efectivo que esperar que una sola IA haga todo. Es como montar un equipo de especialistas en lugar de confiar en una sola persona para resolver cualquier problema. Estos agentes especializados, coordinados dentro de un sistema, son la clave para resolver problemas complejos de forma eficiente y escalable. Como en todo grupo de trabajo de especialistas, hay varios tipos de agentes, incluyendo algunos coordinadores, y hay varias formas de orquestar el trabajo en grupo. Vamos con los tipos de agentes. ### 3.1. Tipos de agentes en un sistema multiagentes ![[sistema-ma-genérico.jpg]] Normalmente, existen dos tipos principales de agentes dentro de un sistema multiagentes: 1. **Agente Orquestador o Coordinador:** Este agente actúa como el "director de orquesta", asegurándose de que todos los agentes especializados trabajen en sincronía. Coordina las tareas, gestiona el flujo de información entre agentes y mantiene la interacción con el usuario. Sin un orquestador, puede ser un poco caótico, simplemente especialistas aportando información y haciendo tareas cada uno a lo suyo. 2. **Agentes Especializados:** Son los encargados de realizar tareas concretas y bien definidas. Cada uno tiene un objetivo claro y está diseñado para sobresalir en su área. Cada agente opera con una entrada y produce una salida, y el orquestador lo gestiona. Un agente simple podría por ejemplo, simplemente recibir un texto y devolverlo transformado (resumido, traducido, etc). Un agente más complejo podría, por ejemplo, recibir información sobre un problema, resolverlo ejecutando acciones y devolver el resultado. ### 3.2. Patrones y arquitecturas Esto me recuerda a mis tiempos de consultor de integración, y a la que era mi biblia en aquella época, de más de 700 páginas, llamada [Enterprise Integration Patterns](https://www.amazon.com/o/asin/0321200683/ref=nosim/enterpriseint-20). En función del tipo de sistema que estamos construyendo, utilizaremos un patrón u otro. Aquí 3 ejemplos: #### Orquestador y trabajadores: ![[MA-Orquestador-y-currantes.jpg]] Un agente orquestador actúa como el cerebro del sistema, delegando tareas a agentes especializados y reuniendo los resultados. Esto es ideal para tareas complejas con pasos impredecibles, donde el orquestador tiene que ir tomando decisiones de qué tarea hacer a continuación en función del resultado de la anterior. #### Cadena en serie: ![[MA-cadena-en-serie.jpg]] Conocido como *prompt chaining* también. Cada agente procesa una parte específica del problema y pasa los resultados al siguiente. Es ideal para tareas predecibles y lineales, como crear un curso educativo donde un agente selecciona los recursos y otro organiza el contenido. #### División de tareas y ejecución en paralelo: ![[MA-paralelo.jpg]] Aquí varios agentes trabajan simultáneamente en diferentes aspectos de una tarea, y luego sus resultados se integran. Esto es útil para ahorrar tiempo y aportar múltiples perspectivas, donde **no hace falta coordinar la ejecución**, simplemente cada uno hace su parte y luego se suman o integran. --- Son solo 3 ejemplos, de los muchos que hay y que irán surgiendo. ¿Es alguno mejor que otro? No necesariamente, depende de la tarea. Parte del trabajo de diseño de un sistema multiagentes es **buscar el patrón con la arquitectura más sencilla posible que resuelva el problema**. --- ## 4. Ejemplo práctico: un sistema multiagentes para formación personalizada Los sistemas multiagentes brillan especialmente cuando hay que resolver problemas complejos dividiéndolos en tareas más pequeñas y manejables. Un buen ejemplo podría ser un **sistema para formación personalizada**. Imaginemos este escenario: ### Problema a resolver: Cada persona tiene necesidades educativas diferentes, y diseñar un plan de aprendizaje único y efectivo para cada usuario puede ser un desafío enorme si lo intentamos de manera manual. ### Solución: Un sistema multiagentes que trabaje como un equipo de especialistas, con un orquestador. Podría ser algo así: ![[MA-sistema-aprendizaje.jpg]] Los agentes serían: #### 1. Perfilador del Usuario Recopila información sobre el nivel de conocimiento, intereses y preferencias de aprendizaje del usuario. #### 2. Curador de Contenido Selecciona los recursos educativos más relevantes de una base de datos o de recursos en Internet. #### 3. Adaptador de Formato Transforma y ajusta el contenido al formato preferido del usuario (infografías, vídeos, texto interactivo, etc.) #### 4. Agente de Evaluación Mide el progreso del usuario y ajusta el plan de aprendizaje sobre la marcha según los resultados. #### 5. Orquestador Coordina el flujo de información entre los agentes, asegurándose de que todo funcione de forma integrada y mantiene la comunicación clara con el usuario. --- **Resultado:** Un plan de formación personalizado, dinámico y adaptado, que maximiza el aprendizaje de cada persona de manera eficiente. Os dejo un diagrama detallado sobre cómo podría funcionar. Es bastante grande, caso 4.000 píxeles de ancho, así que podéis abrirlo en una ventana nueva para verlo con detalle. ![[MA-aprendizaje-detallado.jpg]] Este tipo de sistemas no solo ahorran tiempo y recursos, sino que también son escalables. La clave de todo es que estamos dividiendo un problema complejo en pequeños problemas fáciles de resolver por separado. --- # Reflexión final 2023 fue el año de la IA generativa. 2024 ha sido el año del perfeccionamiento y mejoras. 2025 es, entre otras cosas, el año los sistemas multiagente. Vamos a ver nuevas herramientas de IA cada vez más potentes. Por dentro, serán sistemas multiagentes, y estarán basados en coordinación de agentes especializados. Gracias a los sistemas multiagentes, vamos a ver avances espectaculares este año. Lo cual me recuerda a una vieja máxima del mundo del software que dice que todo sistema complejo que funciona es sí o sí la evolución de un sistema simple que funcionaba. La cita original, de John Gall, en su libro [_Systemantics: How Systems Really Work and How They Fail_ (1975)](https://www.amazon.com/Systemantics-Systems-Work-Especially-They/dp/0812906748) > [!cite] John Gall "Un sistema complejo que funciona invariablemente ha evolucionado a partir de un sistema simple que funcionaba. Un sistema complejo diseñado desde cero nunca funciona y no puede hacerse funcionar. Tienes que empezar de nuevo con un sistema simple que funcione." # Bonus Tenéis los diagramas aquí, en Excalidraw, interactivo --> https://link.excalidraw.com/l/9gMeTZLXisg/7oB7qlGbXXZ **Mentes Inquietas**, Publicado el 12 de enero de 2025, también en [LinkedIn](https://www.linkedin.com/pulse/26-agentes-y-sistemas-multiagentes-david-hurtado-tor%C3%A1n-sowtf/) y enlazado en [X](https://x.com/dhtoran/status/1878369213267464553)