La publicación de ChatGPT en noviembre de 2022 marcó el inicio de una carrera por desarrollar aplicaciones basadas en LLMs que permitieran automatizar tareas de alta complejidad. En este contexto aparecieron los agentes; sistemas autónomos capaces de llevar a cabo tareas complejas de razonamiento que permiten abordar problemas avanzados de negocio.
¡Comenzamos!
Un agente de IA generativa es un sistema autónomo que puede llevar a cabo tareas complejas de razonamiento a partir de instrucciones en lenguaje natural, utilizando un LLM como su núcleo de operación o motor de orquestación. A diferencia de las soluciones estáticas, los agentes pueden no solo ejecutar tareas previamente definidas, sino también interactuar con su entorno, recopilar información y utilizarla para completar tareas auto-dirigidas, logrando así objetivos específicos y adaptándose a contextos cambiantes.
Con su introducción entre 2022 y 2023, los agentes supusieron un cambio de paradigma con respecto a CÓMO utilizar un LLM para resolver tareas de complejidad muy alta.
Un agente es un módulo «racional», que es capaz de emitir pensamientos y tomar decisiones basándose en su entorno para resolver tareas que requieren de un proceso complejo de razonamiento. Técnicamente, un agente tiene dos elementos clave:
• Orquestador: El cerebro del sistema. Un LLM que cuenta con los datos necesarios para decidir cuál es el camino para resolver el problema: contexto y acceso a herramientas (tools) que ejecutan acciones.
• Tools: recursos o herramientas que el orquestador utiliza para obtener información adicional o realizar acciones concretas. Un ejemplo podría ser un agente diseñado para trabajar sobre bases de datos SQL. Una de las tools principales e iniciales sería imprimir_schema. Ésta permite al orquestador analizar la estructura de la base de datos antes de decidir los siguientes pasos, es decir, conocer el contexto con el que trabaja. Las herramientas varían según la tarea específica del agente, y pueden incluir desde funciones como búsqueda en internet o acceso a APIs externas hasta el uso de otros agentes especializados en tareas complementarias.
La eficiencia de un agente para resolver problemas complejos depende de la colaboración entre el orquestador y las herramientas. Esta sinergia se materializa mediante patrones de trabajo avanzados, como el esquema ReACT (Reason and Action). Este patrón propone un bucle donde el agente «observa el entorno», «razona sobre él» y finalmente «toma una decisión» sobre su siguiente paso en la resolución de la tarea, su siguiente acción. Combinando el razonamiento secuencial y herramientas especializadas, los agentes pueden manejar tareas de prácticamente cualquier ámbito, alcanzando niveles de automatización y adaptabilidad no vistos hasta el momento.
Capacidades de los Agentes
Los LLMs son capaces de resolver muchas tareas que requieren razonamiento complejo. Un ejemplo claro sería el Retrieval Augmented Generation (RAG). Un caso de uso de negocio que presentan muchas compañías, es la combinación de “documentación interna + poder de razonamiento + reducción de alucinaciones y ventana de contexto”. Un LLM por sí solo es excelente en esa aplicación, hasta que el problema se torna complejo debido a la naturaleza de la información con la que cuenta.
Pongamos un ejemplo. Un usuario cuenta con tres fuentes de documentación interna: un grupo de archivos PDF con documentación técnica basada en texto plano, varias fotografías de elementos de su fábrica y una base de datos SQL con muchos datos sobre incidencias en esa maquinaria.
Un patrón RAG clásico intentaría indexar todo el contenido en las tres fuentes de información haciendo un proceso de «chunking», indexación y posterior retrieval en tiempo de inferencia. ¿Cuál es el problema? La base de datos SQL contiene datos que vectorialmente no aportan suficiente contexto como para que una búsqueda semántica les dé prioridad sobre otros «chunks», y la única manera de acceder a la información sería combinando las diferentes columnas de varias tablas de la BBDD. ¿Qué solución encontramos para este problema? -> Utilizar un Agente SQL.
Un Agente SQL es un agente capaz de, ante una query en lenguaje natural, generar acciones sobre la base de datos: *imprimir_schema*, *SQL_query*, *listar_tablas*…, extraer información y, posteriormente, ser capaz de resolver la query en lenguaje natural. El agente:
• Observa su entorno -> Base de datos SQL + Query
• Razona sobre el estado del entorno -> Según el paso en el que se encuentre, conoce información (o no) sobre la BBDD y sabe qué hay/no hay dentro de la BBDD.
• Toma la decisión -> Emite una acción que llama a una «tool», por ejemplo, *listar_tablas*, para observar qué estructura tiene la base de datos.
El agente entra en un bucle que es resuelto cuando obtiene toda la información necesaria para emitir una conclusión que resuelve la query del usuario.
PODCAST IA | Copilot para 365 e IA Generativa ¡El Futuro del Trabajo ya está Aquí!
¿Quieres conocer Copilot para Microsoft 365 en profundidad y qué puede hacer con IA? Suscríbete ya a nuestro podcast de Data & IA y echa un vistazo a nuestro programa especial sobre Microsoft Fabric.
🔽🔽 Aquí puedes ver el programa completo 🔽🔽
Ventajas de los Agentes
Los agentes presentan importantes ventajas en una aplicación de negocio.
• Capacidad de razonamiento complejo: La principal ventaja de un agente es su capacidad de elaborar tareas mucho más complejas que un simple LLM. Todos los elementos del agente aportan su granito de arena para poder realizar este tipo de tareas.
• Integraciones: Las herramientas con las que cuenta el orquestador tienen el límite que el creador considere. Interactuar con un entorno abierto y diverso permite consultar datos, alterar el estado de todo tipo de herramientas o consumir servicios. Varios ejemplos pueden ser: búsqueda en internet, interacción con APIs de terceros o interacción con servicios como email, calendar o spotify, entre muchos otros. ¿Te imaginas un LLM que pueda enviar correos electrónicos o atender a los correos electrónicos de tu plataforma de atención al cliente de una manera autónoma y razonada? ¿Te imaginas un LLM que pudiera subir una foto a Instagram?
• *Reducción de limitaciones de un LLM*: El uso de herramientas avanzadas te permite reducir las limitaciones de un LLM. Un ejemplo es la creación de una tool que permita gestionar la ventana de contexto del modelo, sin necesidad de consumirla en una sola llamada. Otro ejemplo más básico sería, por ejemplo, el cálculo de operaciones matemáticas. ¿Te imaginas un LLM que tenga acceso a una calculadora y la utilice como ayuda para resolver tareas complejas a nivel matemático?
Limitaciones de los Agentes
Los agentes también tienen limitaciones. Al estar basados en un LLM, hay limitantes inherentes que son muy complicados de superar:
• Naturaleza estocástica de un LLM: Un LLM es un modelo probabilístico, y no deja de ser una herramienta para construir aplicaciones complejas. Este limitante está directamente relacionado con la llamada «capacidad de razonamiento del modelo». Puesto que los agentes confían un LLM como su orquestador de operaciones*, siempre existe una posibilidad de que el modelo alucine, tome decisiones incorrectas o asuma hechos falsos como correctos. El trabajo detrás del diseño de los agentes consiste en reducir a una probabilidad cercana a 0 estos sucesos.
• Falta de la herramienta adecuada: Si un agente no contiene una herramienta que en cierto momento considera imprescindible, puede entrar en un bucle que acabe resultado en una respuesta errónea. Es vital que en el proceso de diseño del agente se acote su alcance y se le otorguen todas las herramientas que pueda necesitar.
• Latencia: La respuesta dada por un agente tarda más que una interacción de pregunta-respuesta con un LLM. La razón principal es que el razonamiento de un agente es iterativo, y no solo hace llamadas al LLM para orquestar las acciones, sino que ha de ejecutar esas mismas. Dependiendo de la naturaleza y complejidad del agente, una respuesta puede tardar uno o más órdenes de magnitud que una simple llamada a un modelo.
¿Debería Construir un Agente?
Identificar la necesidad de un agente en un proceso interno de negocio es una tarea compleja pero vital para poder agilizarlo y automatizarlo. La naturaleza del problema debe tener inherentemente una necesidad de razonamiento avanzado que un LLM no puede conseguir por sí solo en una sola interacción.
Varios ejemplos de negocio son:
• Agente Financiero: Ayuda a tomar decisiones financieras teniendo acceso a portales de información financiera, documentación y expertos en la materia.
• Agente de Marketing: Te permite generar contenido, crear marketing personalizado y enviarlo a tus potenciales clientes.
• Agente de Análisis de Negocio: Te ayuda a tomar decisiones con respecto a tu negocio. Puede hacer comparaciones de tu competencia dentro del mercado, y darte información en tiempo real que te permita tomar decisiones.
• Agente de Análisis de Negocio: Te ayuda a tomar decisiones con respecto a tu negocio. Puede hacer comparaciones de tu competencia dentro del mercado, y darte información en tiempo real que te permita tomar decisiones.
• Los que se te ocurran, las posibilidades son muchísimas.
Toca por tanto hacerse la siguiente pregunta. ¿Qué proceso/procesos puedo automatizar con un agente para optimizar mi tiempo de trabajo?
Conclusión
Implementar un agente en un proceso interno de tu negocio es una manera inteligente y autónoma de resolver un problema de productividad y automatización. Los agentes aprovechan la inteligencia de los modelos de lenguaje. Además, son agnósticos a ellos, por lo que, conforme mejore la capacidad de razonamiento de los modelos, los agentes mejorarán su desempeño también.
Adoptar esta tecnología está a tu alcance debido a la democratización de la Inteligencia Artificial. Hay que identificar el caso de uso de negocio, plantear el problema y ejecutar la construcción correcta del agente autónomo. Este proceso te acercará a la optimización de tu tiempo y de tu negocio.