Swarm 是一个实验性的多智能体编排框架,Swarm 于2024年10月12日由OpenAI发布,旨在简化多智能体系统的构建、编排和管理。它的设计强调轻量级、可扩展性和高度可定制性。Swarm 完全在客户端运行,不保存调用间的状态,提供高度的透明度和细粒度的控制。它使用 Chat Completions API 提供支持,在调用之间是无状态的。
功能特色
- 轻量级和工效性:Swarm 的代码简洁,易于上手,适合处理大量独立功能和指令。
- 核心抽象概念:包括智能体(Agent)和交接(Handoff),允许智能体之间灵活地传递任务。
- 无状态运行:Swarm 依赖于 Chat Completions API,调用之间不保存状态。
- 高度可控:开发者可以完全控制上下文、步骤和工具调用。
架构组成
Swarm 的架构设计基于分布式系统的核心概念,主要包括管理节点(Manager Node)和工作节点(Worker Node):
- 管理节点:负责整个集群的管理和调度,维护集群的状态,包括节点的健康状态、服务的运行状态等。
- 工作节点:负责实际执行任务,接收管理节点的调度指令,启动、停止和管理容器。
智能体之间协作的关键机制
- 智能体(Agent):Swarm 中的智能体封装了指令和工具,能够独立执行任务或与其他智能体协作。智能体有能力将任务交接给另一个智能体,从而适应不同的场景和需求。
- 交接(Handoff):智能体在执行任务的过程中,可以根据需要将任务或对话交接给另一个智能体。这种机制使得智能体之间的协调变得无缝且灵活。
- 无状态设计:Swarm 完全由 Chat Completions API 提供支持,在调用之间不保存状态。这种设计减少了复杂性,并允许开发者完全控制智能体的上下文、步骤和工具调用。
- 易于测试和迭代:Swarm 提供了易于测试的环境,开发者可以快速迭代和优化智能体的行为。
- 核心组件:Swarm 的核心组件包括 client(客户端)、Agent(智能体)、Function(函数)。其中 client.run() 函数类似于 Chat Completions API 中的 chat.completions.create() 函数,接收消息并返回消息
项目地址
- Swarm 的 GitHub 项目地址是 https://github.com/openai/swarm 。
核心贡献者 Swarm 的核心贡献者均就职于 OpenAI,他们分别是(右侧为对应的 GitHub 用户名):
- Ilan Bigio – ibigio
- James Hills – jhills20
- Shyamal Anadkat – shyamal-anadkat
- Charu Jaiswal – charuj
- Colin Jarvis – colin-openai
如何使用
安装:通过 GitHub 安装 Swarm。
pip install git+ssh://[email protected]/openai/swarm.git
创建智能体:定义智能体及其功能。
from swarm import Swarm, Agent
client = Swarm()
agent_a = Agent(name="Agent A", instructions="You are a helpful agent.")
client.run(agent=agent_a, messages=[{"role": "user", "content": "Hello!"}])
使用示例:
# 导入 Swarm 类和 Agent 类
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),并传递用户消息
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?
在这个示例中,我们定义了两个智能体(Agent A 和 Agent B),每个智能体都有自己的指令集。Agent A 被设置为在接收到用户消息时,将任务交接给 Agent B。Agent B 被设置为只以俳句的形式回应。当我们运行这个流程时,用户的消息首先被 Agent A 接收,然后它通过定义的函数将任务交接给 Agent B,最后我们打印出 Agent B 以俳句形式给出的回应。
更多示例可以在 GitHub 上的 /examples
目录中探索
任务交接:智能体可以通过返回另一个智能体来交接任务。
适用场景
- 多功能客服系统:如航空公司客户服务请求处理。
- 个人助手:如个人购物助手,支持销售和退款。
- 复杂任务管理:适合需要多个智能体协作的复杂任务。
定价信息 目前,Swarm 是一个开源项目,尚未提供定价信息。它主要用于实验和研究目的。
总结 Swarm 通过其轻量级和高度可控的设计,为开发者提供了一种简化多智能体系统管理的工具,适用于多种复杂场景。虽然目前处于实验阶段,但其潜力巨大,适合对 AI 系统进行创新和优化的开发者使用。
© 版权声明
文章版权归作者MeoAI所有,未经允许请勿转载。
相关文章
暂无评论...