top of page
Foto del escritorKev Anderson

OpenAI lanza Swarm, la librería para orquestar multiples agentes

Swarm es un marco experimental desarrollado con fines educativos para investigar la orquestación de múltiples agentes en sistemas de inteligencia artificial. Su objetivo principal es ofrecer una interfaz ergonómica y ligera para explorar patrones como la transferencia de control y las rutinas dentro de sistemas multiagente.


Aunque no está destinado para uso en producción, Swarm ofrece a los desarrolladores y a la comunidad de IA una herramienta útil para entender mejor las dinámicas de coordinación y ejecución de múltiples agentes. Este artículo examina los componentes esenciales de Swarm, su arquitectura, funcionalidades, y aplicaciones potenciales, enfatizando su uso en contextos educativos.




1. Introducción a la Orquestación de Múltiples Agentes

La orquestación de múltiples agentes implica la coordinación de varias entidades de software (agentes) para ejecutar tareas de manera colaborativa y eficiente. En este contexto, Swarm se presenta como un marco experimental orientado a proporcionar un entorno controlable y ligero para gestionar interacciones entre agentes, enfocándose en patrones ergonómicos de transferencia y ejecución de rutinas.


Swarm busca explorar la eficiencia y controlabilidad en sistemas multiagente, ofreciendo un enfoque no basado en memoria que permite a los desarrolladores probar interacciones entre agentes y aplicar técnicas avanzadas de IA sin depender de un modelo de estado entre llamadas.


2. Instalación de Swarm y Requisitos


Swarm requiere Python 3.10 o superior. Para instalarlo, se pueden seguir las siguientes instrucciones:

pip install git+ssh://git@github.com/openai/swarm.git

o alternativamente


La instalación de Swarm permite a los desarrolladores experimentar con un marco básico de orquestación de agentes sin complicaciones de configuración avanzada.


3. Arquitectura de Swarm

La arquitectura de Swarm se fundamenta en dos elementos primarios:


  • Agentes (Agents): Cada agente es una entidad autónoma que encapsula un conjunto de instrucciones y herramientas específicas. Un agente puede decidir en cualquier momento transferir la conversación a otro agente.

  • Transferencias de control (Handoffs): La capacidad de un agente para transferir la ejecución a otro, permitiendo así una estructura flexible de comunicación entre agentes.


Estos elementos permiten una interacción fluida y altamente personalizable entre agentes, facilitando la construcción de soluciones escalables sin una curva de aprendizaje pronunciada.


3.1 Comparación con la API de Assistants

Aunque Swarm comparte ciertos aspectos con la API de Assistants, como el uso de modelos conversacionales, difiere notablemente en su implementación y objetivos. Mientras que la API de Assistants está diseñada para hilos completamente gestionados y con gestión de memoria incorporada, Swarm opera sin estado entre llamadas, centrado en la clientela sin memoria y en una experiencia educativa.


4. Ejemplos Prácticos de Swarm

El marco incluye una serie de ejemplos preconfigurados para facilitar su comprensión y experimentación. Estos ejemplos destacan distintos casos de uso para ilustrar el funcionamiento de Swarm, como:


  • Configuración Básica: Ejemplos de configuración inicial, llamadas a funciones, transferencias y uso de variables de contexto.

  • Agente de Triaje: Ejemplo de un paso de triaje básico para transferir la conversación al agente adecuado.

  • Agente Meteorológico: Ejemplo de llamadas a funciones específicas para servicios meteorológicos.

  • Servicio al Cliente en Aerolíneas: Configuración multiagente para manejar solicitudes de clientes en el contexto de aerolíneas.


Estos ejemplos sirven como recursos de aprendizaje y referencias para explorar las capacidades de Swarm en diferentes contextos.


5. Uso de Swarm: Estructura Básica de Código

Para correr Swarm, se inicia creando una instancia de cliente Swarm:

from swarm import Swarm client = Swarm() client.run()

5.1 Parámetros de la Función run()

La función run() de Swarm es análoga a la función chat.completions.create() de la API de Chat Completions, y se estructura mediante un ciclo de ejecución controlado por varios parámetros clave:


  • agent: El agente inicial para ejecutar la conversación.

  • messages: Lista de mensajes de entrada.

  • context_variables: Diccionario de variables de contexto adicionales.

  • max_turns: Número máximo de turnos de conversación permitidos.

  • model_override: Parámetro opcional para sobreescribir el modelo.

  • execute_tools: Booleano para controlar la ejecución de herramientas.

  • stream: Activa la respuesta en tiempo real.

  • debug: Activa el registro de depuración.


Swarm ejecuta el ciclo hasta completar todas las interacciones, devolviendo un objeto de respuesta con el estado actualizado de los mensajes, el agente y las variables de contexto.


6. Configuración de Agentes y Funciones

Cada Agente en Swarm representa un conjunto de instrucciones y funciones que pueden realizar una tarea específica o una serie de pasos definidos. La configuración de un agente es flexible y permite personalizar sus funciones y parámetros.


from swarm import Agent agent_a = Agent( name="Agent A", instructions="You are a helpful agent.", functions=[transfer_to_agent_b], ) agent_b = Agent( name="Agent B", instructions="Only speak in Haikus.", )Copy code

6.1 Funciones de los Agentes

Los agentes pueden ejecutar funciones en Python, las cuales deben retornar un valor en cadena. Si una función retorna un agente, se transfiere la ejecución a dicho agente.


def greet(context_variables, language): user_name = context_variables["user_name"] greeting = "Hola" if language.lower() == "spanish" else "Hello" return f"{greeting}, {user_name}!"

7. Transferencia entre Agentes y Actualización de Variables de Contexto

Swarm permite transferir la ejecución entre agentes a través de funciones que devuelven un agente destino. Esta funcionalidad es crucial para manejar interacciones complejas y gestionar redes de agentes de manera ordenada.


python sales_agent = Agent(name="Sales Agent") def transfer_to_sales(): return sales_agent


Al ejecutar una función de transferencia, Swarm puede también actualizar variables de contexto, permitiendo una interacción fluida y adaptable a lo largo de la conversación.


8. Implementación de Esquemas de Funciones y Streaming

Swarm convierte automáticamente las funciones en un esquema JSON para facilitar su uso en herramientas conversacionales. También soporta la transmisión de mensajes en tiempo real mediante su capacidad de streaming, útil para interacciones largas y complejas.


9. Evaluaciones y Utilidades Adicionales

Para facilitar la evaluación del rendimiento de Swarm en aplicaciones prácticas, el marco incluye herramientas de evaluación. Los desarrolladores pueden agregar suites de evaluación propias o usar ejemplos preexistentes, como los de la configuración para el agente de aerolíneas y el agente meteorológico.


Además, el script run_demo_loop permite ejecutar un REPL interactivo en la línea de comandos, útil para pruebas rápidas.


Conclusiones

Swarm, aunque experimental, ofrece una plataforma educativa robusta para la exploración de interacciones multiagente, favoreciendo el desarrollo de soluciones escalables y personalizables en un entorno controlado. Su enfoque ligero y ergonómico permite a los desarrolladores aprender sobre orquestación de agentes sin complicarse con configuraciones de producción, lo que lo convierte en una herramienta valiosa para la investigación y el aprendizaje en inteligencia artificial.

1 Comment

Rated 0 out of 5 stars.
No ratings yet

Add a rating
Eight Shields
Eight Shields
hace 2 días

Super interesante! Mil gracias por compartir!

Like
bottom of page