Swarm(实验性教学框架)
一个轻量级、符合人体工程学的多智能体编排框架,专注于智能体间的协调与灵活交接。
证据显示:仓库由OpenAI官方组织发布,MIT许可证,有SECURITY.md提供安全政策链接。代码中Swarm客户端接受可注入的OpenAI客户端,允许模拟,但默认使用真实API密钥,未提供最小权限或用户确认机制。数据流透明度有限,文档说明context_variables和消息传递,但未明确敏感数据处理。依赖安全方面,pyproject.toml仅列出setuptools,未锁定版本,存在供应链风险。外部影响方面,工具函数可执行任意Python代码,但文档未强调风险。回滚机制未提及。来源归属清晰,贡献者列出。扣分原因:缺乏用户确认、敏感数据处理、回滚机制,依赖未锁定。
证据显示:代码结构一致,README与代码示例匹配。依赖OpenAI Python SDK,但未指定版本,可能影响可用性。错误处理方面,文档说明函数调用错误会追加错误消息,但未提供详细错误消息格式。扣分原因:依赖版本未固定,错误消息细节不足。
证据显示:README明确目标受众为开发者,提供多个示例场景(basic、triage_agent、weather_agent等)。能力边界清晰,说明Swarm是教育性框架,不适用于生产。触发精度方面,函数调用和handoff机制明确。环境适配方面,要求Python 3.10+,支持流式。扣分原因:无重大缺陷,但未提供详细的环境配置指南。
证据显示:README结构清晰,包含安装、使用、文档、示例等。安装说明提供pip安装命令。命名稳定,Agent和Swarm类命名一致。示例丰富,包含多个场景。已知限制明确,指出Swarm已被Agents SDK取代。许可证为MIT。版本控制方面,无CHANGELOG,但README提及取代。维护责任明确,由OpenAI团队维护。扣分原因:缺少版本变更日志。
证据显示:输出可用性高,返回Response对象包含消息、代理和上下文变量。边际价值高,提供轻量级多代理编排。成本效益方面,免费开源,但需要OpenAI API密钥。扣分原因:无重大缺陷。
证据显示:README中的声明与代码示例一致,可追溯。跨来源验证有限,仅依赖单一仓库。事实与推断分离,文档明确区分实验性和生产就绪。扣分原因:缺乏外部验证。
- 该框架为实验性,不适用于生产环境,官方已建议迁移至Agents SDK。
- 工具函数可执行任意代码,需谨慎设计权限和输入验证。
- 依赖未锁定版本,存在供应链风险。
- 未提供用户确认机制,敏感操作需自行实现。
这个 Agent 能做什么,适合哪些场景?
Swarm 是 OpenAI 解决方案团队维护的一个实验性教学框架,旨在演示如何构建轻量级且高度可控的多智能体编排系统。该框架基于两个核心抽象:Agent 和 handoffs,Agent 封装了指令和工具,并可在任何时刻将对话转交给另一个 Agent。Swarm 完全由 Chat Completions API 驱动,调用之间无状态。它提供 client.run() 方法执行工具调用、处理智能体交接和上下文变量,并支持流式响应。安装简单,但官方建议生产环境迁移到新的 OpenAI Agents SDK。
Swarm 的核心是 Swarm 客户端和 Agent 类。客户端通过 run() 方法接收初始 Agent 和消息列表,并循环执行:获取当前智能体的补全、执行工具调用、必要时切换智能体、更新上下文变量。Agent 可以定义为包含指令和函数列表,函数可以是普通的 Python 函数,返回 Agent 则触发交接。Swarm 自动将函数转换为 JSON Schema 供 Chat Completions 使用。它还支持通过 Result 对象更新上下文变量、流式响应和 REPL 演示循环。
- 开发者学习如何使用函数调用和 handoffs 构建多智能体编排系统。
- 需要在单个对话中处理多个独立能力或指令集的场景。
- 构建客服机器人,如示例中的航空公司支持、用户界面代理和帮助中心代理。
- 需要轻量级且可测试的智能体协调逻辑,而不想引入全托管线程的开发者。
- 用于教学或原型设计,演示如何实现智能体间的转移和工具调用。
这个 Agent 有哪些优点和局限?
- 轻量级设计,仅依赖 Chat Completions API,无状态,易于集成和测试。
- 使用简单的 Agent 和 handoff 抽象,可以灵活构建复杂的工作流和智能体网络。
- 提供流式响应和 REPL 演示,便于快速测试和调试。
- 由 OpenAI 团队维护,作为教学资源,示例丰富,包括航空公司客服、天气代理和购物助手。
- 实验性项目,官方已宣布被 Agents SDK 取代,生产环境不建议使用。
- 完全依赖 OpenAI 的 API,无法用于其他模型提供商,存在厂商锁定。
- 文档有限,且没有内置的状态管理或托管线程,需要自行处理会话状态。
- 安装需要 git 和 Python 3.10+,对非开发者有一定门槛。
- 部分函数 schema 生成可能不完整,例如不支持逐参数描述。
如何安装或部署这个 Agent?
需要使用 Python 3.10 或更高版本。通过以下命令安装:
pip install git+ssh://[email protected]/openai/swarm.git或者使用 HTTPS:
pip install git+https://github.com/openai/swarm.git如何使用这个 Agent?
首先设置 OpenAI API 密钥。然后,导入并创建 Swarm 客户端,定义 Agent 及其指令和函数。使用 client.run() 传入初始 Agent 和消息列表,它返回一个 Response 对象,包含消息、最后执行的 Agent 和上下文变量。示例代码:
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"])这个 Agent 与同类方案有什么区别?
Swarm 的设计与 OpenAI 的 Assistants API 不同,后者提供全托管的线程和内置记忆管理。Swarm 则完全在客户端运行,无状态,类似于 Chat Completions API。官方建议生产环境迁移到新的 OpenAI Agents SDK 以获得更好的支持。