多智能体(Multi-Agent)是由多个自主、独立的智能体(Agent)组成的系统。每个智能体都能感知环境、决策并执行任务,且它们之间能信息共享、任务协调与协同行动以实现整体目标。
随着大型语言模型(LLM)的出现,以 LLM 为核心构建的 Agent 系统受广泛关注。目前常见框架集中在单 Agent 场景,其核心是 LLM 与工具协同配合,可能需与用户多轮交互。而多 Agent 场景为不同 Agent 分配角色,通过协作完成复杂任务,与用户交互可能减少。
构建多 Agent 框架主要组成部分包括:
此外,吴恩达最新演讲提到四种 Agent 设计范式,Reflection 和 Tool Use 相对经典且广泛使用,Planning 和 Multi-agent 较新颖有前景。Reflection 类似于 AI 自我纠错和迭代,如让 AI 写代码并自我检查修改。Tool Use 指大语言模型调用插件拓展能力。在一些场景中,Reflection 可用两个 Agent,一个写代码,一个 Debug。
其实只要看过官方文档的应该都能知道,大模型请求中,最大的两个变量: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了。还有啥?没了呀,本质就是这些东西。当然,这也就是最基本的原理,想做深,做好,肯定还有很多坑需要踩。
多智能体(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数量增多,导致消息数量增多。同时,每条消息可能需要记录发送方、接收方等字段。
我们的研究结果表明,如果你使用GPT3.5+Zero-shot的正确率为48%,GPT4+Zero-shot的正确率为67%,但是,如果你用GPT3.5+Agentic Workflow,你会得到超越GPT4的效果!因此,Agent在构建AI应用时非常重要。(然后就到了主题)尽管很多学者、专家谈论了很多关于Agent的东西,但我今天想更具体的分享我在Agent中看到比较广泛的四种设计模式(尽管很多团队,开源项目等做了很多种多样的尝试,但我还是按我的理解划分成了四类)。Reflection和Tool Use属于比较经典且相对已经广泛使用的方式,Planning和Multi-agent属于比较新颖比较有前景的方式。第一个讲的就是Reflection(反思,类似于AI的自我纠错和迭代),举个栗子,我们让用Reflection构建好的一个AI系统写个xxx代码,然后AI会把这个代码,加上类似“检查此段代码的正确性,告诉我如何修改”的话术,再返回给AI,AI可能会给你提出其中的Bug,然后如此反复,AI自己完成了自我迭代,虽然修改后的代码质量不一定能保证,但基本上来说效果会更好。(每页PPT下方,吴恩达大佬都推荐了一些相关论文,可以去看看)如上表述的是案例是Single-agent(区别于Mutli-agent的单智能体),但其实你也可以用两个Agent,一个写代码,然后另一个来Debug👇这两个Agent可以用相同的LLM,也可以用不同的,这种Reflection的方式在很多场景都适用。接下来第二个是Tool Use(如果你经常玩GPT4或者国产的一些AI对话产品,那就不陌生了),大语言模型调用插件,极大的拓展了LLM的边界能力。