Agency Swarm 多智能体编排框架
基于 OpenAI Agents SDK 的可信赖多智能体编排框架,用于构建和管理协作式 AI 智能体团队。
证据显示框架允许用户定义工具和通信流,但未提供权限最小化机制或用户确认步骤。数据流透明度有限,仅通过文档描述通信流。敏感数据处理未明确说明。依赖项有版本范围,但未提供安全审计。外部效果(如文件上传、API调用)未明确限制。未提供回滚机制。来源归属通过许可证和作者信息部分明确。扣分:缺少权限控制、用户确认、回滚机制。
框架内部一致性较好,文档与代码示例一致。依赖项有版本范围,但未验证可用性。错误消息未在文档中详细说明。扣分:错误处理文档不足。
面向开发者,提供多种使用场景(Web UI、终端、编程接口)。能力边界通过通信流定义,但触发精度未明确。环境兼容性(Python 3.12+,多OS)已说明。扣分:触发精度和边界说明不足。
信息架构清晰,有安装指南、示例和文档链接。命名稳定,版本号明确。已知限制未明确列出。许可证为MIT,版本控制有changelog但未提供。维护责任通过作者和贡献指南部分明确。扣分:缺少已知限制和changelog。
输出可用性高,提供多种运行方式。边际价值在于多智能体编排,但成本效益未量化。扣分:成本效益未说明。
文档中的声明(如覆盖率92%)未在提供的文件中验证。跨来源佐证有限。事实与推断未明确分离。扣分:声明缺乏证据支持。
- 未提供权限最小化或用户确认机制,使用时应谨慎处理敏感操作。
- 依赖项未进行安全审计,建议定期检查漏洞。
- 文档中的覆盖率等声明未在提供的文件中验证,需独立核实。
这个 Agent 能做什么,适合哪些场景?
Agency Swarm 是一个开源框架,用于构建多智能体应用,它扩展了 OpenAI Agents SDK,提供了专门的功能来创建、编排和管理协作式 AI 智能体群体。该框架由 VRSEN 开发,灵感来源于现实世界的组织结构,使用户能够以类似真实公司的角色(如 CEO 和开发人员)来定义智能体。它提供了诸如可自定义的智能体角色、对提示和指令的完全控制、基于 Pydantic 的类型安全工具、通过通信流实现的智能体间消息传递、会话历史持久化回调,以及面向生产环境的可靠性设计等功能。该框架支持通过 pip 安装,需要 Python 3.12+ 和 OpenAI API 密钥,并提供了 Web UI、终端和编程调用等多种交互接口。
Agency Swarm 提供了一个框架,用于定义具有特定角色(如 CEO、开发人员)的智能体,并通过方向性通信流编排它们之间的交互。它提供 @function_tool 装饰器和 BaseTool 类来创建类型安全的工具,并支持从 OpenAPI 模式通过 ToolFactory 转换工具。智能体通过 send_message 工具进行通信,并由 Agency 对象管理通信流。该框架包括用于持久化对话历史的回调,并提供 copilot_demo() 和 tui() 方法用于交互式演示,以及异步 get_response() 方法用于编程调用。它构建在 OpenAI Agents SDK 之上,使用 Responses API,并支持通过 LiteLLM 使用其他模型提供商。
- 使用预定义角色(如 CEO 和开发人员)构建一个多智能体系统,用于处理软件开发任务。
- 创建一个虚拟助理智能体,负责客户沟通,并将任务委派给其他专业智能体。
- 使用公共 API 的 OpenAPI 规范自动生成工具,实现与外部服务的无缝集成。
- 通过保存和加载线程回调,在会话之间持久化对话状态,实现长期交互。
- 使用 Web UI(
copilot_demo)或终端界面(tui)演示和测试多智能体工作流。
这个 Agent 有哪些优点和局限?
- 实现了与 OpenAI Agents SDK 和 Responses API 的紧密集成。
- 通过 Pydantic 字段描述提供类型安全的工具,提升可靠性。
- 通过通信流提供明确的方向性智能体通信控制。
- 支持通过回调实现会话持久化,增强灵活性和可扩展性。
- 当前文档化的模型后端主要是 OpenAI,其他提供商需要额外配置。
- 需要 Python 3.12+,这可能会限制旧环境的使用。
- 主要依赖 OpenAI,为其他提供商提供适配需要额外付出努力。
- 引入了一个额外的框架层,增加了相对于使用原生 OpenAI SDK 的复杂度。
如何安装或部署这个 Agent?
使用 pip install -U agency-swarm 安装。需要 Python 3.12+ 和 OpenAI API 密钥(通过环境变量 OPENAI_API_KEY 或 .env 文件设置)。
如何使用这个 Agent?
- 在
.env文件中设置OPENAI_API_KEY。2. 使用@function_tool装饰器或BaseTool子类定义工具。3. 创建Agent实例,指定名称、描述、指令、工具和模型。4. 创建Agency,设置 CEO 作为入口点,并定义通信流(例如ceo > dev)。5. 通过agency.copilot_demo()、agency.tui()或异步await agency.get_response("...")运行。
常见问题
Agency Swarm 与直接使用 OpenAI Agents SDK 有何不同?
该框架是否能与 OpenAI 之外的模型一起使用?
会话历史可以持久化吗?
Agency 的 load_threads_callback 和 save_threads_callback 可以实现会话状态的持久化。