就在昨天,OpenAI开源了一个多智能体编排框架Swarm项目,上线几小时便获得2.8k Star。我马上就拉下来跑了一下,看看有没有别人说的那么厉害。跑完发现,虽然没有太多新东西,但还是有挺多亮点的。
我们先来简单了解一下 Swarm。
Swarm 是一个专注于使代理协调和执行轻量级、高度可控且易于测试的多智能体编排框架。
由于OpenAI官方也说到这是一个实验性质的,而非用于生产的项目,所以Swarm是一个轻量级多代理编排框架,主打特征是工效(ergonomic)与轻量(lightweight)。
Swarm 目前是一个实验性的示例框架,旨在探索多智能体系统的人体工程学接口。它不适用于生产环境,因此没有官方支持。(这也意味着我们不会审查拉取请求或问题!)
Swarm 的主要目标是展示在"编排智能体:交接与例程"指南中探讨的交接和例程模式。它并不是一个独立的库,主要用于教育目的。
——来自OpenAI的官方声明
跑完之后,我觉得相比目前市面上LangGraph,CrewAI等多智能体框架上手较为简单,与调用OpenAI官方的Chat Completions API非常相似。当前的 Swarm 版本更多像是一套从零到一搭建基础Agent框架的教学示例,没有特别多新意,当然它也有许多亮点。
亮点1:Swarm 的完全透明性
首先是 Swarm 的完全透明性,它可以对上下文、步骤和工具调用进行完全透明的打印,非常适合在Agent执行过程中想知道其中每一步发生了什么的开发人员。
亮点2:Swarm 的handoffs 机制
其次是它的handoffs 机制(对话交接):允许让对话在Agent之间转移执行,在任何时间都可以选择将对话交接给另一个智能体。也就是说我和AgentA说:“我想和Agent B对话”,接下来的对话Agent A 便会把对话交给AgentB进行。
为了更直观的感受这个对话交接机制,接下来我将从零到一部署Swarm框架并进行简单的示例演示。并通过解析源代码详细的了解这背后的运行机制。
项目地址:https://github.com/openai/swarm/
首先根据官网指示,安装Swarm的环境依赖包:
•
pip install git+ssh://[email protected]/openai/swarm.git
下载完后我们就可以运行以下这段代码:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
from swarm import Swarm, Agentclient = Swarm()def transfer_to_agent_b(): return agent_bagent_a = Agent( name="Agent A", instructions="你是一个有用的助手", functions=[transfer_to_agent_b],)agent_b = Agent( name="Agent B", instructions="仅仅使用繁体字说话",)response = client.run( agent=agent_a, messages=[{"role": "user", "content": "我想和Agent B说话"}],)print("User和AgentA说: 我想和Agent B说话。")print("Agent:",response.messages[-1]["content"])
可以从以上代码中看到 client.run 执行的智能体是agent_a,编写一个返回 agent_b 的函数作为Agent_a 的函数调用。其中为了更好的区分开一会是 agent_a回复还是 agent_b 回复,我们让 agent_a 用简体中文,让 agent_b 用繁体字进行输出。点击运行执行这段代码后便输出以