Ir al contenido principal

Crea un asistente de IA autónomo con el framework Mosaic AI Agent

 Build an Autonomous AI Assistant with Mosaic AI Agent Framework

Publicado: 26 de noviembre de 2024

IA16 min de lectura

Summary

  • Los modelos de lenguaje grandes están revolucionando la forma en que interactuamos con la tecnología aprovechando el procesamiento avanzado del lenguaje natural para realizar tareas complejas.
  • Los agentes LLM son sistemas de IA avanzados de próxima generación diseñados para ejecutar tareas complejas que requieren razonamiento, planificación, memoria de conversaciones pasadas y el uso de diversas herramientas para ajustar las respuestas.
  • El Mosaic AI Agent Framework permite a los desarrolladores crear sistemas de agentes a escala de producción a través de cualquier LLM, permitiendo la personalización y capacitando a los agentes para tomar decisiones autónomas.

Los modelos de lenguaje grandes están revolucionando la forma en que interactuamos con la tecnología al aprovechar el procesamiento avanzado del lenguaje natural para realizar tareas complejas. En los últimos años, hemos visto modelos LLM de última generación que permiten una amplia gama de aplicaciones innovadoras. El año pasado marcó un cambio hacia RAG (Generación Aumentada por Recuperación), donde los usuarios crearon chatbots de IA interactivos alimentando LLMs con sus datos organizacionales (a través de incrustación vectorial).  

Pero apenas estamos arañando la superficie. Si bien es potente, la “Generación Aumentada por Recuperación” limita nuestra aplicación a la recuperación de conocimiento estático. Imagine un agente de servicio al cliente típico que no solo responde preguntas de datos internos, sino que también toma acción con una intervención humana mínima. Con los LLMs, podemos crear aplicaciones de toma de decisiones totalmente autónomas que no solo responden, sino que también actúan sobre las consultas de los usuarios. Las posibilidades son infinitas: desde el análisis de datos internos hasta búsquedas web y más allá. 

La comprensión semántica y la capacidad lingüística de los Modelos de Lenguaje Grandes nos permiten crear aplicaciones de toma de decisiones totalmente autónomas que no solo pueden responder, sino también “actuar” basándose en las consultas de los usuarios.

Databricks Mosaic AI Agent Framework: 

Databricks lanzó el framework Mosaic AI Agent que permite a los desarrolladores crear un framework de agente a escala de producción a través de cualquier LLM. Una de las capacidades principales es crear herramientas en Databricks que están diseñadas para ayudar a construir, implementar y evaluar agentes de IA de calidad de producción, como aplicaciones de Generación Aumentada por Recuperación (RAG) y mucho más. Los desarrolladores pueden crear y registrar agentes usando cualquier biblioteca e integrarlos con MLFlow. Pueden parametrizar agentes para experimentar e iterar rápidamente en el desarrollo. El trazado de agentes permite a los desarrolladores registrar, analizar y comparar trazados para depurar y comprender cómo responde el agente a las solicitudes.

En esta primera parte del blog, exploraremos los agentes, sus componentes principales y construiremos un agente de IA de servicio al cliente autónomo y multi-turno para una empresa minorista en línea con uno de los modelos Fundacionales de Databricks (de código abierto) de mejor rendimiento en la Plataforma. En la próxima serie del blog, exploraremos el framework multi-agente y construiremos un agente multi-paso de razonamiento avanzado para la misma aplicación empresarial. 

¿Qué es un Agente LLM?

Los agentes LLM son sistemas de IA avanzados de próxima generación diseñados para ejecutar tareas complejas que requieren razonamiento. Pueden pensar por adelantado, recordar conversaciones pasadas y usar varias herramientas para ajustar sus respuestas según la situación y el estilo necesarios. 

Una progresión natural de RAG, los Agentes LLM son un enfoque donde los modelos de lenguaje grandes de última generación son potenciados con sistemas/herramientas o funciones externas para tomar decisiones autónomas. En un sistema de IA compuesto, un agente puede considerarse un motor de decisiones que está potenciado con memoria, capacidad de introspección, uso de herramientas y mucho más. Piense en ellos como motores de decisiones súper inteligentes que pueden aprender, razonar y actuar de forma independiente: el objetivo final de crear una aplicación de IA verdaderamente autónoma.

Componentes Principales: 

Los componentes clave de una aplicación agéntica incluyen: 

  • LLM/Agente Central: Funciona como un componente central de toma de decisiones para el flujo de trabajo.
  • Memoria: Gestiona la conversación pasada y las respuestas anteriores del agente.
  • Planificación: Un componente central del agente para planificar tareas futuras a ejecutar.
  • Herramientas: Funciones y programas para realizar ciertas tareas e interactuar con el LLM principal. 

Agente Central:  

El elemento principal de un framework de agente es un modelo de lenguaje grande pre-entrenado de propósito general que puede procesar y comprender datos. Estos son generalmente modelos pre-entrenados de alto rendimiento; la interacción con estos modelos comienza al crear prompts específicos que proporcionan contexto esencial, guiándolo sobre cómo responder, qué herramientas utilizar y los objetivos a alcanzar durante la interacción.

Un framework de agente también permite la personalización, permitiéndole asignar al modelo una identidad distinta. Esto significa que puede adaptar sus características y experiencia para alinearse mejor con las demandas de una tarea o interacción particular. En última instancia, un agente LLM combina a la perfección capacidades avanzadas de procesamiento de datos con características personalizables, lo que lo convierte en una herramienta invaluable para manejar diversas tareas con precisión y flexibilidad.

Memoria:  

La memoria es un componente importante de una arquitectura agéntica. Es un almacenamiento temporal que el agente utiliza para guardar conversaciones. Puede ser una memoria de trabajo a corto plazo donde el agente LLM mantiene la información actual con contexto inmediato y borra la memoria una vez que la tarea se completa. Esto es temporal. 

Por otro lado, tenemos la memoria a largo plazo (a veces llamada memoria episódica) que mantiene conversaciones prolongadas y puede ayudar al agente a comprender patrones, aprender de tareas anteriores y recordar información para tomar mejores decisiones en interacciones futuras. Esta conversación generalmente se persiste en una base de datos externa. (por ejemplo, una base de datos vectorial). 

La combinación de estas dos memorias permite a un agente proporcionar respuestas personalizadas y trabajar mejor según las preferencias del usuario con el tiempo. Recuerde, no confunda la memoria del agente con la memoria conversacional de nuestro LLM. Ambas sirven para propósitos diferentes.   

Planificador: 

El siguiente componente de un agente LLM es la capacidad de planificación, que ayuda a desglosar tareas complejas en tareas manejables y ejecuta cada tarea. Al formular el plan, el componente planificador puede utilizar múltiples técnicas de razonamiento, como el razonamiento de cadena de pensamiento o el razonamiento jerárquico, como árboles de decisión, para decidir qué camino seguir. 

Una vez que se crea el plan, los agentes lo revisan y evalúan su efectividad a través de varios mecanismos de retroalimentación interna. Algunos métodos comunes incluyen ReAct y Reflexion. Estos métodos ayudan a los LLM a resolver tareas complejas al ciclar a través de una secuencia de pensamientos y observar los resultados. El proceso se repite para una mejora iterativa. 

En un chatbot multi-turno típico con un solo agente LLM, la planificación y la orquestación son realizadas por un único modelo de lenguaje, mientras que en un framework multi-agente, agentes separados pueden realizar tareas específicas como enrutamiento, planificación, etc. Discutiremos esto más en la próxima parte del blog sobre el framework multi-agente.   

Herramientas: 

Las herramientas son los bloques de construcción de los agentes, realizan diferentes tareas según lo guiado por el núcleo central del agente. Las herramientas pueden ser varios ejecutores de tareas de cualquier forma (llamadas a API, funciones de python o SQL, búsqueda web, codificación, espacio Databricks Genie o cualquier otra cosa que desee que la herramienta funcione. Con la integración de herramientas, un agente LLM realiza tareas específicas a través de flujos de trabajo, recopilando observaciones y reuniendo la información necesaria para completar subtareas. 

Al construir estas aplicaciones, una cosa a considerar es la duración de la interacción. Puede agotar fácilmente el límite de contexto de los LLMs cuando la interacción es prolongada y existe la posibilidad de olvidar las conversaciones anteriores. Durante una conversación larga con un usuario, el flujo de control de la decisión puede ser de un solo hilo, multi-hilo en paralelo o en un bucle. Cuanto más compleja sea la cadena de decisiones, más compleja será su implementación. 

En la Figura 1 a continuación, un único LLM de alto rendimiento es la clave para la toma de decisiones. Basado en la pregunta del usuario, entiende qué camino debe tomar para enrutar el flujo de decisiones. Puede utilizar múltiples herramientas para realizar ciertas acciones, almacenar resultados intermedios en memoria, realizar planificación posterior y finalmente devolver el resultado al usuario.

Un LLM de alto rendimiento es la clave para la toma de decisiones. Basado en la pregunta del usuario, entiende qué camino debe tomar para enrutar el flujo de decisiones. Puede utilizar múltiples herramientas para realizar ciertas acciones, almacenar resultados intermedios en memoria, realizar planificación posterior y finalmente devolver el resultado al usuario.

Agente Conversacional para Comercio Electrónico: 

Para el propósito de este blog, crearemos un asistente de IA de servicio al cliente autónomo para un minorista de productos electrónicos en línea a través de Mosaic AI Agent Framework. Este asistente interactuará con los clientes, responderá sus preguntas y realizará acciones basadas en las instrucciones del usuario. Podemos introducir un humano en el bucle para verificar la respuesta de la aplicación. Usaríamos la funcionalidad de herramientas de Mosaic AI para crear y registrar nuestras herramientas dentro de Unity Catalog. A continuación, se muestra la relación de entidades (datos sintéticos) que construimos para el blog.

Diagrama de relación de entidades

A continuación, se muestra el diagrama de flujo de procesos simple para nuestro caso de uso.

Flujo de proceso simple del marco del agente

Fragmento de código: (SQL) Detalles del pedido

El siguiente código devuelve los detalles del pedido basándose en un ID de pedido proporcionado por el usuario. Tenga en cuenta la descripción del campo de entrada y el campo comment de la función. No omita los comentarios de la función y los parámetros, que son críticos para que los LLM llamen a las funciones/herramientas correctamente.

Los comentarios son utilizados como parámetros de metadatos por nuestro LLM central para decidir qué función ejecutar dada una consulta de usuario. Comentarios incorrectos o insuficientes pueden exponer potencialmente al LLM a ejecutar funciones/herramientas incorrectas.

Fragmento de código: (SQL) Detalles de envío 

Esta función devuelve los detalles de envío de la tabla de envíos dado un ID. De manera similar a lo anterior, los comentarios y los detalles de los metadatos son importantes para que el agente interactúe con la herramienta.

Fragmento de código: (Python) 

De manera similar, puede crear cualquier función de Python y usarla como una herramienta o función. Se puede registrar dentro de Unity Catalog de manera similar y brindarle todos los beneficios mencionados anteriormente. El siguiente ejemplo es de la herramienta de búsqueda web que hemos creado y utilizado como punto final para que nuestro agente la llame.

Para nuestro caso de uso, hemos creado múltiples herramientas que realizan diversas tareas como las siguientes:

Herramientas que realizan tareas

return_order_detailsDevuelve los detalles del pedido dado un ID de pedido
return_shipment_detailsDevuelve los detalles de envío proporcionado un ID de envío
return_product_detailsDevuelve los detalles del producto dado un ID de producto
return_product_review_detailsDevuelve un resumen de reseñas a partir de datos no estructurados
search_toolBusca en la web basándose en palabras clave y devuelve resultados
process_orderProcesa una solicitud de reembolso basándose en una consulta del usuario

Unity Catalog UCFunctionToolkit :
Utilizaremos LangChain orchestrator para construir nuestro framework de Chain en combinación con Databricks UCFunctionToolkit y modelos de API fundacionales. Puede usar cualquier framework de orquestación para construir sus agentes, pero necesitamos UCFunctionToolkit para construir nuestro agente con nuestras funciones UC (herramientas).

d

Creación del Agente:

Ahora que nuestras herramientas están listas, integraremos estas con un Modelo Fundacional de lenguaje grande alojado en Databricks. Tenga en cuenta que también puede usar su propio modelo personalizado o modelos externos a través de AI Gateway. Para el propósito de este blog, usaremos databricks-meta-llama-3-1-70b-instruct alojado en Databricks.

Este es un modelo de código abierto de Meta y ha sido configurado en Databricks para usar herramientas de manera efectiva. Tenga en cuenta que no todos los modelos son equivalentes y diferentes modelos tendrán diferentes capacidades de uso de herramientas.

Informe

La guía de IA agéntica para la empresa

Ahora que nuestro LLM está listo, usaríamos LangChain Agent executor para unir todo esto y construir un agente:

Veamos cómo se ve esto en acción con una pregunta de ejemplo:

Como cliente, imagino que comenzaré a preguntar al agente el precio de un producto en particular, “Breville Electrical Kettle”, en su empresa y en el mercado para ver ofertas competitivas. 

Basado en la pregunta, el agente entendió que debía ejecutar dos funciones/herramientas:

  • return_product_price_details - Para el precio interno
  • web_search_tool – Para buscar en la web.

La siguiente captura de pantalla muestra la ejecución secuencial de las diferentes herramientas basándose en la pregunta de un usuario.

Finalmente, con la respuesta de estas dos funciones/herramientas, el agente sintetiza la respuesta y la proporciona a continuación. El agente entendió de forma autónoma las funciones a ejecutar y respondió a la pregunta del usuario en tu nombre. ¡Bastante genial!

La ejecución secuencial de las diferentes herramientas basada en la pregunta de un usuario.

También puedes ver el seguimiento de extremo a extremo de la ejecución del agente a través de MLflow Trace. Esto ayuda enormemente en tu proceso de depuración y te proporciona claridad sobre cómo se ejecuta cada paso.

Seguimiento de extremo a extremo de la ejecución del agente a través de MLflow Trace

Memoria:

Uno de los factores clave para construir un agente es su estado y memoria. Como se mencionó anteriormente, cada función devuelve una salida y, idealmente, necesitas recordar la conversación anterior para tener una conversación de múltiples turnos. Esto se puede lograr de varias maneras a través de cualquier marco de orquestación. Para este caso, usaríamos LangChain Agent Memory para construir un bot conversacional de múltiples turnos.

Veamos cómo podemos lograr esto a través de la API de LangChain y Databricks FM. Utilizaremos el ejecutor de agente anterior y agregaremos una memoria adicional con LangChain ChatMessageHistory yRunnableWithMessageHistory.

Aquí estamos usando una memoria de chat en memoria para fines de demostración. Una vez que se instancia la memoria, la agregamos a nuestro ejecutor de agente y creamos un agente con el historial de chat a continuación. Veamos cómo se ven las respuestas con el nuevo agente.

Ahora que hemos definido el ejecutor del agente, intentemos hacer algunas preguntas de seguimiento al agente y veamos si recuerda la conversación. Presta mucha atención a session_id; este es el hilo de memoria que contiene la conversación en curso.

Historial de chat del agente

Historial de chat del agente

¡Bien! Recuerda todas las conversaciones anteriores del usuario y puede ejecutar preguntas de seguimiento muy bien. Ahora que hemos entendido cómo crear un agente y mantener su historial, veamos cómo se vería el agente de chat de conversación de extremo a extremo en acción.

Utilizaremos Databricks AI Playground para ver cómo se ve de extremo a extremo. Databricks AI Playground es un entorno similar a un chat donde puedes probar, solicitar y comparar múltiples LLM. Recuerda que también puedes servir el agente que acabas de construir como un punto final de servicio y usarlo en el Playground para probar el rendimiento de tu agente.

Chatbot de conversación de múltiples turnos:

Implementamos el agente de IA utilizando el  Databricks Mosaic AI Agent Framework, la API de modelo fundacional de Databricks  y el orquestador LangChain.

El video a continuación ilustra una conversación entre el agente de múltiples turnos que construimos usando Meta-llama-3-1-70b-instruct y nuestras funciones/herramientas de UC en Databricks.

Muestra el flujo de conversación entre un cliente y nuestro agente que selecciona dinámicamente las herramientas apropiadas y las ejecuta en función de una serie de consultas de usuario para brindar un soporte fluido a nuestro cliente.

Aquí hay un flujo de conversación de un cliente con nuestro Agente recién construido para nuestra tienda minorista en línea.

Un flujo de conversación de un cliente con nuestro Agente recién construido para nuestra tienda minorista en línea.

Desde una consulta de estado de pedido con el nombre del cliente hasta la realización de un pedido, todo se hace de forma autónoma sin intervención humana.

demostración del agente

Conclusión:

¡Y eso es todo! Con solo unas pocas líneas de código, hemos desbloqueado el poder de los agentes autónomos de múltiples turnos que pueden conversar, razonar y actuar en nombre de sus clientes. ¿El resultado? Una reducción significativa de las tareas manuales y un gran impulso en la automatización. ¡Pero apenas estamos comenzando! El Mosaic AI Agent Framework ha abierto las puertas a un mundo de posibilidades en Databricks.

Mantente atento a la próxima entrega, donde lo llevaremos al siguiente nivel con IA multiagente: piensa en múltiples agentes trabajando en armonía para abordar incluso las tareas más complejas. Para colmo, te mostraremos cómo implementarlo todo a través de MLflow y puntos finales de servicio de modelos, lo que facilitará la creación de aplicaciones agentivas a escala de producción sin comprometer la gobernanza de datos. El futuro de la IA está aquí, y está a solo un clic de distancia.

 

Artículos y materiales de referencia:

Mosaic AI: Crea y despliega sistemas de IA compuestos de calidad de producción

Anuncio del Mosaic AI Agent Framework y la evaluación de agentes | Blog de Databricks

Mosaic AI Agent Framework | Databricks

El cambio de modelos a sistemas de IA compuestos – The Berkeley Artificial Intelligence Research Blog

React: Sinergia del razonamiento y la actuación en modelos de lenguaje

Reflexion: Agentes de lenguaje con aprendizaje por refuerzo verbal

Agentes de reflexión

Agentes LLM: La guía definitiva | SuperAnnotate

Memoria en agentes LLM - DEV Community

Una encuesta sobre agentes autónomos basados en modelos de lenguaje grandes arXiv:2308.11432v5 [cs.AI] 4 de abril de 2024

Cómo ejecutar varios agentes en el mismo hilo

(Esta entrada del blog ha sido traducida utilizando herramientas basadas en inteligencia artificial) Publicación original

No te pierdas ninguna publicación de Databricks.

Suscríbete a nuestro blog y recibe las últimas publicaciones en tu bandeja de entrada.