El futuro de los agentes promete avances emocionantes y apenas hemos comenzado a explorar lo que es posible. A medida que las herramientas se vuelvan más sofisticadas y las capacidades de razonamiento mejoren, los agentes estarán capacitados para resolver problemas cada vez más complejos. Además, el enfoque estratégico de ‘encadenamiento de agentes’ seguirá ganando impulso.
Combinando agentes especializados, cada uno sobresaliendo en un dominio o tarea particular, podemos crear un enfoque de ‘mezcla de expertos’ capaz de ofrecer resultados excepcionales en diversas industrias y áreas problemáticas.
Es importante recordar que construir arquitecturas de agentes complejas requiere un enfoque iterativo. La experimentación y el perfeccionamiento son clave para encontrar soluciones a casos de negocio específicos y necesidades organizacionales. Ningún agente es igual a otro debido a la naturaleza generativa de los modelos fundamentales que sustentan su arquitectura. Sin embargo, al aprovechar los puntos fuertes de cada uno de estos componentes fundamentales, podemos crear aplicaciones impactantes que amplían las capacidades de los modelos de lenguaje y generan valor en el mundo real.
¿Qué es un agente de IA?
En su forma más básica, un agente de IA generativa se puede definir como una aplicación que intenta alcanzar un objetivo observando el entorno y actuando sobre él utilizando las herramientas que tiene a su disposición. Los agentes son autónomos y pueden actuar sin intervención humana, especialmente cuando se les proporcionan metas claras que deben cumplir. Además, los agentes pueden ser proactivos en su enfoque para alcanzar sus objetivos. Incluso en ausencia de instrucciones explícitas de una persona, un agente puede razonar sobre lo que debería hacer a continuación para lograr su objetivo final. Aunque la idea de los agentes en IA es bastante general y poderosa, este documento se centra en los tipos específicos de agentes que los modelos de IA generativa pueden construir en el momento de su publicación.
Para entender el funcionamiento interno de un agente, primero presentemos los componentes fundamentales que impulsan su comportamiento, acciones y toma de decisiones. La combinación de estos elementos se describe como una arquitectura cognitiva, y existen muchas arquitecturas de este tipo que se pueden lograr mezclando y combinando estos componentes. Al centrarse en las funcionalidades principales, hay tres componentes esenciales en la arquitectura cognitiva de un agente, como se muestra en la Figura 1.
📖 Glosario de Términos Clave
- ReAct (Reasoning and Acting): Marco de razonamiento que combina la generación de respuestas con acciones concretas.
- Chain-of-Thought (CoT): Técnica de razonamiento que desglosa una tarea en pasos intermedios.
- Tree-of-Thought (ToT): Ampliación de CoT que permite explorar múltiples cadenas de razonamiento de forma iterativa.
- Orchestration Layer (Capa de Orquestación): Arquitectura cognitiva que gestiona el razonamiento, la memoria y las decisiones del agente.
- Data Store (Almacén de Datos): Espacio de almacenamiento dinámico que permite a los agentes acceder a datos actualizados y estructurados durante la ejecución.
El modelo
Cuando hablamos de agentes, el modelo se refiere al modelo de lenguaje (LM) que actúa como el cerebro central que toma decisiones para los procesos del agente. Este modelo puede ser uno solo o varios, y pueden ser de cualquier tamaño (chico o grande). Lo clave es que puedan seguir instrucciones y razonar lógicamente usando marcos como ReAct, Chain-of-Thought o Tree-of-Thoughts. Los modelos pueden ser generales, multimodales o estar ajustados específicamente según lo que necesite tu agente. Para tener los mejores resultados, es importante usar un modelo que se adapte bien a la aplicación final que buscás. Idealmente, el modelo debería haber sido entrenado con datos que estén alineados con las herramientas que planeás usar en la arquitectura cognitiva. Ahora bien, el modelo generalmente no viene entrenado con la configuración específica del agente (como la selección de herramientas o el setup de orquestación/razonamiento). Pero, podés afinarlo aún más dándole ejemplos que muestren cómo opera el agente, incluyendo casos donde usa herramientas específicas o pasos de razonamiento en diferentes contextos.
Las herramientas
Aunque los modelos base son impresionantes para generar texto e imágenes, tienen una limitación importante: no pueden interactuar con el mundo exterior. Ahí es donde entran las herramientas, que les permiten a los agentes conectar con datos y servicios externos, abriendo un abanico de acciones mucho más grande que el del modelo solo. Las herramientas pueden ser de distintos tipos y niveles de complejidad, pero generalmente funcionan con métodos web API como GET, POST, PATCH y DELETE. Por ejemplo, una herramienta podría actualizar información de un cliente en una base de datos o consultar el clima para hacer una recomendación de viaje. Con estas herramientas, los agentes pueden acceder y trabajar con información del mundo real. Esto los habilita para soportar sistemas más especializados como la generación aumentada por recuperación (RAG), que amplía mucho las capacidades del agente más allá de lo que el modelo base podría hacer por sí solo.
La capa de orquestación
La capa de orquestación es lo que regula cómo el agente toma información, razona internamente y usa ese razonamiento para decidir cuál será su próxima acción. Este ciclo sigue y sigue hasta que el agente alcanza su meta o llega a un punto de parada. La complejidad de esta capa puede variar mucho dependiendo del agente y de la tarea que esté llevando a cabo. Algunos ciclos pueden ser cálculos simples con reglas de decisión, mientras que otros pueden tener lógica encadenada, incluir algoritmos adicionales de machine learning o aplicar otras técnicas de razonamiento probabilístico. Vamos a profundizar más sobre la implementación detallada de estas capas de orquestación en la sección de arquitectura cognitiva. (AI agents) como extensiones de modelos de lenguaje. Los puntos clave incluyen:
- Extensión de capacidades: Los agentes permiten a los modelos de lenguaje acceder a información en tiempo real, planificar y ejecutar tareas complejas de manera autónoma, gracias al uso de herramientas externas.
- Capa de orquestación: Es el núcleo operativo del agente. Actúa como una arquitectura cognitiva que gestiona el razonamiento, la planificación y la toma de decisiones. Técnicas como ReAct (Reasoning and Acting), Chain-of-Thought (CoT) y Tree-of-Thought (ToT) proporcionan marcos para estructurar estas operaciones.
- Herramientas externas: Los agentes interactúan con el mundo exterior a través de extensiones, funciones y almacenes de datos (Data Stores). Esto les permite ejecutar llamadas a APIs, acceder a datos estructurados y no estructurados, y generar aplicaciones basadas en datos【23:0†source】.
- Evolución futura: Se espera que los agentes sean cada vez más sofisticados y capaces de resolver problemas más complejos. La estrategia de encadenamiento de agentes especializados será clave para resolver tareas multidominio. Por ejemplo, en el sector de la salud, un agente especializado en diagnóstico por imágenes puede colaborar con otro agente enfocado en análisis de historiales clínicos para ofrecer un diagnóstico integral. De manera similar, en el ámbito financiero, un agente encargado de monitorear mercados podría coordinarse con otro centrado en evaluar riesgos para mejorar la toma de decisiones en inversiones
Agentes vs. Modelos
Para entender mejor las diferencias entre agentes de IA y modelos de lenguaje, es fundamental aclarar que mientras los modelos de lenguaje se centran en generar respuestas basadas en datos de entrenamiento, los agentes van un paso más allá. Los agentes no solo predicen o completan texto, sino que también pueden interactuar con el mundo exterior, utilizar herramientas, acceder a bases de datos en tiempo real y ejecutar acciones concretas.
Principales diferencias:
- Modelos de lenguaje: Limitados a lo que han aprendido durante su entrenamiento. Realizan predicciones basadas en patrones de datos existentes.
- Agentes de IA: Extienden sus capacidades al conectarse con herramientas externas, gestionando información en tiempo real y ajustando sus acciones según el entorno.
Un ejemplo claro es el uso de un agente en el sector de comercio electrónico, donde el modelo de lenguaje puede generar descripciones de productos, mientras que el agente podría automatizar la gestión de inventarios y responder consultas de clientes en tiempo real.
Herramientas: Las claves para interactuar con el mundo exterior
Si bien los modelos de lenguaje son excelentes procesando información, no tienen la capacidad de percibir ni influir directamente en el mundo real. Esto limita su utilidad en situaciones que requieren interactuar con sistemas o datos externos. En otras palabras, un modelo de lenguaje solo es tan bueno como los datos con los que fue entrenado. Pero, sin importar cuántos datos le demos, los modelos siguen careciendo de la capacidad fundamental de interactuar con el mundo exterior. Entonces, ¿cómo podemos potenciar a nuestros modelos para que tengan interacciones en tiempo real y con contexto en sistemas externos? Funciones, Extensiones, Almacenes de Datos y Plugins son formas de dotar al modelo de esta capacidad crítica.
Aunque tienen diferentes nombres, las herramientas son lo que conecta a nuestros modelos base con el mundo exterior. Este enlace a sistemas y datos externos permite que el agente realice una mayor variedad de tareas, con más precisión y fiabilidad. Por ejemplo, las herramientas pueden permitir que los agentes ajusten configuraciones en hogares inteligentes, actualicen calendarios, obtengan información de usuarios desde una base de datos o envíen correos electrónicos basados en instrucciones específicas.
A la fecha de esta publicación, existen tres tipos principales de herramientas con las que los modelos de Google pueden interactuar: Extensiones, Funciones y Almacenes de Datos. Al equipar a los agentes con estas herramientas, se desbloquea un gran potencial para que no solo comprendan el mundo, sino que también puedan actuar en él, abriendo las puertas a una infinidad de nuevas aplicaciones y posibilidades.
Extensiones
La forma más sencilla de entender las Extensiones es pensar en ellas como un puente entre una API y un agente de manera estandarizada, lo que permite que los agentes ejecuten APIs sin importar la implementación subyacente. Supongamos que creaste un agente cuyo objetivo es ayudar a los usuarios a reservar vuelos. Sabés que querés usar la API de Google Flights para obtener información sobre vuelos, pero no estás seguro de cómo lograr que tu agente haga llamadas a este endpoint de la API.
Una opción sería implementar código personalizado que tome la consulta del usuario, la analice para extraer información relevante y luego haga la llamada a la API. Por ejemplo, si un usuario dice: «Quiero reservar un vuelo de Austin a Zúrich», nuestro código personalizado debería extraer «Austin» y «Zúrich» como entidades relevantes antes de intentar hacer la llamada. Pero, ¿qué pasa si el usuario dice: «Quiero reservar un vuelo a Zúrich» sin especificar una ciudad de salida? La llamada a la API fallaría por falta de datos, y tendríamos que implementar más código para manejar estos casos. Este enfoque no escala bien y podría romperse fácilmente en cualquier escenario que no haya sido previsto en el código.
Una forma más robusta de abordar esto es usar una Extensión. Las extensiones actúan como puente entre un agente y una API de la siguiente manera:
- Enseñan al agente cómo usar el endpoint de la API mediante ejemplos.
- Enseñan qué argumentos o parámetros son necesarios para que la llamada a la API sea exitosa.
Las extensiones pueden desarrollarse de manera independiente al agente, pero deben proporcionarse como parte de su configuración. El agente, durante su ejecución, utiliza el modelo y ejemplos para decidir qué extensión, si alguna, es adecuada para resolver la consulta del usuario. Este es un punto clave de las extensiones: sus tipos de ejemplos incorporados permiten que el agente seleccione dinámicamente la extensión más adecuada para la tarea.
Pensalo como un desarrollador de software
De la misma manera que un desarrollador de software decide qué endpoints de API usar según la necesidad del usuario, el agente/modelo utiliza un conjunto de extensiones conocidas para determinar cuál se ajusta mejor a la consulta. Si el usuario quiere reservar un vuelo, el desarrollador puede usar la API de Google Flights. Si el usuario quiere encontrar la cafetería más cercana, puede usar la API de Google Maps. El agente sigue un proceso similar para seleccionar la extensión más apropiada.
Si querés ver las extensiones en acción, podés probarlas en la aplicación Gemini yendo a Configuración > Extensiones y habilitando las que desees. Por ejemplo, podrías habilitar la extensión de Google Flights y luego pedirle a Gemini: «Mostrame vuelos de Austin a Zúrich para el próximo viernes».
Ejemplos de Extensiones
Para simplificar el uso de extensiones, Google ofrece algunas listas para usar que se pueden importar rápidamente a tu proyecto con una configuración mínima. Por ejemplo, la extensión de Intérprete de Código permite generar y ejecutar código Python a partir de una descripción en lenguaje natural.
En resumen, las extensiones permiten que los agentes perciban, interactúen e influyan en el mundo exterior de muchas maneras. La selección e invocación de estas extensiones se guía mediante el uso de ejemplos definidos como parte de la configuración de la extensión.
Funciones
En el mundo del desarrollo de software, las funciones son módulos de código que cumplen una tarea específica y se pueden reutilizar. Cuando un desarrollador escribe un programa, crea funciones para distintas tareas y define la lógica sobre cuándo llamar a cada función, así como los parámetros que necesita.
En los agentes, las funciones trabajan de manera similar, pero reemplazamos al desarrollador por un modelo. El modelo puede decidir qué función usar y con qué argumentos, basándose en su especificación.
A diferencia de las extensiones:
- El modelo genera una función y sus argumentos, pero no realiza una llamada a la API en vivo.
- Las funciones se ejecutan en el lado del cliente, mientras que las extensiones se ejecutan en el lado del agente.
Un ejemplo práctico sería usar funciones para procesar datos del lado del cliente, donde el agente solo proporciona los parámetros. Esta flexibilidad ofrece mayor control sobre el flujo de datos y la interacción con otras capas de la aplicación.
Almacenes de Datos (Data Stores)
Imaginá un modelo de lenguaje como una inmensa biblioteca llena de libros que representan sus datos de entrenamiento. Pero, a diferencia de una biblioteca que incorpora constantemente nuevos volúmenes, esta permanece estática, conteniendo solo el conocimiento con el que fue entrenada inicialmente. Esto genera un desafío, ya que el conocimiento del mundo real está en constante evolución. Los Almacenes de Datos abordan esta limitación proporcionando acceso a información más dinámica y actualizada, asegurando que las respuestas del modelo se mantengan fundamentadas en hechos y sean relevantes.
Consideremos un escenario común donde un desarrollador necesita proporcionarle al modelo una pequeña cantidad de datos adicionales, tal vez en forma de hojas de cálculo o archivos PDF.
Los Almacenes de Datos permiten a los desarrolladores proporcionar datos adicionales en su formato original a un agente, eliminando la necesidad de transformaciones de datos que consumen mucho tiempo, reentrenamiento del modelo o ajustes finos (fine-tuning). El Almacén de Datos convierte el documento entrante en un conjunto de embeddings en una base de datos vectorial, lo que permite que el agente extraiga la información que necesita para complementar su próxima acción o respuesta al usuario.
Implementación y Aplicación
En el contexto de los agentes de IA Generativa, los Almacenes de Datos suelen implementarse como una base de datos vectorial a la que el desarrollador quiere que el agente tenga acceso durante su ejecución. Si bien no vamos a profundizar en las bases de datos vectoriales aquí, lo importante es entender que almacenan datos en forma de embeddings vectoriales, un tipo de vector de alta dimensión o representación matemática de los datos proporcionados.
Uno de los ejemplos más prolíficos del uso de Almacenes de Datos con modelos de lenguaje en los últimos tiempos ha sido la implementación de aplicaciones basadas en Generación Aumentada por Recuperación (RAG, por sus siglas en inglés). Estas aplicaciones buscan ampliar el alcance y la profundidad del conocimiento de un modelo más allá de los datos de entrenamiento iniciales, otorgándole acceso a datos en diversos formatos como:
- Contenido web
- Datos estructurados en formatos como PDF, documentos de Word, CSV, hojas de cálculo, etc.
- Datos no estructurados en formatos como HTML, PDF, TXT, etc.
RAG permite que los agentes combinen lo mejor de ambos mundos: la capacidad de razonamiento y generación de texto de los modelos de lenguaje con el acceso a información actualizada y específica de bases de datos externas. De esta manera, se evita que el modelo genere respuestas basadas únicamente en sus datos de entrenamiento (que podrían quedar desactualizados con el tiempo) y, en cambio, se apoya en datos recientes y relevantes proporcionados por los Almacenes de Datos.
Un ejemplo práctico podría ser el desarrollo de un agente que actúe como asistente legal. A través de un Almacén de Datos, el agente podría acceder a documentos jurídicos actualizados, jurisprudencia o normativas nuevas sin necesidad de reentrenar el modelo completo.
Este enfoque no solo ahorra tiempo y recursos, sino que también garantiza que el agente esté siempre trabajando con información relevante y verificada.
En resumen, los Almacenes de Datos desempeñan un papel fundamental en la evolución de los agentes de IA generativa, ofreciendo una solución escalable y eficiente para mantenerlos alineados con la realidad del mundo exterior.
📈 Conclusión Final
El documento proporciona una visión integral de cómo los agentes pueden ampliar las capacidades de los modelos de lenguaje, impulsando aplicaciones prácticas en entornos empresariales. Las técnicas descritas, como ReAct y CoT, forman la base para desarrollar agentes más sofisticados y autónomos.
Áreas de mejora:
- Se sugiere mayor detalle en los ejemplos prácticos de implementación. Por ejemplo, podría explorarse la creación de un agente que automatice procesos en la gestión de inventarios de comercios electrónicos, integrando APIs de logística y análisis de ventas en tiempo real. Otro caso relevante sería el desarrollo de agentes para la atención al cliente, utilizando herramientas de procesamiento de lenguaje natural y bases de datos para ofrecer respuestas personalizadas y resolver problemas de manera autónoma. Explorar más a fondo el impacto de estas tecnologías en sectores específicos.
Preguntas futuras:
- ¿Cómo evolucionarán las herramientas de aprendizaje basado en agentes en los próximos años?
- ¿Qué rol jugarán los agentes en la automatización de procesos complejos?
Este análisis proporciona una comprensión detallada del documento y sus implicancias para el futuro de la inteligencia artificial.
📚 Citas y Referencias de «Agents«
Basado en el DOC: «Agents»
Authors: Julia Wiesinger, Patrick Marlow and Vladimir Vuskovic
El Documento Original: https://www.kaggle.com/whitepaper-agents
El documento cita trabajos relevantes que explican las bases del razonamiento y la acción en modelos de lenguaje. Las siguientes citas fueron seleccionadas porque representan avances fundamentales en la integración de razonamiento y acción en modelos de lenguaje. Estos trabajos no solo abordan técnicas innovadoras, sino que también establecen la base para futuras investigaciones en la evolución de agentes de IA. Algunas citas clave son:
- Shafran, I., Cao, Y. et al., 2022, ‘ReAct: Synergizing Reasoning and Acting in Language Models’. Available at:
https://arxiv.org/abs/2210.03629 - Wei, J., Wang, X. et al., 2023, ‘Chain-of-Thought Prompting Elicits Reasoning in Large Language Models’.
Available at: https://arxiv.org/pdf/2201.11903.pdf - Wang, X. et al., 2022, ‘Self-Consistency Improves Chain of Thought Reasoning in Language Models’.
Available at: https://arxiv.org/abs/2203.11171 - Diao, S. et al., 2023, ‘Active Prompting with Chain-of-Thought for Large Language Models’. Available at:
https://arxiv.org/pdf/2302.12246.pdf - Zhang, H. et al., 2023, ‘Multimodal Chain-of-Thought Reasoning in Language Models’. Available at:
https://arxiv.org/abs/2302.00923 - Yao, S. et al., 2023, ‘Tree of Thoughts: Deliberate Problem Solving with Large Language Models’. Available at:
https://arxiv.org/abs/2305.10601 - Long, X., 2023, ‘Large Language Model Guided Tree-of-Thought’. Available at:
https://arxiv.org/abs/2305.08291 - Google. ‘Google Gemini Application’. Available at: http://gemini.google.com
- Swagger. ‘OpenAPI Specification’. Available at: https://swagger.io/specification/
- Xie, M., 2022, ‘How does in-context learning work? A framework for understanding the differences from
traditional supervised learning’. Available at: https://ai.stanford.edu/blog/understanding-incontext/ - Google Research. ‘ScaNN (Scalable Nearest Neighbors)’. Available at:
https://github.com/google-research/google-research/tree/master/scann - LangChain. ‘LangChain’. Available at: https://python.langchain.com/v0.2/docs/introduction/