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
pip install git+https://github.com/openai/swarm.git
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.
Gracias por los consejos, ¡Muy bueno Kevin!
¡Si necesitás ayuda no dudes en contactarnos! Gracias por tu tiempo.
Super interesante! Mil gracias por compartir!