Swarm项目介绍
Swarm是一个用于探索多代理系统(Multi-Agent System)的人机交互(Ergonomic)接口的实验性教育框架。这个项目的主要目标是展示和研究多代理系统的协调和例行模式,它的设计初衷是教育用途,而非生产环境。因此,目前Swarm并不支持生产环境使用,也没有官方支持。
主要概述
Swarm的重点在于实现代理的协调和执行的轻量化、高可控性和易测试性。它通过两个基本抽象——Agent
(代理)和handoff(交接)来实现这一目标。一个代理包含instructions
(指令)和tools
(工具),并可以在任何时候将对话移交给另一个代理。这些抽象足够强大,可以表达工具和代理网络之间的多样化动态关系,这使得你可以构建可扩展的真实世界解决方案,同时避免陡峭的学习曲线。
值得注意的是,Swarm代理与Assistants API中的助手无关。Swarm完全依赖于Chat Completions API,并且在调用之间是无状态的。
为什么选择Swarm
Swarm所探索的模式设计成轻量化、可扩展且高度可定制。当需要处理大量独立的能力和指令,且难以在单一提示中编码时,类似Swarm的方法会更适合。虽然Assistants API非常适合需要完全托管线程和内置内存管理和检索的开发人员,但Swarm则更适合作为一个教育资源,供开发者学习多代理协调工作原理。Swarm几乎完全在客户端运行,并且像Chat Completions API一样,在调用之间不存储状态。
如何安装
Swarm需要Python 3.10及以上版本。你可以使用以下命令安装Swarm:
pip install git+ssh://git@github.com/openai/swarm.git
或者
pip install git+https://github.com/openai/swarm.git
使用方法
以下是一个简单的使用示例:
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 A
会根据其指令把对话交接到Agent B
,然后Agent B
用俳句(Haiku)的形式回应。最后输出会是一个类似这样的俳句:
希望光明闪耀,
新路径优雅汇聚,
我能帮什么忙?
示例和文档
运行Swarm
你可以通过实例化一个Swarm客户端来开始:
from swarm import Swarm
client = Swarm()
client.run()
Swarm的run()
函数类似于Chat Completions API的chat.completions.create()
函数——它接受messages
并返回messages
,且在调用之间不保存状态。它还能处理代理函数执行、交接、上下文变量引用,并在返回给用户前可以有多个回合的互动。
client.run()
的具体执行步骤如下:
- 获取当前代理的补全内容。
- 执行工具调用并追加结果。
- 必要时切换代理。
- 必要时更新上下文变量。
- 如果没有新的函数调用,则返回。
Agent(代理)
Agent
封装了一组指令和函数,具备将执行任务交接给其他代理的能力。代理可以用来表示一个特定的工作流程或步骤,这使得代理可以组合成一个网络,代表不同的工作流程和任务。