多智能体是由多个自主、独立的智能体组成的系统,每个智能体都能感知环境、决策并执行任务,且相互间能信息共享、任务协调与协同行动以实现整体目标。
随着大型语言模型的出现,以其为核心构建的 Agent 系统受广泛关注。单 Agent 核心在于语言模型与工具的协同配合,可能需与用户多轮交互。而多 Agent 为不同 Agent 分配角色并通过协作完成复杂任务,与用户交互可能减少。
构建多 Agent 框架的主要组成部分包括:
创建智能体时,输入人设等信息并配置工作流,配置完成后可测试,但注意工作流中某些插件的 api_token 不能直接发布,可作为输入让用户购买后输入使用再发布。
OpenAI 官方开源的多智能体框架「Swarm」受欢迎,其在多智能体通信方面表现出色,解决了不同智能体之间传递信息及传递哪些信息等核心难题。例如构建客服多智能体,只需准备普通接线客服和宽带客服两个 Agent,「Swarm」的「Handoffs」处理了交接逻辑。
多智能体(Multi-Agent)是由多个自主、独立的智能体(Agent)组成的系统。在这个系统中,每个智能体都能够感知环境、进行决策并执行任务,同时它们之间可以进行信息共享、任务协调以及协同行动,以实现整体的目标。[heading2]关于Multi-Agent[content]随着大型语言模型(LLM)的出现,以LLM为核心构建的Agent系统近期受到了广泛关注。Agent系统旨在利用LLM的归纳推理能力,为不同的Agent分配角色和任务信息,并配备相应的工具插件,以完成复杂的任务。目前,更常见的框架主要集中在单Agent场景下。单Agent的核心在于LLM与工具的协同配合。LLM根据用户任务的理解,推理出需要调用的工具,并根据调用结果向用户提供反馈。在任务完成过程中,Agent可能需要与用户进行多轮交互。与此同时,越来越多的Agent框架开始关注多Agent场景。为了完成任务,多Agent会为不同的Agent指定不同的角色,并通过Agent之间的协作来完成复杂的任务。与单Agent相比,在任务完成过程中,与用户的交互可能会减少一些。[heading2]主要组成部分[content]为构建一个多Agent框架,我们需要思考相对于单Agent,框架中增加了哪些组件。环境(environment):所有Agent应该处于同一个环境中。环境中包含全局状态信息,Agent与环境之间存在信息的交互与更新。阶段(stage):为了完成复杂任务,现有多Agent框架通常采用SOP思想,将复杂任务分解为多个子任务。控制器(controller):控制器可以是LLM,也可以是预先定义好的规则。它主要负责环境在不同Agent和阶段之间的切换。记忆:在单Agent中,记忆只包括用户、LLM回应和工具调用结果等部分。而在多Agent框架中,由于Agent数量增多,导致消息数量增多。同时,每条消息可能需要记录发送方、接收方等字段。
创建一个智能体,输入人设等信息,放上刚才创建的2个工作流。配置完成后,就可以测试了~[heading1]千万不要直接发布!!![content]工作流2中【所有视频片段拼接】节点使用的插件api_token填的是你的token,其他人调用这个工作流会直接消耗你的money,所以不能直接发布。你可以将api_token作为工作流2最开始的输入,用户自己购买后,输入api_token就可以使用,然后再发布。看到这里,说明你离做出来就差一步行动了,期待看到你的成果!我是五津:C端新闻、视频产品经理,2025 AI春晚节目统筹&共创者,我的微信是:wdwxhs0100,欢迎来聊~我的公众号是【宝藏智能体club】
脚趾头:因为是OpenAI出的。(君不见现在大多数大模型都在遵循OpenAI的接口规范...他们对自己做的东西更了解)脑门:其实单Agent这块,没有啥花里胡哨的东西,简单业务,OpenAI就一个/api/completions接口。但是「Handoffs」这块,Swarm的确做的非常优雅。(这里不得不给自己吹个牛,年初我就写了Swarm类似的多智能体了。)多智能体的核心难题其实是不同智能体之间的通信问题。怎麼传递,传哪些信息,这些都很重要。其实之前很多多智能体开源框架,走的都是Room/Group的思路,就是把各个智能体都扔到一个大空间里,然后每个智能体都接收信息,每个智能体都存储信息。不说效率低下,光token的消耗都扛不住。实际上,多智能体,也只要在必要的时候被call起就可以,回到我们上文10086客服的例子。当接线小姐姐识别到这是个宽带问题需要转接的时候,她需要做2个事情:1.找到宽带部门的小姐姐,把会话权限交接过去;2.把记录「Messages」和我的问题「Query」交接过去(实际上会自动记录,共享查阅)那如果我们需要构建这样的一个客服多智能体,是不是只需要准备两个Agent:一个普通接线客服,一个宽带客服。Swarm的「Handoffs」处理了交接的逻辑。下面我用官方的例子魔改一下客服例子,方便大家理解。执行这段代码,打印出来的对话记录就可能会是是不是就变得非常清晰了?总得来说就是: