OpenAI最新开源突破:Swarm框架新手指南 — 开启多智能体系统新篇章

AI快讯3个月前更新 MeoAI
469 0

Swarm 是一个实验性的多智能体编排框架,Swarm 于2024年10月12日由OpenAI发布,旨在简化多智能体系统的构建、编排和管理。它的设计强调轻量级、可扩展性和高度可定制性。Swarm 完全在客户端运行,不保存调用间的状态,提供高度的透明度和细粒度的控制。它使用 Chat Completions API 提供支持,在调用之间是无状态的。

OpenAI最新开源突破:Swarm框架新手指南 — 开启多智能体系统新篇章

功能特色

  • 轻量级和工效性:Swarm 的代码简洁,易于上手,适合处理大量独立功能和指令。
  • 核心抽象概念:包括智能体(Agent)和交接(Handoff),允许智能体之间灵活地传递任务。
  • 无状态运行:Swarm 依赖于 Chat Completions API,调用之间不保存状态。
  • 高度可控:开发者可以完全控制上下文、步骤和工具调用。

架构组成

Swarm 的架构设计基于分布式系统的核心概念,主要包括管理节点(Manager Node)和工作节点(Worker Node):

  • 管理节点:负责整个集群的管理和调度,维护集群的状态,包括节点的健康状态、服务的运行状态等。
  • 工作节点:负责实际执行任务,接收管理节点的调度指令,启动、停止和管理容器。

智能体之间协作的关键机制

  1. 智能体(Agent):Swarm 中的智能体封装了指令和工具,能够独立执行任务或与其他智能体协作。智能体有能力将任务交接给另一个智能体,从而适应不同的场景和需求。
  2. 交接(Handoff):智能体在执行任务的过程中,可以根据需要将任务或对话交接给另一个智能体。这种机制使得智能体之间的协调变得无缝且灵活。
  3. 无状态设计:Swarm 完全由 Chat Completions API 提供支持,在调用之间不保存状态。这种设计减少了复杂性,并允许开发者完全控制智能体的上下文、步骤和工具调用。
  4. 易于测试和迭代:Swarm 提供了易于测试的环境,开发者可以快速迭代和优化智能体的行为。
  5. 核心组件:Swarm 的核心组件包括 client(客户端)、Agent(智能体)、Function(函数)。其中 client.run() 函数类似于 Chat Completions API 中的 chat.completions.create() 函数,接收消息并返回消息

项目地址

核心贡献者 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 系统进行创新和优化的开发者使用。

© 版权声明

相关文章

暂无评论

Avatar photo
暂无评论...