Skip to content

Latest commit

 

History

History
173 lines (100 loc) · 11.8 KB

File metadata and controls

173 lines (100 loc) · 11.8 KB

Modelos de Código Abierto

Introducción

Los Agentes de IA representan un desarrollo emocionante en la IA Generativa, permitiendo que los Modelos de Lenguaje Extenso (LLMs) evolucionen de asistentes a agentes capaces de tomar acciones. Los marcos de trabajo de Agentes de IA permiten a los desarrolladores crear aplicaciones que dan a los LLMs acceso a herramientas y gestión de estado. Estos marcos también mejoran la visibilidad, permitiendo a los usuarios y desarrolladores monitorear las acciones planificadas por los LLMs, mejorando así la gestión de la experiencia.

La lección cubrirá las siguientes áreas:

  • Entender qué es un Agente de IA - ¿Qué es exactamente un Agente de IA?
  • Explorar cuatro diferentes marcos de trabajo de Agentes de IA - ¿Qué los hace únicos?
  • Aplicar estos Agentes de IA a diferentes casos de uso - ¿Cuándo deberíamos usar Agentes de IA?

Objetivos de aprendizaje

Después de tomar esta lección, podrás:

  • Explicar qué son los Agentes de IA y cómo pueden ser utilizados.
  • Tener una comprensión de las diferencias entre algunos de los marcos de trabajo de Agentes de IA populares y cómo difieren.
  • Entender cómo funcionan los Agentes de IA para construir aplicaciones con ellos.

¿Qué son los Agentes de IA?

Los Agentes de IA son un campo muy emocionante en el mundo de la IA Generativa. Con esta emoción viene a veces una confusión de términos y su aplicación. Para mantener las cosas simples e inclusivas de la mayoría de las herramientas que se refieren a Agentes de IA, vamos a usar esta definición:

Los Agentes de IA permiten que los Modelos de Lenguaje Extenso (LLMs) realicen tareas dándoles acceso a un estado y herramientas.

Modelo de Agente

Vamos a definir estos términos:

Modelos de Lenguaje Extenso - Estos son los modelos mencionados a lo largo de este curso, como GPT-3.5, GPT-4, Llama-2, etc.

Estado - Esto se refiere al contexto en el que el LLM está trabajando. El LLM utiliza el contexto de sus acciones pasadas y el contexto actual, guiando su toma de decisiones para acciones subsecuentes. Los marcos de trabajo de Agentes de IA permiten a los desarrolladores mantener este contexto más fácilmente.

Herramientas - Para completar la tarea que el usuario ha solicitado y que el LLM ha planificado, el LLM necesita acceso a herramientas. Algunos ejemplos de herramientas pueden ser una base de datos, una API, una aplicación externa o incluso otro LLM.

Estas definiciones te darán una buena base para avanzar mientras observamos cómo se implementan. Vamos a explorar algunos marcos de trabajo de Agentes de IA diferentes:

Agentes LangChain

Agentes LangChain es una implementación de las definiciones que proporcionamos arriba.

Para gestionar el estado, utiliza una función incorporada llamada AgentExecutor. Esta acepta el agent definido y el tools que están disponibles para él.

El Agent Executor también almacena el historial de chat para proporcionar el contexto del chat.

Agentes Langchain

LangChain ofrece un catálogo de herramientas que pueden ser importadas a tu aplicación en la cual el LLM puede obtener acceso. Estas son creadas por la comunidad y por el equipo de LangChain.

Puedes definir estas herramientas y pasarlas al Agent Executor.

La visibilidad es otro aspecto importante cuando se habla de Agentes de IA. Es importante para los desarrolladores de aplicaciones entender qué herramienta está utilizando el LLM y por qué. Para eso, el equipo de LangChain ha desarrollado LangSmith.

AutoGen

El siguiente marco de trabajo de Agente de IA que discutiremos es AutoGen. El enfoque principal de AutoGen son las conversaciones. Los agentes son tanto conversables como personalizables.

Conversable - Los LLMs pueden iniciar y continuar una conversación con otro LLM para completar una tarea. Esto se hace creando AssistantAgents y dándoles un mensaje de sistema específico.

autogen.AssistantAgent( name="Coder", llm_config=llm_config, ) pm = autogen.AssistantAgent( name="Product_manager", system_message="Creative in software product ideas.", llm_config=llm_config, )

Personalizable - Los agentes pueden ser definidos no solo como LLMs sino también como un usuario o una herramienta. Como desarrollador, puedes definir un UserProxyAgent que es responsable de interactuar con el usuario para recibir retroalimentación en la realización de una tarea. Esta retroalimentación puede continuar la ejecución de la tarea o detenerla.

user_proxy = UserProxyAgent(name="user_proxy")

Estado y Herramientas

Para cambiar y gestionar el estado, un Agente asistente genera código Python para completar la tarea.

Aquí hay un ejemplo del proceso:

AutoGen

LLM Definido con un Mensaje de Sistema

system_message="For weather related tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done."

Este mensaje de sistema dirige a este LLM específico a qué funciones son relevantes para su tarea. Recuerda, con AutoGen puedes tener múltiples AssistantAgents definidos con diferentes mensajes de sistema.

Chat Iniciado por el Usuario

user_proxy.initiate_chat( chatbot, message="I am planning a trip to NYC next week, can you help me pick out what to wear? ", )

Este mensaje del usuario_proxy (Humano) es lo que iniciará el proceso del Agente para explorar las posibles funciones que debería ejecutar.

Función Ejecutada

chatbot (to user_proxy):

***** Suggested tool Call: get_weather ***** Arguments: {"location":"New York City, NY","time_periond:"7","temperature_unit":"Celsius"} ******************************************************** --------------------------------------------------------------------------------

>>>>>>>> EXECUTING FUNCTION get_weather... user_proxy (to chatbot): ***** Response from calling function "get_weather" ***** 112.22727272727272 EUR ****************************************************************

Una vez que el chat inicial se procesa, el Agente enviará la herramienta sugerida para llamar. En este caso, es una función llamada get_weather. Depending on your configuration, this function can be automatically executed and read by the Agent or can be executed based on user input.

You can find a list of AutoGen code samples to further explore how to get started building.

Taskweaver

The next agent framework we will explore is Taskweaver. It is known as a "code-first" agent because instead of working strictly with strings , it can work with DataFrames in Python. This becomes extremely useful for data analysis and generation tasks. This can be things like creating graphs and charts or generating random numbers.

State and Tools

To manage the state of the conversation, TaskWeaver uses the concept of a Planner. The Planner is a LLM that takes the request from the users and maps out the tasks that need to be completed to fulfill this request.

To complete the tasks the Planner is exposed to the collection of tools called Plugins. Esto puede ser clases de Python o un intérprete de código general. Estos plugins se almacenan como embeddings para que el LLM pueda buscar mejor el plugin correcto.

Taskweaver

Aquí hay un ejemplo de un plugin para manejar la detección de anomalías:

class AnomalyDetectionPlugin(Plugin): def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str):

El código se verifica antes de ejecutarse. Otra característica para gestionar el contexto en Taskweaver es experience. Experience allows for the context of a conversation to be stored over to the long term in a YAML file. This can be configured so that the LLM improves over time on certain tasks given that it is exposed to prior conversations.

JARVIS

The last agent framework we will explore is JARVIS. What makes JARVIS unique is that it uses an LLM to manage the state de la conversación y el tools son otros modelos de IA. Cada uno de los modelos de IA son modelos especializados que realizan ciertas tareas como detección de objetos, transcripción o descripción de imágenes.

JARVIS

El LLM, siendo un modelo de propósito general, recibe la solicitud del usuario e identifica la tarea específica y cualquier argumento/dato que se necesite para completar la tarea.

[{"task": "object-detection", "id": 0, "dep": [-1], "args": {"image": "e1.jpg" }}]

El LLM luego formatea la solicitud de manera que el modelo de IA especializado pueda interpretarla, como JSON. Una vez que el modelo de IA ha devuelto su predicción basada en la tarea, el LLM recibe la respuesta.

Si se requieren múltiples modelos para completar la tarea, también interpretará la respuesta de esos modelos antes de unirlas para generar la respuesta al usuario.

El ejemplo a continuación muestra cómo funcionaría esto cuando un usuario solicita una descripción y conteo de los objetos en una imagen:

Asignación

Para continuar tu aprendizaje sobre Agentes de IA, puedes construir con AutoGen:

  • Una aplicación que simula una reunión de negocios con diferentes departamentos de una startup educativa.
  • Crear mensajes de sistema que guíen a los LLMs en la comprensión de diferentes personalidades y prioridades, y permitir al usuario presentar una nueva idea de producto.
  • El LLM debería entonces generar preguntas de seguimiento de cada departamento para refinar y mejorar la presentación y la idea del producto.

El aprendizaje no termina aquí, continúa el viaje

Después de completar esta lección, revisa nuestra colección de aprendizaje de IA Generativa para seguir mejorando tus conocimientos de IA Generativa.

Descargo de responsabilidad:
Este documento ha sido traducido utilizando el servicio de traducción automática Co-op Translator. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda la traducción profesional humana. No somos responsables de ningún malentendido o interpretación errónea que surja del uso de esta traducción.