Iniciando en Autogen Explorando los fundamentos de un marco de trabajo multiagente

Comenzando en Autogen Explorando los fundamentos de un marco de trabajo multiagente

Introducción

Embárcate en un emocionante viaje hacia el futuro del desarrollo de software con ‘Lanzándose en Autogen: Explorando los Conceptos Básicos de un Marco de Multi-Agentes’. A raíz de ChatGPT de OpenAI, un reino especializado conocido como agentes LLM está experimentando un aumento sin precedentes, revolucionando el desarrollo de agentes de IA. Desde automatizar tareas mundanas hasta enfrentar desafíos en la toma de decisiones dinámicas, los agentes LLM están ampliando los límites de lo que alguna vez se consideró imposible.LLM los agentes están empujando los límites de lo que alguna vez se consideró imposible.

A medida que entramos en la era de la computación espacial, imagina un mundo donde las computadoras se fusionan sin problemas con la realidad y la importancia de los agentes de IA se vuelve primordial. Imagina instruir a los agentes a través de palabras y gestos mientras ejecutan tareas con capacidades de razonamiento y actuación incomparables. Sin embargo, estamos en el amanecer de la revolución de los agentes de IA, presenciando el nacimiento de nuevas infraestructuras, herramientas y marcos que empoderan a los agentes para enfrentar tareas cada vez más complejas. Autogen, un marco de vanguardia para crear sistemas de chat multi-agentes, toma el centro de nuestro enfoque en esta exploración.

Acompáñanos en este artículo mientras desentrañamos las complejidades de los agentes de IA en las etapas iniciales de la revolución, adentrándonos en las capacidades de Autogen y descubriendo cómo dar vida a estas entidades inteligentes.

Objetivos de Aprendizaje

  • Comprender qué son los agentes LLM
  • Aprender qué es Autogen y explorar los conceptos básicos de construcción de agentes con Autogen
  • Construir agentes con Autogen y las API de OpenAI
  • Explorar casos de uso del mundo real de los agentes LLM

Este artículo fue publicado como parte del Data Science Blogathon.

¿Qué son los agentes LLM?

Los Modelos de Lenguaje “vanilla” son excelentes para hacer muchas cosas, como traducción, respuesta a preguntas, etc. Sin embargo, su conocimiento y capacidad son limitados. Es como un albañil sin sus herramientas mientras construye una casa. Sin embargo, se ha observado que los LLM pueden razonar y actuar si se les proveen las herramientas necesarias. La mayoría de los LLM tienen un conocimiento limitado del mundo, pero podemos aumentarlos con información de fuentes personalizadas a través de indicaciones.

Podemos lograr esto a través de dos métodos. La Generación con Recuperación y los agentes LLM. En un RAG, alimentamos a los modelos con información a través de canalizaciones personalizadas codificadas en duro. Pero con los agentes, el LLM, basado en su razonamiento, utilizará una herramienta a su disposición. Por ejemplo, GPT-4 con la herramienta Serper navegará por Internet y responderá en consecuencia, o puede buscar y analizar el rendimiento de acciones cuando tiene acceso a la herramienta de Yahoo Finance. Entonces, esta combinación de LLM, herramientas y un marco para razonar y tomar acción es lo que es un agente de IA.

Ha habido un rápido aumento en plataformas y herramientas para construir agentes LLM. Autogen es una de esas herramientas. Entonces, comprendamos qué es Autogen y cómo crear agentes LLM con ella.

¿Qué es Autogen?

Autogen es una herramienta de código abierto de Microsoft para construir aplicaciones multi-agentes robustas. Diseñada desde cero teniendo en cuenta la comunicación entre múltiples agentes. Nos permite crear aplicaciones LLM donde múltiples agentes conversan entre sí para encontrar soluciones a problemas proporcionados. Los agentes son altamente personalizables, lo que significa que podemos guiarlos para realizar tareas específicas. También se integra bien con el ecosistema de herramientas de Langchain, lo que significa que aprovechamos las herramientas de Langchain existentes para aumentar nuestros agentes.

Para cumplir tareas, Autogen proporciona diferentes tipos de Agentes, como:

  • Agente Asistente: Este agente es responsable de cumplir tareas como codificación, revisión, etc.
  • Agente de Proxy de Usuario: Como su nombre lo indica, estos agentes actúan en nombre de los usuarios finales. Esto es responsable de involucrar a los humanos en el bucle de agentes para guiar las conversaciones.
  • Agente Enseñable: Este agente está configurado para ser altamente enseñable. Podemos alimentar al agente con información explícita que no está presente en los LLM.

Sólo necesitamos un Agente Asistente y Agentes Proxies de Usuario para la mayoría de nuestros casos de uso. Entonces, veamos cómo podemos configurar agentes con Autogen. Hay otros agentes como RetrieveAssistantAgent y RetrieveUserProxy agents configurados para RAG.

Aquí tienes un diagrama de un flujo de trabajo típico de múltiples agentes.

Construir Agentes con Autogen

Ahora, profundicemos en la configuración de los agentes de Autogen. Pero antes, configuremos el entorno. Si el caso de uso requiere ejecución de código, los agentes lo harán en el entorno actual, y según la documentación oficial, es mejor hacerlo dentro de un contenedor. Para comenzar rápidamente, puedes usar GitHub codespaces. Asegúrate de instalar “pyautogen”.

Por el momento, Autogen solo admite modelos de OpenAI. Para usar los agentes de manera efectiva, necesitamos configurar nuestros modelos. Podemos configurar múltiples modelos de OpenAI y usar los que necesitemos. Hay diferentes formas de configurar modelos, pero definiremos un archivo JSON.

Archivo JSON

#OAI_CONFIG_LIST[    {        "model": "gpt-4",        "api_key": "<tu clave de API de OpenAI aquí>"    },    {        "model": "gpt-4",        "api_key": "<tu clave de API de Azure OpenAI aquí>",        "base_url": "<tu base de API de Azure OpenAI aquí>",        "api_type": "azure",        "api_version": "2023-07-01-preview"    },    {        "model": "gpt-3.5-turbo",        "api_key":  "<tu clave de API de OpenAI aquí>"    }]

Ahora, define una lista de configuración para los modelos.

import autogenconfig_list = autogen.config_list_from_json(    "OAI_CONFIG_LIST",    filter_dict={        "model": {            "gpt-3.5-turbo"        }    })

Este método primero buscará OAI_CONFIG_LIST en la variable de entorno. Si no tiene éxito, buscará el archivo JSON OAI_CONFIG_LIST en el directorio actual. El filter_dict es para filtrar modelos basados en algunos parámetros, aquí se configura para el modelo.

Configuración para LLM

Ahora, definimos la configuración para LLM. En este ejemplo, usaremos una herramienta de Jupyter Notebook para ejecutar scripts de Python y completar una tarea simple de trazado de gráficos.

llm_config = {    "functions": [        {            "name": "python",            "description": "ejecutar celda en IPython y devolver el resultado de la ejecución.",            "parameters": {                "type": "object",                "properties": {                    "cell": {                        "type": "string",                        "description": "Celda válida de Python para ejecutar.",                    }                },                "required": ["cell"],            },        },    ],    "config_list": config_list,    "timeout": 120,}

Definamos la función para ejecutar scripts de Python en el cuaderno IPython.

from IPython import get_ipythondef exec_python(cell):    ipython = get_ipython()    result = ipython.run_cell(cell)    log = str(result.result)    if result.error_before_exec is not None:        log += f"\n{result.error_before_exec}"    if result.error_in_exec is not None:        log += f"\n{result.error_in_exec}"    return log

Usando el Agente Asistente y el Agente Proxy de Usuario

Casi hemos terminado de construir nuestro sistema multiagente. Las únicas piezas que faltan son los agentes de los que hablamos antes. Aquí, necesitaremos un Agente Asistente y un Agente proxy de Usuario. Así es como podemos definir estos agentes.

chatbot = autogen.AssistantAgent(    name="chatbot",    system_message="Para tareas de codificación, usa solo las funciones que se te han proporcionado. \                    Responde TERMINAR cuando hayas terminado la tarea.",    llm_config=llm_config,)# crea una instancia UserProxyAgent llamada "user_proxy"user_proxy = autogen.UserProxyAgent(    name="user_proxy",    is_termination_msg=lambda x: x.get("content", "") and x.get("content", "").\                       rstrip().endswith("TERMINAR"),    human_input_mode="NEVER",    max_consecutive_auto_reply=10,    code_execution_config={"work_dir": "coding"},)

El UserProxyAgent tiene un parámetro llamado “human_input_mode”, que pone a un humano real en el bucle del agente basándose en su valor. Cuando se establece en ALWAYS, solicita la entrada después de cada respuesta; cuando se establece en TERMINATE, solo pregunta al final de la ejecución, y cuando se establece en NEVER, no solicita ninguna entrada al usuario.

Registre las funciones con el agente del proxy del usuario.

user_proxy.register_function(    function_map={        "python": exec_python,    })

Ahora, ejecute los agentes.

# iniciar la conversaciónuser_proxy.initiate_chat(    chatbot,    message="trazar una curva para la onda seno",)

Al ejecutar el agente, se mostrarán registros en su sistema sobre lo que está sucediendo.

Registro de ejecución

En el registro de ejecución anterior, puede ver que el agente asistente “chatbot” genera el código, luego se ejecuta el código y se encuentran posibles errores. El proxy del usuario luego devuelve el error al asistente, y nuevamente se ejecuta el código de solución, en este caso, la instalación de Matplotlib, y finalmente, se ejecuta el código final y se devuelve la salida.

También podemos ampliar esto agregando otro agente asistente a la conversación, como un crítico o revisor. Esto ayudará a hacer que la salida sea más personalizada. Así es cómo puedes hacerlo.

critic = autogen.AssistantAgent(    name="Critic",    system_message="""Critic. Eres un asistente útil y altamente calificado para evaluar la calidad de un código de visualización dado, proporcionando una puntuación de 1 (malo) - 10 (bueno) junto con una clara explicación. DEBES CONSIDERAR LAS MEJORES PRÁCTICAS DE VISUALIZACIÓN para cada evaluación. Específicamente, puedes evaluar cuidadosamente el código en las siguientes dimensiones: errores (bugs): ¿hay errores, errores de lógica, errores de sintaxis o errores tipográficos? ¿Hay alguna razón por la cual el código pueda fallar al compilar? ¿Cómo debería corregirse? Si existe algún error, la puntuación de errores DEBE ser menor a 5. - Transformación de datos (transformation): ¿Se transforman los datos adecuadamente para el tipo de visualización? Por ejemplo, ¿se filtra, se agrega o se agrupa el conjunto de datos si es necesario? Si se usa un campo de fecha, ¿se convierte primero en un objeto de fecha, etc.? DEBES PROPORCIONAR UNA PUNTUACIÓN para cada una de las dimensiones mencionadas anteriormente. {bugs: 0, transformation: 0, compliance: 0, type: 0, encoding: 0, aesthetics: 0} No sugieras código. Finalmente, en función de la crítica anterior, sugiere una lista concreta de acciones que el codificador debe tomar para mejorar el código.""",    llm_config=llm_config,)groupchat = autogen.GroupChat(agents=[user_proxy, coder, critic], messages=[], max_round=12)manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)user_proxy.initiate_chat(manager, message="trazar una curva para la onda seno inversa en la región de -pi/2 a pi/2")

La ejecución anterior agregarà un crítico para sugerir mejoras para el gráfico, y el Asistente intentará generar códigos que cumplan con los requisitos. Cuando necesitamos más de dos agentes, usamos un administrador de chat.

En este ejemplo, hemos utilizado GPT 3.5. Para tareas de codificación y razonamiento más complicadas, se prefiere GPT-4. Podemos hacer más con menos agentes utilizando modelos capaces como GPT-4. Además, GPT-3.5 a veces tiende a quedar atrapado en un bucle. Por lo tanto, GPT-4 es una opción mucho mejor para aplicaciones severas. Además, se está desarrollando un nuevo tipo de EcoAssistant experimental (código). Este agente resuelve el costo más alto de usar modelos capaces como GPT-4 a través de una jerarquía de modelos. La idea es comenzar una conversación con modelos rentables y, si no alcanza el objetivo final, utilizar los modelos costosos pero capaces. Uno de los beneficios significativos de este enfoque es el efecto sinérgico. Como los agentes comparten una base de datos única, los códigos de los modelos más grandes pueden ser recuperados por modelos más pequeños más adelante, lo que mejora la eficiencia y reduce los costos.

Casos de uso del mundo real

El alcance de los agentes de inteligencia artificial en el mundo real es inmenso. Muchas empresas han comenzado a implementar agentes en sus sistemas existentes. Aquí hay algunos casos de uso de agentes de inteligencia artificial que pueden ser muy útiles.

  • Agentes Personales: Uno de los usos más importantes de un agente de IA sería un asistente personal similar a Jarvis en dispositivos electrónicos que realiza tareas basadas en comandos de texto, voz o gestos.
  • Instructores de IA: Los modelos de chat solo pueden hacer tanto. Pero un agente de IA con herramientas puede hacer mucho más. Los instructores de IA en diversos campos, como la educación, el derecho y la terapia, pueden ser útiles para muchos usuarios.
  • Experiencia de usuario de software: La experiencia del usuario del software puede mejorarse de muchas maneras mediante la implementación de agentes eficientes. En lugar de navegar y hacer clic manualmente en botones para realizar tareas, los agentes de IA las realizarán automáticamente basándose en comandos de voz, como pedir comida, un taxi, hacer compras, etc.
  • Computación espacial: Los agentes de IA serán los precursores de la computación espacial, donde las computadoras tradicionales se integran perfectamente con el mundo real. Los agentes pueden procesar los datos de su entorno para extraer información útil y realizar tareas complicadas.

Conclusión

Los agentes de IA están creciendo en popularidad. En los próximos tiempos, no hay duda de que se integrarán en la mayoría de los sistemas de software de una forma u otra. Esta es todavía la etapa más temprana del desarrollo de agentes, similar a los años 90 de internet. En poco tiempo, habrá agentes mucho mejores que resolverán problemas novedosos. Y las bibliotecas y herramientas como Langchain solo evolucionarán.

Conclusiones clave

  • Autogen es un marco de aplicación de múltiples agentes de código abierto de Microsoft.
  • Autogen nos permite construir sin problemas un sistema de múltiples agentes para resolver tareas complicadas.
  • Proporciona agentes asistentes y agentes de usuario proxy para llevar a cabo tareas como generación de código, generación de texto, etc.
  • Aunque está bien utilizar GPT-3.5 para cosas básicas como la generación de texto, tareas de codificación más complicadas requieren modelos capaces como GPT-4.

Preguntas frecuentes

Los medios mostrados en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Noticias de Inteligencia Artificial

Multimodal AI Inteligencia Artificial que puede ver y escuchar

La inteligencia artificial (IA) ha recorrido un largo camino desde su inicio, pero hasta hace poco, sus capacidades s...

Inteligencia Artificial

Utilizando el lenguaje para dar a los robots una mejor comprensión del mundo abierto

El método de Campos de Características para la Manipulación Robótica ayuda a los robots a identificar objetos cercano...

Inteligencia Artificial

Conoce al Creador Estudiante de Robótica presenta la Silla de Ruedas Autónoma con NVIDIA Jetson

Con la ayuda de la IA, los robots, los tractores y los cochecitos de bebé – incluso los parques de patinaje ...

Aprendizaje Automático

¿Qué sucede si ejecutas un modelo Transformer con una red neuronal óptica?

La escala exponencialmente creciente de los modelos de deep learning es una fuerza importante para avanzar en el esta...