OpenAI Swarm 是一个由 OpenAI Solutions 团队开发的实验性框架,专门用于构建、编排和部署 多智能体系统(multi-agent systems)。它旨在为开发人员提供一个轻量、可控且易于测试的工具集,帮助他们设计和管理多个相互协作的AI代理(Agent),并让多个智能体协同工作,以便处理复杂的任务和工作流。
这个框架使用 Python 编写,依赖 OpenAI 的 Chat Completions API 进行对话管理和执行。
Swarm是什么?
Swarm可以看作是一个“多智能体协作平台”。每个智能体(Agent)就像是一个AI机器人,它有特定的任务和能力,可以执行特定的操作。Swarm 帮助这些智能体相互配合完成复杂的任务。
例如,假设你在开发一个客服系统。这个系统可以有多个AI智能体,每个智能体负责不同的任务:
- 智能体A:负责接待客户,了解他们的问题。
- 智能体B:专门处理与产品退货相关的请求。
- 智能体C:处理技术支持问题。
Swarm 允许这些智能体协作。如果智能体A听到客户说“我想退货”,它可以将这个任务转交给智能体B;如果听到技术问题,它可以转交给智能体C。这种协作让AI系统更加灵活、智能。
Swarm 的核心概念
Swarm 框架通过以下两个核心概念来实现多智能体的协调与执行:
- 智能体(Agent):每个智能体都有自己的指令和工具,并在必要时将任务交给另一个智能体。每个智能体都能执行一组预定的函数,并根据具体情况切换任务执行者。你可以把智能体看作是一个任务的执行者或工作流的特定步骤。
- 交接(Handoffs):当一个智能体完成任务后,它可以将控制权交给另一个智能体,继续执行接下来的任务。这种交接机制使得复杂的多步骤流程能够轻松实现和管理。
主要功能
- 智能体之间的交接:
- 每个智能体都可以根据任务需求,将当前任务交给更合适的智能体处理。这种任务的“接力”机制让复杂任务可以拆分成多个步骤,由不同智能体完成。
- 自定义智能体行为:
- 开发人员可以为每个智能体定义不同的功能和指令。例如,智能体A可以有“问候”和“转交任务”这两个功能,而智能体B则专注于处理特定问题。智能体可以通过预设的函数处理任务。
- 无状态设计:
- Swarm是无状态的,这意味着每次调用都是独立的,不需要保存任务历史。这样可以保证任务执行的灵活性,尤其适合分布式系统和大规模任务。
- 函数调用和执行:
- 每个智能体不仅能处理文本对话,还可以调用自定义的函数,执行特定任务。比如,一个智能体可以调用一个函数来检查产品库存,然后根据结果做出相应的决策。
Swarm 使用示例
Swarm 的基本用法包括创建多个智能体,并通过它们之间的交接来完成复杂任务。以下是一个简单的示例,展示了如何在 Swarm 中创建智能体,
并让它们完成任务:
from swarm import Swarm, Agent
# 创建 Swarm 客户端
client = Swarm()
# 定义一个函数,用于将任务交给 agent_b
def transfer_to_agent_b():
return agent_b
# 创建第一个智能体 agent_a
agent_a = Agent(
name="Agent A",
instructions="You are a helpful agent.",
functions=[transfer_to_agent_b], # 定义它可以调用的函数
)
# 创建第二个智能体 agent_b
agent_b = Agent(
name="Agent B",
instructions="Only speak in Haikus.", # 定义它的行为是只使用俳句交流
)
# 运行 Swarm,让 agent_a 处理任务,并交给 agent_b
response = client.run(
agent=agent_a,
messages=[{"role": "user", "content": "I want to talk to agent B."}],
)
# 输出 agent_b 的回复
print(response.messages[-1]["content"])
在这个例子中,
agent_a
是一个友好的智能体,负责接收用户请求。当用户想与 agent_b
对话时,agent_a
调用函数 transfer_to_agent_b
,将任务交给只会用俳句说话的 agent_b
,并输出它的回答。
Swarm 的适用场景
Swarm 适用于那些需要多个步骤或多个任务协同完成的复杂工作场景,尤其是在以下情况下非常有用:
- 多步骤任务处理:如果一个任务需要多个步骤来完成,且每个步骤都有不同的指令或操作方式,那么 Swarm 可以帮助开发人员通过不同的智能体来处理各个步骤,并确保步骤之间的无缝交接。
- 多个智能体协同工作:当任务复杂度较高,且不同智能体需要处理不同的子任务时,Swarm 提供了很好的智能体协作方式,允许智能体在合适的时机接管任务。
- 可扩展的工作流管理:Swarm 允许开发人员根据需要扩展或定制每个智能体的行为和能力,轻松应对大规模的 AI 工作流需求。
框架的可扩展性和灵活性
Swarm 的设计充分考虑了灵活性和可扩展性。开发人员可以根据任务需要创建多个智能体,并定义它们的具体行为。Swarm 还支持函数调用,智能体可以调用 Python 函数来处理具体任务,也可以在任务完成后交接给另一个智能体。
GitHub:https://github.com/openai/swarm
案例:https://github.com/openai/swarm/tree/main/examples
教程:https://cookbook.openai.com/examples/orchestrating_agents