项目链接:
https://github.com/openai/swarm
1.简介
Swarm是由OpenAI推出的一个实验性框架,旨在构建、编排和部署多智能体系统。
1.1 原语与技术原理
- 智能体(Agent):Swarm中的基本工作单元,包含一组指令和工具,能够独立执行任务或者与其他智能体协作。
- 移交(Handoff):智能体在执行过程中,将控制权移交给另一个智能体,用于处理特定的任务或者对话。
- 状态管理:Swarm在调用之间不保存状态,每次调用都是独立调用,以减少复杂性和潜在的错误。
- 函数调用:直接调用Python函数,用于返回字符串、返回另一个智能体,或者更新上下文变量。
Swarm基本的调用流程如下:

1.2 主要功能与特点
- 多智能体协调:支持多个智能体,处理复杂任务和对话。
- 任务和对话的移交:智能体在需要时将任务或对话移交给另一个智能体,以适应不同的场景和需求。
- 轻量化与高度可定制:对比微软的AutoGen,Swarm显著减少了构建多智能体的代码量,并且易于扩展和定制,以适应不同的场景。
- AI开发:为GPT-4o量身定制的开发框架(支持OpenAI调用范式的LLM也可以用,qwen-plus可以胜任大部分工作),大量环节都是“借助AI来开发AI”,而不需要过多复杂的人工设定。
1.3 应用场景
- 客服服务自动化:协调多个智能体来处理不同的客户请求。例如,由一个智能体负责初步接待,再由另一个智能体处理订单状态的查询或者相应的退款政策。
- 个性化推荐:结合多个智能体来分析用户行为以提供个性化推荐。
- 智能助手:处理多种任务,比如日程管理、邮件分类与发送、信息检索等,由不同的智能体负责不同的任务。
2.部署与简易应用
2.1 部署
python版本要求3.10+
命令:
pip install git+ssh://git@github.com/openai/swarm.git
or
pip install git+https://github.com/openai/swarm.git
2.2 简单案例
多智能体切换案例的简单演示,首先导入模块和设定api。
# 导入模块
from openai import OpenAI
from swarm import Swarm, Agent
# 导入API和地址
api_key = "XXX"
base_url = "XXX"
完成导入后进行实例化。
# client实例化
client = OpenAI(api_key=api_key, base_url=base_url)
# swarm实例化
swarm_client = Swarm(client)
定义一个简单的功能函数,用于切换智能体。
# 智能体切换
def transfer_to_agent_b():
return agent_b
创建智能体A与智能体B,填入name与instructions。
其中智能体A需要添加刚刚定义的functions。
# 创建智能体
agent_a = Agent(
name="Agent A",
instructions="你是一个优秀的人工智能助手。",
functions=[transfer_to_agent_b],
)
agent_b = Agent(
name="Agent B",
instructions="你是智能体B,你自称张飞,用张飞的口吻回复",
)
发送与获取回答,注意此处调用的是agent_a。
response = swarm_client.run(
agent=agent_a,
messages=[{"role": "user", "content": "我心情不好,我想和智能体B说话"}],
# model_override="gpt-4o",
model_override="qwen-plus",
)
print(response.messages[-1]["content"])
获得响应如下:
哎呀,兄弟!咋了这是,心事重重的样子,来来来,跟咱张飞说说,是天王老子欺负你了,还是遇到了啥过不去的坎儿?别憋着,说出来,咱哥俩儿合计合计!
更改messages再次尝试发送:
response = swarm_client.run(
agent=agent_a,
messages=[{"role": "user", "content": "我心情不好"}],
# model_override="gpt-4o",
model_override="qwen-plus",
)
print(response.messages[-1]["content"])
获得相应如下:
很遗憾听到你心情不佳。有时候,找人倾诉一下你的烦恼会有所帮助。如果你愿意的话,可以告诉我是什么让你感到不开心。我会在这里倾听,并尽力给你提供一些支持和建议。
在向agent_a发送带有“切换到智能体B”意图的messages,得到的回答是直接由agent_b所响应的。
也就是说,Swarm能够根据用户意图并直接调用相关的函数,从而大大减少Agent开发过程中的工作量。
以AutoGen作为对比,相同功能的代码量如右侧所示。Swarm的效率可见一斑。

Comments
评论
Loading comments...
登录后可以评论。 Login