Cómo los agentes potencian el rendimiento de las LLMs

agente llama
larissa-dubiella
larissa-dubiella
Compartir

Índice de contenidos

Quienes estudian tecnología ya conocen muy bien el poder de generación de texto de las LLMs y que su uso no se limita solo a chatbots llenos de certezas.

Desde mediados de 2022, quienes están cerca de los medios digitales en su día a día laboral ya han sentido la llamada Cuarta Revolución Industrial en su propia piel.

Con la llegada de la IA de Meta a WhatsApp en octubre de 2024, la tendencia es que esta tecnología se popularice aún más y pase a formar parte de la vida de personas que aún no la conocían.

En la ola de la industria 4.0, por las vivencias con Internet de las Cosas e incluso por inspiración de películas de Ciencia Ficción, imaginamos un futuro en el que la Inteligencia Artificial se integre al cotidiano teniendo conocimiento sobre información importante en tiempo real y siendo responsible de la realización de tareas repetitivas. Déjame decirte algo: ¡estamos en camino!

Los agentes de IA pueden ser la pieza que transforme radicalmente nuestra interacción con la tecnología.

En este artículo, vamos a explorar el concept de agentes de IA, sus características y aplicaciones prácticas, además de reflexionar sobre los impactos que esta herramienta puede tener en la industria.


Banner de información del aumento de precio de los planes de Alura

¿Qué son los agentes?

Los agentes actúan como controladores de la lógica y las acciones de un sistema modular de IA. Con una LLM sirviendo como “cerebro”, un agente toma decisiones y ejecuta tareas de forma autónoma.

Si eres un chef de cocina experimentado y necesitas preparar una cena, no necesitas seguir una receta estrictamente de principio a fin. Mientras te dedicas al plato principal, puedes pedirle a alguien que prepare la mesa, a otra persona que pique el perejil y a una tercera que higienice la ensalada.

Ahora, si nunca has cocinado antes, necesitarás seguir las instrucciones con cuidado y gastar mucho más tiempo para concluir la comida.

Cuando construimos un sistema de IA basado en agentes, el agente funciona como ese chef de cocina experimentado, con la capacidad de planificar, actuar y delegar tareas.

La lógica del sistema está bajo su control: él decide qué hacer con base en los datos que tiene a mano y en cómo organizarlos mejor para alcanzar el objetivo.

Esto se diferencia de los sistemas que, incluso usando LLMs para realizar tareas, siguen condiciones exactas impuestas por la persona que programó el sistema.

En resumen, lo que diferencia el uso de una LLM en agentes de un sistema tradicional programado por humanos es que, en lugar de decisiones preprogramadas o reglas fijas, el modelo de lenguaje usa su capacidad de entendimiento para decidir dinámicamente qué camino seguir, lo que otorga mayor flexibilidad y adaptabilidad al sistema.

¿Cuáles son las capacidades de los agentes?

De forma general, las capacidades de los agentes son:

  • Recuperación de datos de diferentes tipos (no estructurados, semiestructurados, estructurados) y realización de búsquedas automáticas.
  • Interacción con APIs de servicios externos, procesando o almacenando datos para uso futuro.
  • Mantener y analizar historiales de conversaciones.
  • Ejecutar tareas de datos complejas.

¿Y cuáles son las principales características de los agentes?

Ahora que entendemos las capacidades esenciales de los agentes, vamos a profundizar en las características que los tornan tan adaptables y eficazes para diversas aplicaciones.

  • Autonomía: Los agentes son capaces de tomar decisiones y ejecutar tareas por cuenta propia, sin necesidad de intervención humana constante.
  • Capacidad de Planificación: Un agente no solo reacciona a inputs, sino que también anticipa etapas futuras, organizando una secuencia lógica de acciones para alcanzar el objetivo. Calcula qué necesita hacerse y en qué orden, considerando la situación actual.
  • Delegación y Coordinación: En un sistema modular, un agente puede distribuir tareas entre otros agentes o componentes del sistema, coordinando el trabajo de manera eficiente.
  • Adaptación y Flexibilidad: A diferencia de los sistemas tradicionales que siguen reglas preprogramadas, los agentes pueden ajustar sus acciones con base en las condiciones y el contexto. Esto permite que el sistema maneje situaciones imprevistas o variables.
  • Uso de LLMs para la Toma de Decisiones: La lógica del sistema es controlada por un modelo de lenguaje, que actúa como "cerebro" del agente. Este LLM procesa información, entiende el contexto y elige la mejor respuesta o acción.
  • Orquestación de Tareas: Un agente puede servir como orquestador en un sistema complejo, garantizando que todas las partes del sistema cooperen de manera eficaz. Puede gestionar múltiples agentes más pequeños o tareas paralelas, asegurando que el trabajo fluya.

¿Cómo toman decisiones los agentes?

La toma de decisión autónoma es una de las mayores ventajas de los agentes de IA en comparación con los sistemas tradicionales.

A diferencia de simples autómatas que siguen una programación rígida, los agentes de IA toman decisiones de forma adaptativa y dinámica.

Este proceso, llamado ciclo de decisión autónomo, es una secuencia que involucra:

  • Análisis del estado actual: El agente recopila datos o interpreta un contexto específico, ya sea un mensaje recibido, una nueva entrada de sensor o un dato externo.
  • Planificación de acciones: Con base en su objetivo, el agente considera el conjunto de herramientas y datos a su disposición, planificando una secuencia de acciones.
  • Ejecución y Evaluación: El agente realiza la acción planificada y, si es necesario, ajusta el plan conforme al feedback, creando un sistema que mejora con la práctica.

Un enfoque utilizado en este ciclo es el ReAct (Reason + Act: Razonamiento + Acción). En lugar de simplemente seguir comandos, ReAct permite que el agente alterne entre razonar sobre un problema y realizar acciones para resolverlo.

Así, el agente logra reflexionar sobre cada etapa antes de actuar, lo que aumenta la precisión de su respuesta y la adaptabilidad del sistema.

diagrama de flujo

¿Cómo sería un sistema multi-agentes?

En un sistema multi-agentes, cada agente está especializado en una tarea o área, y la colaboración entre ellos potencia el funcionamiento del sistema.

Considera un ejemplo donde la empresa utiliza un sistema multi-agentes para monitorear y gestionar las operaciones de una fábrica inteligente.

  • Agente de Monitoreo: Recopila datos de sensores distribuidos por la fábrica y detecta problemas, como el calentamiento excesivo de una máquina.
  • Agente de Diagnóstico: Recibe la alerta del Agente de Monitoreo y realiza un análisis para determinar la causa probable, pudiendo consultar historiales y datos técnicos.
  • Agente de Mantenimiento: Planifica una intervención, si es necesario, y organiza los pasos que un operador humano u otro agente mecánico deben seguir para resolver el problema.
  • Agente de Logística: Coordina el reabastecimiento de piezas o componentes que puedan ser necesarios para la intervención, organizando el flujo de materiales en la fábrica.

Así, el sistema multi-agentes opera en conjunto, con cada unidad enfocada en una tarea, pero colaborando de forma coordinada. Este tipo de sistema ya encuentra aplicaciones en industrias avanzadas, haciendo que la automatización sea más inteligente y adaptable a los cambios del entorno de producción.

Sin embargo, no todos los agentes necesitan ser complejos o responsables de una amplia gama de decisiones. Los agentes simples también tienen su importancia y pueden componer un sistema al ser responsables de la ejecución de una sola tarea o de un conjunto muy restringido de acciones. Por ejemplo, en un sistema de atención automatizado de una tienda virtual, podemos tener:

  • Agente de Verificación de Inventario: Al recibir una consulta sobre un producto, este agente verifica la cantidad disponible en el inventario y responde sobre la disponibilidad.
  • Agente de Cotización de Envío: Responsable de calcular el valor del flete de acuerdo con la dirección del cliente y las opciones de entrega disponibles. Este agente devuelve el valor calculado y las posibles fechas de entrega.
  • Agente de Emisión de Factura: Después de que se finaliza una compra, este agente emite la factura y la envía al cliente.

Coordinación entre agentes simples y complejos

En sistemas multi-agentes más sofisticados, los agentes simples son frecuentemente coordinados por un agente orquestador o agente principal, que tiene una visión más amplia y puede dirigir a los agentes especializados según sea necesario. Este orquestador puede ser responsable de:

  • Delegar tareas a diferentes agentes simples, garantizando que todos los pasos del proceso se ejecuten en la secuencia correcta.
  • Gestionar fallas o retrasos, redistribuyendo tareas para que el sistema continúe operando sin interrupciones.
  • Supervisar el desempeño de los agentes y ajustar la asignación de tareas según la demanda.
diagrama de sistemas

Sistemas multi-agentes no están limitados a fábricas y operaciones físicas; en el comercio minorista en línea, en la logística e incluso en la salud, estos sistemas coordinados se aplican para optimizar procesos, reduce errores y aumentar la autonomía de las operaciones.

Cómo aplicar un agente con LlamaIndex

¿Vamos a experimentar con la aplicación de un agente de matemáticas? Utilicé Google Colab para este ejemplo.

Primero, vamos a instalar las bibliotecas necesarias para crear y configurar nuestro agente de IA con LlamaIndex.

!pip install llama-index
!pip install llama-index-llms-groq
!pip install llama_index.core.agent
!pip llama_index.core.tools

Ahora que instalamos las bibliotecas, el siguiente paso es importar los módulos y clases principales que nos ayudarán a construir el agente.

Aquí, llamamos al ReActAgent y FunctionCallingAgentWorker de la biblioteca LlamaIndex, además de herramientas específicas para manejar funciones y el modelo Groq, que será responsable de traer el LLM a nuestro entorno. La importación de userdata de Google nos permitirá acceder a una clave de API.

from llama_index.core.agent import ReActAgent, FunctionCallingAgentWorker
from llama_index.core.tools import FunctionTool
from llama_index.llms.groq import Groq
from google.colab import userdata

Ahora, necesitamos una clave de API que permita utilizar Llama. Puedes crear una clave a través del sitio de Groq. Crea tu cuenta, genera la API Key y cópiala.

En Colab, para agregar una clave de API, haz clic en el icono de llave que se encuentra en el menú lateral izquierdo. Luego, dale un nombre (aquí utilicé GROQ_API) y, en el valor, pega tu clave. Es necesario permitir el acceso al notebook.

Para acceder a la clave, podemos utilizar el siguiente código:

api_key= userdata.get('GROQ_API')

Podemos elegir un modelo proporcionado por Groq. Aquí, elegí el Llama3. En la plataforma Groq, puedes consultar una lista de otros modelos disponibles y, dependiendo de tu necesidad, optar por otro modelo ajustando el parámetro model.

llama3 = Groq(model="llama3-70b-8192", api_key=api_key)
llama3

¡Genial! Ahora es el momento de crear las herramientas que el agente podrá utilizar. Con LlamaIndex, estas herramientas se crean como simples funciones de Python y luego cada función se registra como una FunctionTool, permitiendo que el agente acceda y ejecute estas operaciones cuando sea necesario.

Creamos una función multiply que devuelve la multiplicación de dos números enteros y una función add que devuelve la suma de dos números enteros.

from llama_index.core.tools import FunctionTool
def multiply(a: int, b: int) -> int:
    """Multiple two integers and returns the result integer"""
    return a * b
multiply_tool = FunctionTool.from_defaults(fn=multiply)
def add(a: int, b: int) -> int:
    """Add two integers and returns the result integer"""
    return a + b
add_tool = FunctionTool.from_defaults(fn=add)

Con las herramientas creadas, vamos a configurar el agente usando el modelo ReAct. Le pasamos las herramientas creadas anteriormente y la LLM que también ya configuramos.

El parámetro verbose=True permite que el agente muestre los pasos que toma durante el procesamiento de las instrucciones; así, tendremos una visualización muy gráfica de cómo funciona el proceso de razonamiento y acción del agente.

react_agent = ReActAgent.from_tools(tools=[multiply_tool, add_tool], llm=llama3, verbose=True)
react_agent

¡Genial, agente definido! Así de simple. Ten en cuenta que este es un ejemplo de aplicación muy básica, donde definimos solo dos operaciones matemáticas como herramientas. Sin embargo, la escalabilidad del proyecto puede ocurrir de acuerdo con las necesidades a las que se proponga el sistema, con múltiples agentes y herramientas más complejas.

En esta prueba, le pedimos al agente calcular "¿Cuánto es la suma de 154 y 90 por cinco?". Esta pregunta requiere que interprete correctamente el orden de las operaciones (multiplicación y adición) y utilice las funciones que creamos anteriormente para sumar y multiplicar.

El agente debe realizar la multiplicación primero (90 por 5), pasando los valores en el formato correcto a la herramienta y, a continuación, sumar el resultado a 154, garantizando que la respuesta sea correcta.

response = react_agent.chat("Quanto é a soma de 154 e 90 vezes cinco?")
print(str(response))

Al ejecutarlo, tenemos la siguiente respuesta:

Running step 3ca66650-4add-4593-b036-8d6feaa670a5. Step input: Quanto é a soma de 154 e 90 vezes cinco?
Thought: The current language of the user is: Portuguese. I need to use a tool to help me answer the question.
To calculate 90 times 5, I'll use the multiply tool.
Action: multiply
Action Input: {'a': 90, 'b': 5}
Observation: 450
> Running step 31ae365c-db7d-47ce-b5e4-43de579064ad. Step input: None
Thought: Now I have the result of 90 times 5, which is 450. I need to add 154 to this result.
To add 154 and 450, I'll use the add tool.
Action: add
Action Input: {'a': 154, 'b': 450}
Observation: 604
> Running step d8d71fe6-b6e6-4917-8573-8ae137bac149. Step input: None
Thought: I can answer without using any more tools. I'll use the user's language to answer
Answer: A soma de 154 e 90 vezes 5 é 604.
A soma de 154 e 90 vezes 5 é 604.

¡Mira qué interesante! En cada paso, el agente “piensa” en lo que debe hacerse. Primero, detecta que la pregunta se hizo en español (o portugués en el original) y que debe mantener la respuesta en ese idioma. A continuación, interpreta que necesita resolver 90 por 5 antes de sumar, siguiendo el orden de precedencia de las operaciones matemáticas. Con el resultado de la multiplicación en mano, el agente sigue a la siguiente etapa y utiliza la herramienta de adición. Con la respuesta de la herramienta, el agente responde respetando el idioma de entrada.

En LlamaIndex, es posible construir agentes desde cero o utilizar los que ya están construidos en LlamaHub. El flujo de trabajo para la construcción de agentes en LlamaIndex es asíncrono y orientado a eventos (event-driven). Puedes aprender más sobre esto en la documentación.

Conclusión

Por su capacidad de adaptación y flexibilidad, los agentes son ideales para una amplia variedad de sectores. Al permitir la automatización inteligente de procesos complejos, los sistemas basados en agentes pueden contribuir a la eficiencia operativa y la optimización de recursos, aliviando a los profesionales de tareas repetitivas y creando espacio para iniciativas más estratégicas.

¡En este artículo, conocimos cómo funcionan los agentes y cómo pueden llevar la aplicación de LLMs en sistemas a otro nivel! Sin duda, todavía tendremos muchas novedades en este campo de estudio. La comunidad está dedicada a construir siempre mejores soluciones para el uso de IA. ¡Sigue las notificaciones de Alura para estar al tanto de nuestros lanzamientos en datos e IA!

Un abrazo y hasta pronto.


Créditos

  • Contenido: Larissa Dubiella
  • Producción técnica: Rodrigo Dias
  • Producción didáctica: Cláudia Machado
  • Diseñador gráfico: Alysson Manso
  • Apoyo: Rômulo Henrique

larissa-dubiella

larissa-dubiella

Ver otros artículos sobre Inteligencia Artificial