OpenAI Swarm é um framework educacional para explorar a orquestração multi-agente leve e ergonômica. Este projeto, gerenciado pela equipe de soluções da OpenAI, visa fornecer aos desenvolvedores uma ferramenta simples, flexível e controlável para construir sistemas multi-agente.
Atualização Importante: O Swarm foi substituído pelo OpenAI Agents SDK, que é uma versão pronta para produção do Swarm. A equipe da OpenAI recomenda que todos os casos de uso de produção migrem para o Agents SDK.
O Swarm implementa a coordenação de agentes através de duas abstrações centrais:
pip install git+ssh://git@github.com/openai/swarm.git
# Ou
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="Agent A",
instructions="You are a helpful agent.",
functions=[transfer_to_agent_b],
)
agent_b = Agent(
name="Agent B",
instructions="Only speak in Haikus.",
)
response = client.run(
agent=agent_a,
messages=[{"role": "user", "content": "I want to talk to agent B."}],
)
print(response.messages[-1]["content"])
Exemplo de Saída:
Hope glimmers brightly,
New paths converge gracefully,
What can I assist?
A função client.run()
do Swarm implementa o seguinte ciclo:
Parâmetro | Tipo | Descrição | Valor Padrão |
---|---|---|---|
agent | Agent | O agente (inicial) a ser chamado | (Obrigatório) |
messages | List | Lista de objetos de mensagem | (Obrigatório) |
context_variables | dict | Variáveis de contexto | {} |
max_turns | int | Número máximo de turnos | float("inf") |
model_override | str | Substituição do modelo | None |
execute_tools | bool | Se deve executar ferramentas | True |
stream | bool | Se deve habilitar a resposta em streaming | False |
debug | bool | Se deve habilitar logs de depuração | False |
Campo | Tipo | Descrição | Valor Padrão |
---|---|---|---|
name | str | Nome do agente | "Agent" |
model | str | Modelo a ser usado | "gpt-4o" |
instructions | str ou função | Instruções do agente | "You are a helpful agent." |
functions | List | Lista de funções chamáveis | [] |
tool_choice | str | Estratégia de escolha de ferramenta | None |
def instructions(context_variables):
user_name = context_variables["user_name"]
return f"Help the user, {user_name}, do whatever they want."
agent = Agent(instructions=instructions)
response = client.run(
agent=agent,
messages=[{"role":"user", "content": "Hi!"}],
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 "Done"
agent = Agent(functions=[greet])
sales_agent = Agent(name="Sales Agent")
def transfer_to_sales():
return sales_agent
agent = Agent(functions=[transfer_to_sales])
def talk_to_sales():
print("Hello, World!")
return Result(
value="Done",
agent=sales_agent,
context_variables={"department": "sales"}
)
O Swarm fornece vários projetos de exemplo, mostrando diferentes cenários de aplicação:
Demonstra o uso básico de configuração, chamadas de função, transferências e variáveis de contexto
Configuração simples de triagem, encaminhando solicitações para o agente apropriado
Mostra um exemplo simples de chamadas de função
Configuração multi-agente, lidando com diferentes tipos de solicitações de atendimento ao cliente de companhias aéreas
Inclui um agente de interface de usuário e um agente de central de ajuda com várias ferramentas
Assistente de compras pessoal para ajudar no processamento de vendas e pedidos de reembolso
O Swarm suporta respostas em streaming, usando os mesmos eventos da API Chat Completions:
stream = client.run(agent, messages, stream=True)
for chunk in stream:
print(chunk)
Novos tipos de eventos:
{"delim":"start"}
e {"delim":"end"}
- Marcam o início e o fim do processamento de uma única mensagem pelo agente{"response": Response}
- Retorna o objeto Response completo no final do streamUse run_demo_loop
para testes de linha de comando:
from swarm.repl import run_demo_loop
run_demo_loop(agent, stream=True)
O Swarm é particularmente adequado para as seguintes situações:
Atenção: Embora o Swarm tenha sido substituído pelo OpenAI Agents SDK, ele ainda é um excelente recurso educacional para ajudar os desenvolvedores a entender os conceitos básicos e a implementação de sistemas multi-agente. Para ambientes de produção, recomenda-se migrar para o Agents SDK oficial.
O OpenAI Swarm fornece um framework conciso e poderoso para o aprendizado e desenvolvimento de sistemas multi-agente. Através dos dois conceitos centrais de agentes e transferências, os desenvolvedores podem construir fluxos de trabalho de IA complexos, mantendo a legibilidade e a manutenção do código. Embora tenha sido substituído pelo novo SDK, sua filosofia de design e valor educacional permanecem importantes.