OpenAI Swarm es un marco educativo para explorar la orquestación multiagente ligera y ergonómica. Este proyecto, gestionado por el equipo de soluciones de OpenAI, tiene como objetivo proporcionar a los desarrolladores una herramienta sencilla, flexible y controlable para construir sistemas multiagente.
Actualización Importante: Swarm ha sido reemplazado por el SDK de Agentes de OpenAI, que es una versión lista para producción de Swarm. El equipo de OpenAI recomienda migrar todos los casos de uso de producción al SDK de Agentes.
Swarm implementa la coordinación de agentes a través de dos abstracciones centrales:
pip install git+ssh://git@github.com/openai/swarm.git
# O
pip install git+https://github.com/openai/swarm.git
from swarm import Swarm, Agent
client = Swarm()
def transfer_to_agent_b():
return agent_b
agent_a = Agent(
name="Agente A",
instructions="Eres un agente útil.",
functions=[transfer_to_agent_b],
)
agent_b = Agent(
name="Agente B",
instructions="Solo habla en Haikus.",
)
response = client.run(
agent=agent_a,
messages=[{"role": "user", "content": "Quiero hablar con el agente B."}],
)
print(response.messages[-1]["content"])
Ejemplo de Salida:
La esperanza brilla,
Nuevos caminos convergen bien,
¿En qué puedo ayudar?
La función client.run()
de Swarm implementa el siguiente bucle:
Parámetro | Tipo | Descripción | Valor Predeterminado |
---|---|---|---|
agent | Agent | El agente (inicial) a llamar | (Requerido) |
messages | List | Lista de objetos de mensaje | (Requerido) |
context_variables | dict | Variables de contexto | {} |
max_turns | int | Número máximo de turnos | float("inf") |
model_override | str | Anulación del modelo | None |
execute_tools | bool | Si se deben ejecutar las herramientas | True |
stream | bool | Si se debe habilitar la respuesta de flujo | False |
debug | bool | Si se deben habilitar los registros de depuración | False |
Campo | Tipo | Descripción | Valor Predeterminado |
---|---|---|---|
name | str | Nombre del agente | "Agente" |
model | str | Modelo a utilizar | "gpt-4o" |
instructions | str o función | Instrucciones del agente | "Eres un agente útil." |
functions | List | Lista de funciones invocables | [] |
tool_choice | str | Estrategia de selección de herramientas | None |
def instructions(context_variables):
user_name = context_variables["user_name"]
return f"Ayuda al usuario, {user_name}, a hacer lo que quiera."
agent = Agent(instructions=instructions)
response = client.run(
agent=agent,
messages=[{"role":"user", "content": "¡Hola!"}],
context_variables={"user_name":"John"}
)
def greet(context_variables, language):
user_name = context_variables["user_name"]
greeting = "Hola" if language.lower() == "spanish" else "Hello"
print(f"{greeting}, {user_name}!")
return "Hecho"
agent = Agent(functions=[greet])
sales_agent = Agent(name="Agente de Ventas")
def transfer_to_sales():
return sales_agent
agent = Agent(functions=[transfer_to_sales])
def talk_to_sales():
print("¡Hola, Mundo!")
return Result(
value="Hecho",
agent=sales_agent,
context_variables={"department": "sales"}
)
Swarm proporciona varios proyectos de ejemplo que muestran diferentes escenarios de aplicación:
Demuestra el uso básico de la configuración, la llamada a funciones, la transferencia y las variables de contexto.
Configuración de triaje simple que reenvía las solicitudes al agente apropiado.
Muestra un ejemplo simple de llamada a funciones.
Configuración multiagente que maneja diferentes tipos de solicitudes de servicio al cliente de una aerolínea.
Incluye un agente de interfaz de usuario y un agente de centro de ayuda con varias herramientas.
Asistente de compras personal que ayuda con el procesamiento de pedidos de ventas y reembolsos.
Swarm admite respuestas de flujo, utilizando los mismos eventos que la API de Chat Completions:
stream = client.run(agent, messages, stream=True)
for chunk in stream:
print(chunk)
Nuevos tipos de eventos:
{"delim":"start"}
y {"delim":"end"}
- Marcan el inicio y el final del procesamiento de un solo mensaje por parte del agente.{"response": Response}
- Devuelve el objeto Response completo al final del flujo.Utilice run_demo_loop
para pruebas de línea de comandos:
from swarm.repl import run_demo_loop
run_demo_loop(agent, stream=True)
Swarm es especialmente adecuado para las siguientes situaciones:
Nota: Aunque Swarm ha sido reemplazado por el SDK de Agentes de OpenAI, sigue siendo un excelente recurso educativo para ayudar a los desarrolladores a comprender los conceptos básicos y la implementación de sistemas multiagente. Para entornos de producción, se recomienda migrar al SDK de Agentes oficial.
OpenAI Swarm proporciona un marco simple y potente para el aprendizaje y el desarrollo de sistemas multiagente. A través de los dos conceptos centrales de agentes y transferencias, los desarrolladores pueden construir flujos de trabajo de IA complejos, manteniendo al mismo tiempo la legibilidad y la mantenibilidad del código. Aunque ha sido reemplazado por un nuevo SDK, su filosofía de diseño y su valor educativo siguen siendo importantes.