多智能体(Multi-Agent)是由多个自主、独立的智能体(Agent)组成的系统。每个智能体能够感知环境、进行决策并执行任务,它们之间可以进行信息共享、任务协调以及协同行动,以实现整体目标。
随着大型语言模型(LLM)的出现,以 LLM 为核心构建的 Agent 系统近期受到广泛关注。在单 Agent 场景下,其核心在于 LLM 与工具的协同配合,可能需要与用户进行多轮交互。而在多 Agent 场景中,会为不同的 Agent 指定不同角色,并通过协作完成复杂任务,与用户的交互可能相对减少。
构建多 Agent 框架的主要组成部分包括:
在实际应用中,如《执笔者》基于多 Agent 模式的全能写手,操作步骤包括:
在 Agent 产品开发中,不要过于神话 Agent。其本质是动态 Prompt 拼接,通过工程化手段将业务需求转述为新的 prompt。包括短期记忆(messages 里的历史 QA 对)、长期记忆(summary 之后的文本塞回 system prompt)、RAG(向量相似性检索)、Action(触发 tool_calls 标记进行请求循环)等。Multi Agents 则是更换 system prompt 和 tools。当然,要做深做好还有很多坑需要踩。
多智能体(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数量增多,导致消息数量增多。同时,每条消息可能需要记录发送方、接收方等字段。
1.多agent模式切换在bot编排页面点选多agent模式,页面将会自动切换为多agent调式状态,相比单agent,主要是多了中间一块的agent连接区。切换多agent后的默认页面1.添加合适节点节点这里有两种方式可以选择,用已发布的bot,或者创建一个新的agent,大家按需选取。添加的agent直接连接在默认的总管agent(“执笔者”)后面即可,无结束节点。1.添加合适的prompt在多agent模式下,我们需要为每个agent填写合适的prompt。外围的人设填写该bot的主要功能,内部的bot填写各个bot/agent的应用场景。1.调试与美化经过以上简单三步,一个多agent的bot就基本搭建完成,接下来就是漫长的调试过程,如果输出与自己设想有差异,可以不断调整外围和内部bot的提示词,提升命中率,优化交互。
其实只要看过官方文档的应该都能知道,大模型请求中,最大的两个变量:Messages和Tools。Messages里面放的是sys prompt,memory,user query;Tools里面放的是一些能力的Json Scheme;而这两者组合在一起,就形成整个完全的Prompt。所以Agent应用开发的本质是什么?动态Prompt拼接。通过工程化的手段,不断把业务需求转述成新的prompt。短期记忆:messages里的历史QA对;长期记忆:summary之后的本文,再塞回system prompt;RAG是啥?向量相似性检索,然后放在system prompt里或者通过tools触发检索Action:触发tool_calls标记,进入请求循环,拿模型生成的请求参数进行API request,再把结果返回给大模型进行交互;没有tool_calls标记了,循环结束。对应页面上就是对话一轮对话结束。Multi Agents是啥?把system prompt和tools换一换,A就变成B了。还有啥?没了呀,本质就是这些东西。当然,这也就是最基本的原理,想做深,做好,肯定还有很多坑需要踩。