多智能体系统架构设计与代码级落地实现 原创
多智能体系统(Muti-Agents)是能够自己思考、计划、找出相关信息来源并从中提取信息、采取行动,甚至在出错时还能自我纠正的自动系统。
OpenAI 推出了Swarm 开源框架,用来以一种非常灵活的方式来管理和协调多智能体系统。
本文我们基于 OpenAI 推出的 Swarm 开源框架,来实现多智能体系统。内容包括:多智能体案例架构设计;多智能体案例代码级实现。
下文我们详细剖析之。
1、多智能体案例架构设计
今天,我们来做个实际的操作演示。我们要做一个网上研究助手多智能体应用,这个应用包括以下功能:
- 接收用户的查询请求。
- 在网上搜索相关信息。
- 然后把它变成一篇精心撰写的文章。
我们会用到:
- OpenAI Swarm 来协调多个智能体。
- Streamlit 来做用户界面。
网上研究助手多智能体应用架构设计如下:
如上图所示,我们有三个智能体:
智能体1 → 接收用户的查询并在网页上搜索。
智能体2 → 接收智能体1找到的网页结果,然后进行优化。
智能体3 → 一个技术写作智能体,它接收优化后的结果,起草一篇文章,然后发送回给用户。
2、多智能体案例代码实现
第一、准备工作
首先,我们从一些基础的导入开始:
我们使用 OpenAI 的 Swarm 来构建我们的多智能体应用。
我们用 duckduckgo_search 来在网上搜索。
接下来,我们定义大模型名称,并初始化 Swarm 客户端和搜索客户端:
第二、网络搜索智能体1 架构设计和代码实现
智能体1需要接收用户的查询,在网上搜索,然后返回原始的网页结果。
为了实现这个功能,我们首先编写一个函数,该函数接收查询并返回原始结果。
第7行:在网上搜索。
第9-16行:将所有网页结果(标题+网址+正文)收集到一个字符串中并返回。
接下来,我们定义一个网络搜索智能体,它将使用上述函数,我们还在下面为这个智能体指定了指令:
第1行:我们指定角色。
第6-11行:我们定义了一个来自 OpenAI Swarm 的 Agent 类的对象,指定上述函数、指令和 LLM(大语言模型)。
第三、网络过滤智能体2 架构设计和代码实现
智能体1 返回的结果可能会相当混乱,并且可能包含很多不相关的信息。我们需要另一个智能体来筛选出合适的信息。
和智能体1一样,我们再定义一个 Agent 类的另一个对象,并且传递指令:
第四、写作智能体3 架构设计和代码实现
最后,我们创建另一个智能体3,它接收上面筛选过的结果并起草一篇文章。
第五、多智能体架构和代码实现整合
虽然我们已经定义了上述三个智能体,但多智能体应用并不知道这些智能体应该按什么顺序运行,以及谁的输出应该传递给下一个智能体。
因此,我们需要在一个工作流程中把它们串联起来。
为了简单起见,我们一步一步来做。
首先,我们将用户查询传递给网络搜索智能体1,它生成原始响应:
接下来,我们将原始响应传递给网络过滤智能体2:
最后,我们将筛选后的结果传递给写作智能体3:
run_worwflow(query) 运行工作流程方法的完整代码如下:
执行运行工作流程方法会生成预期的输出,如下图所示:
当然,我们本文没有涉及 Streamlit 前端部分,完整的代码已放在 Github 上。
第六、多智能体应用案例完整代码获取地址:
https://github.com/patchy631/ai-engineering-hub/tree/main
本文转载自玄姐聊AGI 作者:玄姐
-
-
-
-
-
-
-
-
-
-
-
-
- 玄姐聊AGI 6分钟前 最后回复来自 • lindaye123
-
-
-
- 玄姐聊AGI 12分钟前 最后回复来自 • lindaye123
-
- 玄姐聊AGI 21分钟前 最后回复来自 • lindaye123
j56.cc 首冲一百送一百 真人足球体育 流水不限制