Conceptos del framework de agentes

En esta página, se proporciona una descripción general conceptual del Framework de agentes, en la que se explican los elementos básicos clave para desarrollar agentes eficaces.

¿Qué son los agentes?

Un agente de IA generativa es como un programa informático inteligente que actúa como un asistente independiente. Se le asigna un objetivo, puede comprender el mundo que lo rodea (a través de datos o información) y puede usar varias herramientas para lograrlo sin supervisión humana constante. Incluso puede planificar sus próximos pasos para acercarse más a su objetivo.

Técnicamente, un agente de IA generativa es una abstracción de software que persigue de forma autónoma un objetivo definido observando su entorno, razonando sobre el mejor curso de acción y ejecutando acciones con las herramientas disponibles. Opera de forma independiente de la instrucción humana directa para cada paso y puede determinar de forma proactiva las acciones posteriores para lograr su objetivo final. Esto es posible gracias a los modelos de IA generativa, que potencian las capacidades de razonamiento y toma de decisiones del agente.

¿Qué no son los agentes?

Aquí es donde identificamos las dificultades comunes que podrían parecer agentes, pero no lo son:

Chatbot con instrucciones “si-entonces” codificadas de forma fija (antipatrón):

Un chatbot creado con LLM en el que definas de forma metódica cada entrada posible del usuario y cada respuesta del LLM. Incluso si usas llamadas a función, si la lógica está codificada por completo, no es un agente. Es un árbol de decisión sofisticado, no un sistema de razonamiento.

Ejemplo: Si el usuario dice "reservar un vuelo", llama a la función book_flight(). No es un agente, sino un sistema basado en reglas.

Dependencia excesiva en las instrucciones de ReAct (posible antipatrón):

Las instrucciones de ReAct (razonar y actuar) son una técnica en la que se estructuran instrucciones para fomentar que el LLM piense paso a paso y, luego, actúe. Esto se acerca más al comportamiento del agente, pero puede convertirse en un antipatrón si tú, el desarrollador, sigues creando instrucciones de ReAct de forma manual para cada situación posible. El agente debería poder generar su propio razonamiento de estilo ReAct, no solo seguir plantillas escritas previamente. La parte de actuación se limita a llamadas a funciones simples y no hay planificación ni adaptación de nivel superior.

Cadena de pensamientos (CoT) sin acción (antipatrón):

Usar instrucciones de CoT para hacer que el LLM explique su razonamiento es valioso, pero no es un agente si no actúa en función de ese razonamiento. Es solo un LLM más transparente, no una entidad autónoma.

Agentes en comparación con LLM

Consigna única:

Le pide a LLM que escriba un resumen de la historia del Imperio romano. Esta es una interacción única. Gemini procesa la instrucción y genera una respuesta. No hay memoria de interacciones anteriores, ni objetivo a largo plazo ni interacción con herramientas externas. Es puramente de entrada y salida.

Cadena de instrucciones:

Luego, podrías continuar con: “Ahora, enumera las principales causas del declino del Imperio”. Esta es una cadena de instrucciones. Tú, como ser humano, proporcionas el comportamiento similar al de un agente cuando guías la conversación y desglosas la tarea. Gemini sigue respondiendo a cada instrucción de forma individual, sin una comprensión más amplia del objetivo general (a menos que lo indiques de forma explícita y reiterada). Tú eres el agente, no Gemini.

Agente:

Un agente que use LLM sería muy diferente.

Imagina un "agente de investigación de historia romana" cuyo objetivo es el siguiente:

“Elabora un informe completo sobre el Imperio romano, que incluya su historia, sus figuras clave, su impacto cultural y los motivos de su declino. El informe se debe actualizar semanalmente con información nueva de fuentes académicas".

Diferencias clave:

  • Objetivo persistente: El agente tiene un objetivo continuo a largo plazo, no solo una tarea de un solo turno.
  • Planificación: El agente podría dividir esto en lo siguiente:
    • Investigación inicial con Gemini (resumir el historial, identificar las cifras clave)
    • Buscar en bases de datos académicas (con una herramienta independiente)
    • Sintetizar información de varias fuentes
    • Se está generando el informe.
    • Programar una tarea semanal para repetir los pasos 2 a 4
  • Uso de herramientas: El agente usa herramientas de forma activa más allá de Gemini (p.ej., una API de búsqueda o una base de datos).
  • Autonomía: El agente opera de forma independiente y toma decisiones sobre qué información recopilar y cómo presentarla.
  • Memoria: El agente mantiene una memoria continua (quizás en una base de datos) para organizar los hallazgos y mejorar sus instrucciones por sí solo.

El punto crucial es que, en las situaciones de instrucciones únicas o encadenadas, tú eres el director. En el caso del agente, el agente es el orquestador, que usa Gemini como una de sus herramientas.

Diferenciación de las cargas de trabajo de los agentes en comparación con las cargas de trabajo típicas de LLM

La diferencia más importante entre los agentes y las cargas de trabajo típicas de LLM es el comportamiento autónomo y orientado a objetivos con perfeccionamiento y planificación iterativos. Hazte estas preguntas:

  • Objetivo persistente
    • ¿El sistema tiene un objetivo a largo plazo claramente definido que está trabajando para lograr, más allá de responder a instrucciones individuales?
  • Acción autónoma
    • ¿El sistema puede realizar acciones (usar herramientas, tomar decisiones) sin instrucciones explícitas y paso a paso de una persona para cada acción?
  • Planificación y razonamiento
    • ¿El sistema muestra evidencia de planificación (desglosar un objetivo complejo en pasos más pequeños) y razonamiento (tomar decisiones en función de su comprensión de la situación)?
  • Refinamiento iterativo
    • ¿El sistema aprende y mejora su enfoque? No es necesario que sea aprendizaje automático. Puede ser una mejora autoinducida en función de las observaciones.
  • Estado
    • ¿El sistema mantiene y usa la información de estado para seguir progresando hacia su objetivo?

Si la respuesta a todas estas preguntas es “sí”, es probable que estés trabajando con un agente de IA. Si alguna de las respuestas es “no”, es probable que tengas una aplicación de LLM más sofisticada, pero no un agente completo. La combinación de estos factores, y no solo uno de ellos de forma aislada, es lo que define a los agentes. Un agente no solo se trata de hacer tareas, sino de decidir qué hacer y por qué, y adaptar su enfoque para lograr un objetivo definido.

Componentes esenciales de los agentes:

Diagrama de arquitectura de los componentes del entorno de ejecución del agente 

  • Modelo: El modelo de lenguaje (LM) funciona como el tomador de decisiones central y usa marcos de trabajo de razonamiento y lógica basados en instrucciones.
  • Herramientas: Las herramientas cierran la brecha entre las capacidades internas del agente y el mundo externo, lo que abre una gama más amplia de posibilidades. Permiten la interacción con datos y servicios externos.
  • Capa de orquestación: Esta capa regula cómo el agente recibe información, realiza razonamientos internos y usa ese razonamiento para informar su próxima acción o decisión.

Agentes en comparación con llamadas a funciones

Las llamadas a función de LLM son un paso potente hacia el comportamiento del agente, pero no equivalen a un agente completo.

LLM + Llamada a función: Defines funciones a las que puede llamar el LLM (p.ej., get_weather(location), search_wikipedia(topic)). Cuando una respuesta de LLM indica que necesita usar una función, tu código ejecuta esa función y le proporciona el resultado al LLM. Esto permite que el modelo acceda a datos externos o realice acciones.

LLM + agente:

Un agente se basa en llamadas a funciones. Las llamadas a función son un mecanismo que pueden usar los agentes, pero el agente agrega lo siguiente:

  • Toma de decisiones estratégicas: El agente decide cuándo y por qué llamar a las funciones, según su objetivo y plan generales. No solo reacciona a una sola instrucción.
  • Razonamiento de varios pasos: Un agente puede encadenar varias llamadas a función e interacciones de Gemini, según su proceso de razonamiento interno. No se limita a una sola llamada a función por instrucción.
  • Manejo y adaptación de errores: Un buen agente controlará los casos en los que una llamada a función falla o muestra resultados inesperados. Puede ajustar su plan según corresponda.
  • Administración de estados: El agente mantiene un estado interno (memoria) que persiste en varias interacciones, lo que le permite hacer un seguimiento del progreso y tomar decisiones más fundamentadas.

Piensa en el llamado a función como una forma de darle al LLM la capacidad de interactuar con el mundo. Un agente es lo que le brinda al LLM la inteligencia y la autonomía para usar esa habilidad de manera efectiva y lograr un objetivo complejo.

Cadenas y canalizaciones de LLM

En esta subsección, se analizará cómo se pueden estructurar y organizar los LLM dentro de los agentes con canalizaciones y cadenas. Analizaremos diferentes patrones para conectar llamadas de LLM, interacciones de herramientas y otros componentes de agentes para lograr tareas complejas. Espera explicaciones de las arquitecturas comunes de canalizaciones y cadenas que sean relevantes para el diseño de agentes.

Antipatrones cuando se compilan agentes

En esta sección, se analizarán los errores y las dificultades comunes que se deben evitar cuando se desarrollan agentes. Identificaremos y describiremos los "antipatrones", que son opciones de diseño o estrategias de implementación que pueden dificultar el rendimiento, la capacidad de mantenimiento o la escalabilidad del agente. Aprender sobre estos antipatrones ayudará a los desarrolladores a compilar agentes más sólidos y eficaces.

Agentes de varios pasos en comparación con agentes múltiples: ¿cuál deberías elegir?

En esta sección, se compararán y contrastarán dos enfoques diferentes de la complejidad de los agentes: agentes de varios pasos (agentes que realizan tareas en una secuencia de pasos) y sistemas multiagente (sistemas compuestos por varios agentes que interactúan). Analizaremos las fortalezas y debilidades de cada enfoque y brindaremos orientación sobre cuándo elegir uno en lugar del otro en función del caso de uso y el comportamiento deseado del agente.

¿Cuándo usar flujos de varios agentes?

En esta sección, se ampliará la información sobre los sistemas de múltiples agentes y se explorarán específicamente las situaciones en las que resulta ventajoso usar “flujos” de múltiples agentes. Examinaremos los casos de uso que se benefician de la colaboración, la delegación o la resolución de problemas distribuidos entre varios agentes. El objetivo es ilustrar las aplicaciones y los beneficios prácticos de los flujos de varios agentes en sistemas de agentes complejos.

¿Agentes con varias herramientas en lugar de varios agentes?

En esta sección, se abordará la elección de diseño entre equipar un solo agente con varias herramientas en lugar de crear un sistema de varios agentes. Analizaremos situaciones en las que es suficiente aumentar el conjunto de herramientas de un solo agente y cuándo distribuir tareas y capacidades entre varios agentes se convierte en un enfoque más eficaz. Esto ayudará a los desarrolladores a decidir cuál es la arquitectura óptima según la complejidad y los requisitos funcionales.

¿Agente con flujos predefinidos en comparación con agentes autónomos?

Aquí, diferenciaremos entre agentes con flujos de trabajo estructurados y predefinidos ("flujos") y agentes más autónomos que muestran una mayor flexibilidad y toma de decisiones en su funcionamiento. Analizaremos las compensaciones entre control y adaptabilidad, y cuándo cada tipo de agente es más apropiado para diferentes aplicaciones.

Memoria a corto y largo plazo

En esta sección, se explicarán los conceptos de memoria a corto y largo plazo dentro del Agente Framework. Analizaremos cómo los agentes administran el contexto de conversación (memoria a corto plazo) y conservan el conocimiento o los datos en todas las sesiones (memoria a largo plazo). Comprender estos mecanismos de memoria es fundamental para crear agentes que puedan mantener el estado y aprender con el tiempo.

Planificación de un solo paso en comparación con la de varios pasos

Exploraremos las capacidades de planificación de los agentes y contrastaremos la planificación de un solo paso (tomar decisiones inmediatas) con la planificación de varios pasos (elaborar estrategias y desglosar tareas complejas en secuencias). En esta sección, se analizarán los beneficios y las complejidades de cada enfoque de planificación y cómo afectan el comportamiento de los agentes y las habilidades para resolver problemas.

Herramientas únicas, múltiples o AgentTools

En esta sección, se proporcionará una descripción general comparativa de las diferentes configuraciones de herramientas para los agentes. Examinaremos el uso de herramientas individuales, agentes equipados con varias herramientas y las "AgentTools" especializadas (herramientas que invocan a otros agentes). El objetivo es aclarar el propósito y las situaciones de uso de cada tipo de herramienta y configuración.

Herramientas en comparación con la memoria

En esta sección, se analizará la interacción y la relación entre las herramientas y la memoria en el diseño de agentes. Exploraremos cómo los agentes usan la memoria para informar el uso de las herramientas, almacenar sus resultados y optimizar la selección de herramientas con el tiempo. Comprender esta interacción es clave para crear agentes que aprovechen de manera eficaz las herramientas y la memoria para mejorar el rendimiento.

Pruebas y control de calidad de agentes

En esta sección, se enfocará en los aspectos fundamentales de las pruebas y el control de calidad (QA) para los agentes. Analizaremos estrategias y metodologías para probar de forma rigurosa el comportamiento de los agentes, la integración de herramientas y el rendimiento general del sistema. El objetivo es brindar orientación para garantizar la confiabilidad y la exactitud de los agentes antes de la implementación.

Evaluaciones de agentes

En esta sección, se abordarán específicamente las evaluaciones de los agentes. Analizaremos los métodos para medir y evaluar de manera sistemática el rendimiento del agente en función de comparativas y métricas definidas. Se espera que se hable sobre marcos de evaluación, métricas como la precisión y la eficiencia, y cómo usar las evaluaciones para mejorar el diseño de los agentes.

Multiagente

En esta sección, se analizará con mayor detalle el concepto de sistemas multiagentes dentro del framework. Consolidará y ampliará las menciones anteriores de los conceptos de varios agentes y ofrecerá una descripción general integral de su arquitectura, beneficios y desafíos. Esto servirá como recurso central para comprender y diseñar aplicaciones multiagente.

Flows

En esta sección, se proporcionará una explicación específica de los "flujos" en el Framework de agentes. Se detallarán los diferentes tipos de flujos predefinidos (secuenciales, de bucle, automáticos, etc.) y cómo rigen el comportamiento de los agentes y la interacción con los agentes secundarios. Espera una explicación clara y estructurada de las mecánicas de flujo y las opciones de personalización.

Comunicación

En esta sección, se explorará la comunicación dentro del Framework de agentes, en particular, en los sistemas multiagente. Analizaremos cómo los agentes intercambian información, coordinan acciones y colaboran para alcanzar objetivos comunes. El enfoque se centrará en los mecanismos y patrones para una comunicación eficaz entre los agentes.

Planificación

En esta sección, se ofrecerá una exploración más detallada de la planificación dentro de los agentes. Se abordarán diferentes algoritmos de planificación, estrategias para desglosar tareas complejas y cómo los agentes usan la planificación para guiar sus acciones y el uso de herramientas. Se espera un debate más técnico sobre las metodologías de planificación relevantes para el desarrollo de agentes.

Sesión y estados

En esta sección, se proporcionará una explicación integral de las sesiones y la administración de estados en el Framework de agentes. Se detallará cómo se crean y se mantienen las sesiones, cómo se usan las variables de estado para almacenar y acceder a la información, y el ciclo de vida de los datos de sesión. Comprender las sesiones y los estados es fundamental para compilar agentes que puedan administrar el contexto y mantener la continuidad en las interacciones.

Devoluciones de llamada

Por último, en esta sección, se ofrecerá una explicación detallada y específica de las callbacks dentro del Framework de agentes. Se abordarán los diferentes tipos de devoluciones de llamada (antes o después del agente, el modelo, la herramienta), su propósito y cómo los desarrolladores pueden usarlas para personalizar y extender el comportamiento del agente en varias etapas del procesamiento. Obtén una guía detallada para aprovechar las devoluciones de llamada para la personalización avanzada de agentes.