En este tutorial, creará un sistema multiagente totalmente local con IBM® Granite utilizando BeeAI en Python. Estos agentes colaborarán para negociar un acuerdo contractual de servicios de paisajismo entre dos empresas teniendo en cuenta las tendencias del mercado y las limitaciones presupuestarias internas. El flujo de trabajo estará compuesto por un agente asesor presupuestario, un agente sintetizador de contratos, un agente de búsqueda web y un agente asesor de adquisiciones. Dado el contrato, los datos presupuestarios, la industria de servicios y los nombres de las empresas proporcionados por el usuario, los agentes colaboran para producir un correo electrónico para negociar los términos del contrato a favor del cliente.
BeeAI, lanzada por IBM Research y ahora donada a Linux Foundation, es una plataforma de código abierto de IA agéntica que brinda a los desarrolladores la capacidad de crear agentes de IA desde cualquier marco.1
Un agente de inteligencia artificial (IA) se refiere a un sistema o programa creado mediante un Modelo de lenguaje grande (LLM) para realizar tareas de forma autónoma en nombre de un usuario u otro sistema mediante el diseño de su flujo de trabajo y utilizando las herramientas disponibles. Los agentes de IA son más avanzados que los chatbots tradicionales de LLM, ya que pueden acceder a herramientas predefinidas y planificar acciones futuras, además de que requieren poca o ninguna intervención humana para resolver y automatizar problemas complejos.
El predecesor de BeeAI es Bee Agent Framework, un marco de código abierto específico para crear agentes LLM únicos. Por el contrario, BeeAI proporciona un ecosistema más avanzado para crear y orquestar flujos de trabajo de múltiples agentes.
BeeAI es:
Esta guía paso a paso se puede encontrar en nuestro repositorio de GitHub en forma de Jupyter Notebook.
Primero debemos configurar nuestro entorno cumpliendo algunos requisitos previos.
1. En este tutorial, no utilizaremos una interfaz de programación de aplicaciones (API) como las disponibles a través de IBM® watsonx.ai y OpenAI. En su lugar, podemos instalar la última versión de Ollama para ejecutar el modelo localmente.
La forma más sencilla de instalar Ollama para macOS, Linux y Windows es a través de su página web: https://ollama.com/download. Este paso instalará una aplicación de barra de menú para ejecutar el servidor Ollama en segundo plano y mantenerlo actualizado con las últimas versiones.
Como alternativa, puede instalar Ollama con homebrew en su terminal:
Si instala desde brew o compila desde la fuente, debe iniciar el servidor central:
2. Hay varios LLM que admiten llamadas a herramientas, como los últimos modelos Llama de Meta y los modelos Mistral de Mistral IA. Para este tutorial, utilizaremos el modelo Granite 3.3 de código abierto de IBM. Este modelo presenta capacidades mejoradas de razonamiento y seguimiento de instrucciones.3 Obtenga el último modelo de Granite 3.3 ejecutando el siguiente comando en su terminal.
3. Para evitar conflictos de dependencia de paquetes, configuremos un entorno virtual. Para crear un entorno virtual con la versión 3.11.9 de Python, ejecute el siguiente comando en su terminal.
Luego, para activar el entorno, ejecute:
4. Su archivo
Para instalar estos paquetes, ejecute el siguiente comando en su terminal.
5. Cree un nuevo archivo de Python titulado
En la parte superior del archivo Python nuevo, incluya las declaraciones de importación para las bibliotecas y módulos necesarios.
En un método principal asíncrono usando
Para obtener una imagen del flujo de trabajo de los agentes, consulte el siguiente diagrama.
Ensamblaremos cada componente de este flujo de trabajo en los siguientes pasos.
Nuestro flujo de trabajo se basa en la entrada del usuario. Las entradas iniciales requeridas son los nombres de las empresas cliente y contratista. Se le solicitará al usuario el siguiente texto tras la ejecución del flujo de trabajo en un paso posterior. Agregue el siguiente código al método principal.
También necesitaremos los nombres de los archivos que contienen el informe presupuestario de la empresa cliente,
En el siguiente código, también verificamos las extensiones de archivo para ayudar a garantizar que se alineen con nuestro formato anticipado. Si alguno de los archivos es del tipo incorrecto, se le dará una instrucción al usuario para que intente nuevamente.
La última entrada del usuario requerida es la industria del servicio descrito en el contrato. Esta entrada puede ser financiera, de construcción u otras.
La primera herramienta que podemos construir en nuestro sistema multiagente es para el agente asesor presupuestario. Este agente es responsable de leer los datos del presupuesto del cliente. La función proporcionada al agente es
Ahora, vamos a configurar la fuerza motriz del agente, la
Para ayudar a garantizar el uso adecuado de esta herramienta, utilicemos la clase
Con el adaptador LangChain de BeeAI, LangChainTool, podemos finalizar la inicialización de nuestra primera herramienta.
La siguiente herramienta que podemos crear es para el agente sintetizador por contrato. Este agente es responsable de leer el contrato entre el cliente y el contratista. La función proporcionada al agente es
En este paso, podemos agregar los distintos agentes a nuestro flujo de trabajo. Proporcionemos al asesor presupuestario y a los agentes de síntesis contractual sus herramientas personalizadas correspondientes. También podemos establecer el nombre del agente, el rol, las instrucciones, la lista de herramientas y el LLM.
Para buscar en la web las tendencias del mercado en la industria relevante, podemos crear un agente con acceso al LangChain prediseñado
El cuarto y último agente de nuestro sistema multiagente es el asesor de adquisiciones. Este agente es responsable de utilizar la información recuperada y sintetizada por los otros agentes para formular un correo electrónico convincente a la empresa contratista a favor del cliente. El correo electrónico debe considerar las tendencias del mercado y las limitaciones presupuestarias internas del cliente para negociar los términos del contrato. Este agente no requiere ninguna herramienta externa, sino que se rige por sus instrucciones.
Ahora podemos finalizar nuestro método principal con todo nuestro código hasta ahora. Al final del método principal, podemos incluir la ejecución del flujo de trabajo agéntico. Dada la
Para obtener un contrato de muestra y datos presupuestarios, así como el script final, consulte nuestro repositorio de GitHub. Para ejecutar el proyecto, podemos ejecutar el siguiente comando en nuestra terminal.
Emplee esta entrada de usuario de ejemplo:
El siguiente texto muestra un resultado de ejemplo que recibimos al ejecutar este flujo de trabajo multiagente.
Resultado:
-> El paso 'Budget Advisor' se completó con el siguiente resultado.
El presupuesto de la empresa A para el periodo muestra una variación total de -12 700 USD. Las mayores variaciones se encuentran en los salarios de los empleados (-5000 USD), la publicidad en línea (-3000 USD), la publicidad impresa (-2000 USD) y el mantenimiento y las reparaciones (-1000 USD). También hay variaciones menores en alquiler, electricidad, agua, paisajismo y servicios de limpieza. -> El paso 'Contract Synthesizer' se completó con el siguiente resultado.
El contrato entre la empresa A y la empresa B es para servicios de jardinería en la propiedad del cliente en Delaware. El pago total que debe realizar la empresa A es de 5500 USD al finalizar el trabajo. Ambas partes acordaron cumplir con las leyes y regulaciones aplicables en Delaware.
-> El paso 'Web Search' se completó con el siguiente resultado.
Asunto: Propuesta de negociación para servicios de paisajismo
Estimado equipo de la empresa B:
Espero que se encuentren bien.
Después de una cuidadosa revisión de nuestros datos presupuestarios internos y las tendencias del mercado en la industria del paisajismo, hemos identificado áreas en las que creemos que se pueden hacer ajustes para alinearnos mejor con nuestras limitaciones financieras sin dejar de mantener estándares de servicio de alta calidad.
Alcance del trabajo: proponemos una reducción en el alcance del trabajo, centrándonos en los servicios esenciales que afectan directamente el atractivo exterior y el valor de la propiedad. Esto puede incluir podar árboles y arbustos y mantener el césped, con plantas coloridas ocasionales para mejorar el interés visual.
Condiciones de pago: a la luz de las tendencias actuales del mercado que indican una ligera disminución en los costos de paisajismo debido al aumento de la competencia, solicitamos amablemente una reconsideración del monto total del pago. Proponemos un pago total revisado de 4800 USD al finalizar el trabajo, lo que refleja una reducción del 12 %.
Plazo: para optimizar la asignación de recursos y minimizar la interrupción de nuestras operaciones, sugerimos ampliar el plazo del proyecto dos semanas. Este ajuste nos permitirá gestionar mejor nuestras limitaciones presupuestarias internas sin comprometer la calidad del servicio.
Creemos que estos ajustes permitirán a ambas partes lograr un resultado mutuamente beneficioso mientras se adhieren a las leyes y regulaciones aplicables en Delaware. Agradecemos su comprensión y estamos abiertos a más conversaciones para llegar a un acuerdo que se alinee con las tendencias actuales del mercado y nuestras limitaciones presupuestarias internas.
Gracias por su atención a este asunto. Háganos saber si estos ajustes propuestos son aceptables o si tiene alguna contrapropuesta.
Atentamente,
[Su nombre]
Empresa A
-> El paso 'Procurement Advisor' se completó con el siguiente resultado.
La respuesta final se envió a la empresa B, proponiendo un pago total revisado de 4800 USD al finalizar el trabajo, lo que refleja una reducción del 12 %. La propuesta también incluye un alcance de trabajo reducido y un cronograma extendido del proyecto.
Correo electrónico final: la respuesta final se envió a la empresa B, proponiendo un pago total revisado de 4800 USD al finalizar el trabajo, lo que refleja una reducción del 12 %. La propuesta también incluye un alcance de trabajo reducido y un cronograma extendido del proyecto.
Evidentemente, los agentes invocaron correctamente sus herramientas disponibles para leer y sintetizar los datos del contrato y el presupuesto para luego formular un correo electrónico efectivo en el que se negocian los términos del contrato a favor del cliente. Podemos ver el resultado de cada agente dentro del flujo de trabajo y la importancia del rol de cada agente. Los detalles clave, como el alcance del trabajo de paisajismo, las condiciones de pago y el cronograma del contrato, se destacan en el correo electrónico. También podemos ver que la negociación utiliza las tendencias del mercado en paisajismo en beneficio del cliente. Por último, el pago total revisado de 4800 USD propuesto en el correo electrónico se encuentra dentro del presupuesto de paisajismo del cliente de 5200 USD. ¡Esto parece excelente!
Con este tutorial, creó varios agentes BeeAI, cada uno con herramientas personalizadas. Cada agente desempeñó un papel crítico en el caso de uso del sistema de gestión de contratos. Algunos siguientes pasos pueden incluir explorar los diversos repositorios de GitHub disponibles en la organización i-am-bee GitHub y crear más herramientas personalizadas. En los repositorios, también encontrará notebooks iniciales de Python para comprender mejor los componentes principales de BeeAI, como
Permita a los desarrolladores crear, desplegar y monitorear agentes de IA con el estudio IBM watsonx.ai.
Cree una productividad revolucionaria con uno de los conjuntos de capacidades más completos de la industria para ayudar a las empresas a crear, personalizar y gestionar asistentes y agentes de IA.
Logre un ahorro de más del 90 % en costos de energía con los modelos más pequeños y abiertos de Granite, diseñados para mejorar la eficiencia de los desarrolladores. Estos modelos preparados para empresas ofrecen un rendimiento excepcional contra puntos de referencia de seguridad y en una amplia gama de tareas empresariales, desde la ciberseguridad hasta el RAG.