OpenAI Swarm是一个教育性框架,用于探索符合人体工程学的轻量级多智能体编排。该项目由OpenAI解决方案团队管理,旨在为开发者提供一个简单、灵活且可控的多智能体系统构建工具。
重要更新: Swarm现已被OpenAI Agents SDK替代,后者是Swarm的生产就绪版本。OpenAI团队建议所有生产用例迁移到Agents SDK。
Swarm通过两个核心抽象实现智能体协调:
pip install git+ssh://git@github.com/openai/swarm.git
# 或者
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"])
输出示例:
Hope glimmers brightly,
New paths converge gracefully,
What can I assist?
Swarm的client.run()
函数实现以下循环:
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
agent | Agent | 要调用的(初始)智能体 | (必需) |
messages | List | 消息对象列表 | (必需) |
context_variables | dict | 上下文变量 | {} |
max_turns | int | 最大轮次 | float("inf") |
model_override | str | 模型覆盖 | None |
execute_tools | bool | 是否执行工具 | True |
stream | bool | 是否启用流式响应 | False |
debug | bool | 是否启用调试日志 | False |
字段 | 类型 | 描述 | 默认值 |
---|---|---|---|
name | str | 智能体名称 | "Agent" |
model | str | 使用的模型 | "gpt-4o" |
instructions | str或函数 | 智能体指令 | "You are a helpful agent." |
functions | List | 可调用函数列表 | [] |
tool_choice | str | 工具选择策略 | 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"}
)
Swarm提供了多个示例项目,展示不同的应用场景:
演示设置、函数调用、交接和上下文变量的基本用法
简单的分流设置,将请求转发给合适的智能体
展示函数调用的简单示例
多智能体设置,处理航空公司不同类型的客户服务请求
包括用户界面智能体和带有多种工具的帮助中心智能体
帮助进行销售和退款订单处理的个人购物智能体
Swarm支持流式响应,使用与Chat Completions API相同的事件:
stream = client.run(agent, messages, stream=True)
for chunk in stream:
print(chunk)
新增事件类型:
{"delim":"start"}
和{"delim":"end"}
- 标记智能体处理单个消息的开始和结束{"response": Response}
- 在流结束时返回完整的Response对象使用run_demo_loop
进行命令行测试:
from swarm.repl import run_demo_loop
run_demo_loop(agent, stream=True)
Swarm特别适合以下情况:
注意: 虽然Swarm已被OpenAI Agents SDK替代,但它仍然是一个优秀的教育资源,帮助开发者理解多智能体系统的基本概念和实现方式。对于生产环境,建议迁移到官方的Agents SDK。
OpenAI Swarm为多智能体系统的学习和开发提供了一个简洁而强大的框架。通过智能体和交接这两个核心概念,开发者可以构建复杂的AI工作流程,同时保持代码的可读性和可维护性。虽然已被新的SDK替代,但其设计理念和教育价值依然重要。