LLM Agents调研
- 1、从 Copilot 到 Agent
- 2、Agent概述
- 3、agent框架
- 2.1 框架介绍
- 2.2框架对比
- 4、应用场景
- 3.1single-agent应用
- 3.2multi-agent 应用
- 5、agent功能选型
- 参考:
1、从 Copilot 到 Agent
参考:https://mp.weixin.qq.com/s/vVUO-WRkp8FS3wKcfgu45w
这里,我们对 Copilot 和 Agent 做一个对比,进一步加深对 Agent 的认识。LLM 产品的应用范式,目前主要有 Copilot 和 Agent 两种。Copilot 是「副驾驶」、「助手」,在解决任务的时候更多的是起辅助作用,需要用户进行引导和干预。而 Agent 则更像是一个初级的「主驾驶」、「智能体」,可以根据任务目标进行自主思考和行动,具有更强的独立性和执行复杂任务的能力。下面,我们从核心功能、流程决策、应用范围和开发重点几个方面对比 Copilot 和 Agent:
- 核心功能
Copilot:更像是一个辅助驾驶员,更多地依赖于人类的指导和提示来完成任务。Copilot 在处理任务时,通常是在人为设定的范围内操作,比如基于特定的提示生成答案。它的功能很大程度上局限于在给定框架内工作。
Agent:像一个初级的主驾驶,具有更高的自主性和决策能力。能够根据目标自主规划整个处理流程,并根据外部反馈进行自我迭代和调整。 - 流程决策
Copilot:在处理流程方面,Copilot 往往依赖于 Human 确定的流程,这个流程是静态的。它的参与更多是在局部环节,而不是整个流程的设计和执行。
Agent:Agent 解决问题的流程是由 AI 自主确定的,这个流程是动态的。它不仅可以自行规划任务的各个步骤,还能够根据执行过程中的反馈动态调整流程。 - 应用范围
Copilot:主要用于处理一些简单的、特定的任务,更多是作为一个工具或者助手存在,需要人类的引导和监督。
Agent:能够处理复杂的、大型的任务,并在 LLM 薄弱的阶段使用工具或者 API 等进行增强。 - 开发重点
Copilot:主要依赖于 LLM 的性能,Copilot 的开发重点在于 Prompt Engineering。
Agent:同样依赖于 LLM 的性能,但 Agent 的开发重点在于 Flow Engineering,也就是在假定 LLM 足够强大的基础上,把外围的流程和框架系统化,坐等一个强劲的 LLM 核心。
总的来说,从 Copilot 到 Agent 的转变意味着从一个辅助角色到一个更主动角色的转变。Agent 相比于 Copilot,表现出更高的自主性、智能程度和处理复杂任务的能力。Copilot 更多是作为一个高级助手,而 Agent 才是真正的 AI Native 的应用范式。比如,现在的 AI 编程,github copilot 可以帮我们写函数、自动代码补全等,但它还不是一个真正自主决策的 Agent,比如根据给定的需求然后创建整个项目工程、编写测试用例等。
2、Agent概述
参考:https://lilianweng.github.io/posts/2023-06-23-agent/
在 LLM 支持的自主代理系统中,LLM 充当代理的大脑,并由几个关键组件进行补充:
-
规划(planning)
子目标和分解:代理将大型任务分解为更小的、可管理的子目标,从而能够有效处理复杂的任务。
反思和完善:智能体可以对过去的行为进行自我批评和自我反思,从错误中吸取教训,并针对未来的步骤进行完善,从而提高最终结果的质量。 -
记忆(Memory)
短期记忆:我认为所有的上下文学习(参见提示工程)都是利用模型的短期记忆来学习。
长期记忆:这为代理提供了长时间保留和回忆(无限)信息的能力,通常是通过利用外部向量存储和快速检索。 -
工具使用(tool use)
代理学习调用外部 API 来获取模型权重中缺失的额外信息(通常在预训练后很难更改),包括当前信息、代码执行能力、对专有信息源的访问等。
3、agent框架
https://blog.csdn.net/qq_27590277/article/details/135834392
https://zhuanlan.zhihu.com/p/665644399
多智能体强化学习(Multi-Agent Reinforcement Learning,MARL)是强化学习的一个分支,它研究的是在一个环境中有多个智能体(agent)同时学习和决策的情境。在这种情境下,每个智能体都在尝试最大化其自身的回报,但它们的行为可能会影响到其他智能体和整个系统的表现。
目前更常见的框架大多聚焦于single-agent的场景。single-agent的核心在于LLM与工具的配合。LLM通过理解用户的任务,推理出需要调用的工具,并基于调用结果给用户反馈。在完成任务的过程中,Agent可能与用户有多轮交互。
与此同时,也有越来越多的Agent框架开始聚焦于multi-agent场景。为了完成任务,multi-agent会为不同的Agent赋予不同的角色定位,通过Agent之间的协同合作来完成复杂的任务。而在完成任务的过程中,相比于single-agent来说,与用户的交互会更少一些。
3.1 单Agent 系统
基于大模型的常见单Agent 系统包括:
AutoGPT:AutoGPT是一个AI代理的开源实现,它试图自动实现一个给定的目标。它遵循单Agent范式,使用了许多有用的工具来增强AI模型,并且不支持Multi-Agent协作。
ChatGPT+ (code interpreter or plugin) :ChatGPT是一种会话AI Agent,现在可以与code interpreter或插件一起使用。code interpreter使ChatGPT能够执行代码,而插件通过管理工具增强了ChatGPT。
LangChain Agent:LangChain是开发基于LLM应用的通用框架。LangChain有各种类型的代理,ReAct Agent是其中一个著名的示例。LangChain所有代理都遵循单Agent范式,并不是天生为交流和协作模式而设计的。
Transformers Agent:Transformers Agent 是一个建立在Transformer存储库上的实验性自然语言API。它包括一组经过策划的工具和一个用来解释自然语言和使用这些工具的Agent。与 AutoGPT类似,它遵循单Agent范式,不支持Agent间的协作。
3.2 Multi-Agent 系统
基于大模型的常见Multi-Agent 系统包括:
BabyAGI:BabyAGI 是一个用Python脚本实现的人工智能任务管理系统的示例。在这个已实现的系统中,使用了多个基于LLM的代理。例如,有一个Agent用于基于上一个任务的目标和结果创建新任务,有一个Agent用于确定任务列表的优先级,还有一个用于完成任务/子任务的Agent。BabyAGI作为一个Multi-Agent系统,采用静态Agent对话模式,一个预定义的Agent通信顺序。
CAMEL:CAMEL 是一个agent 通信框架。它演示了如何使用角色扮演来让聊天Agent相互通信以完成任务。它还记录了Agent的对话, 以进行行为分析和能力理解,并采用初始提 示技术来实现代理之间的自主合作。但是,CAMEL本身不支持工具的使用,比如代码执行。虽然它被提议作为多代理会话的基础设施,但它只支持静态会话模式。
Multi-Agent Debate:Multi-Agent Debate试图构建具有多代理对话的LLM应用程序,是鼓励LLM中发散思维的有效方式,并改善了LLM的事实性和推理。在这两种工作中 ,多个LLM推理实例被构建为多个Agent来解决与Agent争论的问题。每个Agent都是一个LLM推理实例,而不涉及任何工具或人员,并且Agent间的对话需要遵循预定义的顺序。
MetaGPT:MetaGPT 是一种基于Multi-Agent对话框架的LLM自动软件开发应用程序。他们为各种gpt分配不同的角色来协作开发软件,针对特定场景制定专门的解决方案。
一般地,Multi-Agent由一系列相互作用的Agent及其相应的组织规则和信息交互协议构成,内部的各个Agent之间通过相互通信、合作、竞争等方式,完成单个Agent不能完成的,大量而又复杂的工作,是“系统的系统”。
2.1 Multi-Agent 的系统分类和特点,Multi-Agent 系统(MAS) 主要可以分成以下类别:
2.1 框架介绍
agent框架分为单一agent、多agents 框架两种:
-
单一 agent 框架
Agent刚开始出现的时候,代表性的是AutoGPT, BabyAGI(主张一个agent来调用工具来解决复杂的任务),代表方法是ReACT,总体上强调的是Agent使用工具的能力。社区为了促进LLM应用生态的开发,已经创建了一些框架,为开发agents提供了便利。比如 LangChain、LLamaIndex 和 Haystack。这些框架提供了一个通用的agent类、连接器和记忆模块的一些特性、以及能够使用第三方服务的工具、数据检索和摄取机制。single-agent典型的有:AutoGPT、BabyAGI、斯坦福的 AI 小镇、HyperWrite、HuggingGPT 和 GPTs 等。(参考:https://mp.weixin.qq.com/s/vVUO-WRkp8FS3wKcfgu45w) -
多agents 框架
后面出现了Multi-Agent(这个概念应该是借鉴的强化学习里面的Multi-agent),侧重角色扮演(通过写prompt给Agent赋予一个角色,并规范一些行为),和Agents之间的协作,竞争等策略来完成一项复杂的任务,我觉得除了从底层支持和改进多Agents协作的能力外,还需要建设Agent自动化调度(广播机制,订阅发布者机制),Multi-Agent通信协议,动态数量的Agents协作等,有了这些基础设施,就可以在原有的Agent基础上完成更高阶的任务。很直接的解释,Multi-Agent像是一个团队,团队里面的Agent更像是不同的工种,通过不同的Agent之间的分工协作(有的做规划,有的执行,执行的时候可以调用工具,也可以利用LLM本身的代码,总结能力等),完成一些比较复杂的任务。 multi-agent典型的有:
MetaGPT、AutoGen、AutoAgents、XAgent、crewAI、ChatLLM等。
参考:https://www.tangshuang.net/8848.html
Single Agent是当前大模型市场上的重要应用形式,openAI发布的GPTs就是此类应用的市场。但单智能体应用往往是以某个非常明确的目标为设计的,以LangChain为例,在LangChain中,我们把大模型比做大脑,以为各个部件提供执行指令,通过Chain来调用工具执行,最终实现一个单一目标。但是在LangChain中,我们只有LLM和ChatModel两个概念。这类应用只有一个大脑,指挥所有器官,这使得所有的理解、决策、反馈全都由一个大脑完成,所有的任务由一个人完成。我们会发现,Single Agent在开发时,智能完成特定目标任务,因此在大规模应用中总是会力不从心。
而Multi-Agent则是为实现一个目标的系统创建多个角色,让多个AI智能体像一个Team一样分角色完成不同任务。之所以这样设计,一方面是不同的智能体强项不同,另一方面是从技术上看,一个智能体专注做一件事实现成本更低,且效率和准度可能更高,在最后系统部署上,也可以做到像微服务那样方便部署和复用。当然,更重要的是,随着市场的不断演化,未来我们既可以发布单智能体,也可以发布多智能体系统,这样可以让不同的开发者在不同层面都可以有自己的创造,且形成良好的生态。
2.2框架对比
-
multi-agent的主要组件
为了构建一个multi-agent框架,我们需要思考相比于single-agent,框架中多了哪些组件。
environment:所有的agent应该处于同一个环境中。环境中包含了全局的状态信息,agent与环境之间存在信息的交互与更新。
stage:要完成一个复杂的任务,现有multi-agent框架往往采用SOP的思想,把复杂的任务分解成若干个子任务。对应到软件公司这个场景,"编写2048游戏"这个任务可以被分解为:编写prd,设计框架、写code,code review等子任务。
controller:controller可以是LLM,也可以是预先定义好的规则。它主要负责环境在不同agent和stage之间的切换。
memory:在single-agent中,记忆只包括了用户、LLM回应和工具调用结果这几个部分。而在multi-agent框架中,一方面由于agent数量的增多使得消息数量增多,另一方面,在每条消息中可能还需要对发送方、接收方等字段进行记录。 -
multi-agent的核心流程
multi-agent框架的核心交互流程可以概括如下:
controller更新当前环境的状态,选择下一时刻行动的agentA。
agentA t与环境交互,更新自身的memory信息。
agentA调用LLM,基于指令执行动作,获取输出message。
将输出message更新到公共环境中。
4、应用场景
目前,LLM Agent已经在多个领域得到了广泛的应用。例如,在智能客服领域,LLM Agent可以自动回答用户的问题并提供个性化的服务;在智能助手领域,LLM Agent可以帮助用户管理日程、提醒事项等;在智能写作领域,LLM Agent可以自动生成文章、新闻等文本内容。此外,在智能推荐、智能问答等领域也都有着广泛的应用前景。
随着技术的不断进步和应用场景的不断拓展,LLM Agent的未来发展前景十分广阔。未来,LLM Agent可能会呈现出以下几个发展趋势:
智能化程度更高:随着大型语言模型技术的不断发展和优化,LLM Agent的智能化程度将会更高。它们将能够更好地理解人类的语言和行为,提供更加智能、个性化的服务。
多模态交互能力:未来的LLM Agent可能会具备多模态交互能力,即不仅可以通过自然语言进行交互,还可以通过图像、音频等多种方式进行交互。这将使得LLM Agent的应用场景更加丰富和多样。
跨领域应用能力:未来的LLM Agent可能会具备更强的跨领域应用能力。它们将能够在不同领域之间进行知识的迁移和应用,实现更加高效和智能的任务处理。
可解释性和安全性:随着LLM Agent的应用范围不断扩大,其可解释性和安全性也将成为关注的焦点。未来的LLM Agent需要能够提供更加清晰、可解释的推理过程,同时保证用户数据的安全和隐私。
3.1single-agent应用
参考:https://mp.weixin.qq.com/s/vVUO-WRkp8FS3wKcfgu45w
大语言模型的浪潮推动了 AI Agent 的快速发展。在 2023 年,出现了多个热门的 Agent 研究项目和应用案例,比如 AutoGPT、BabyAGI、斯坦福的 AI 小镇、HyperWrite、HuggingGPT 和 GPTs 等。
-
AutoGPT:一个开源的自主 AI 代理,基于 gpt-4 和 gpt-3.5 模型,可以根据用户给定的目标,自动生成所需的提示,并执行多种任务,如创建网站、生产社交媒体内容、读写文件、浏览网页等
-
BabyAGI:基于 AI Agent 的任务管理系统,能够使用 gpt-4 自动创建、执行和优先处理子任务。它包括 Execution Agent、Task Creation Agent 和 Prioritization Agent 等
-
斯坦福 AI 小镇:一个由斯坦福和谷歌的研究人员共同开发的虚拟小镇,这个项目使用了25个由ChatGPT支持的AI代理(或称角色),每个代理都有其独特的身份和特点。这些代理被设置在一个虚拟的环境中,通过复杂的文本层来模拟和组织与每个代理相关的信息。
-
HyperWrite:基于 AI Agent 的写作工具,它包含了很多工具,比如利用 Flexible AutoWrite 工具来协助内容创作,Summarizer 工具用于提炼文本关键点,还有 Rewrite Content 对文本进行润色和优化等。
-
HuggingGPT:由微软开发的一种 AI 协作系统,可以使用 Huggingface 上的多个模型来完成给定的任务。HuggingGPT 通过 ChatGPT 来协调各 AI 模型之间的合作,可以很好地处理多模态任务,如文本分类、物体检测、文本转语音、文本转视频等。
-
GPTS:2023 年 11 月,OpenAI 在首届开发者大会(OpenAI Devday)上推出了引人瞩目的 GPTs。GPTs 可以看成是一种初级的 Agent 形态。GPTs 可以添加知识库,也可以执行代码,还可以通过 Action 调用外部 API(如在线检索),大大突破了 ChatGPT 本身能力的限制,因此 GPTs 可以处理很多复杂的任务。更多 Agent 应用案例,可以参考 https://github.com/e2b-dev/awesome-ai-agents 。
3.2multi-agent 应用
-
协作机制
该研究发现协作机制的主要有以下几点:
每一个 agent 都有不同的个体特质、思维模式和合作策略;
agent 之间的辩论和 agent 本身的反思可以提高 agent 的表现;
agent 数量和策略的平衡是形成协作的关键因素
LLM agents 的协作机制和人类的社会心理学有诸多相似之处,如 从众和少数服从多数。 -
对话系统
由于 chatGPT 的流行,基于此或模仿其的 multi-agent 案例都比较多,典型的有:AutoGen、ChatLLM、Agents、MetaGPT、Multi-Party Chat、EduChat
下面以 AutoGen 为例进行讨论,AutoGen 可以看作一个框架,其允许多个 LLM agent 通过聊天来解决任务。LLM agent 可以扮演各种角色,如程序员、设计师,或者是各种角色的组合,对话过程就把任务解决了。不仅如此,AutoGen 是可定制的、可对话的,并且允许人类参与。AutoGen 的运作方式包括借助 LLM 完成任务、人类输入和各种工具的相互组合。具体来说,AutoGen 中的 agent 具有以下显着特点:可对话:AutoGen 中的 agent 是可对话的,这意味着任何 agent 都可以从其他 agent 发送和接收消息以发起或继续对话。可定制:AutoGen 中的 agent 可以定制以集成LLM、人员、工具及其组合。 -
控制系统
基于 LLM 的 multi-agent 系统应用于控制系统(特别是机器人控制)的相关研究也逐渐兴起,比如:RoCo、Co-LLM-Agents、RoboAgent
接下来将以 Co-LLM-Agents 为例介绍系统的构建方法及其工作原理。系统整体框架由观察(Observation)、信念(Belief)、沟通(Communication)、推理(Reasoning)、规划(Planning)五个模块组成。 在每一步中,首先处理观察模块接收到的原始观察,然后通过信念模块更新 agent 对场景和其他智能体的内在信念,然后将之前的动作和对话一起使用来构建 prompt 传递给通信模块和推理模块,通信模块和推理模块利用大型语言模型来生成消息并决定高级计划。 最后,规划模块根据高级计划给出此步骤中要采取的原始操作。 -
游戏方向
Agents基本上都是基于角色扮演的方法来实现的,比如狼人杀,三国杀,原神等等,一个直观的应用就是创造一些Agents自动化的角色,来扮演各种各样的NPC,会带来更好的一些体验。 -
跨模态方向
目前跨模态和Agents的结合就是把跨模态的一些模型和算法当成一些工具,使用大语言模型来驱动,但这并不是最优的形式,如果大模型直接支持各种模态的数据,那就很厉害了,相当于把跨模态的一些任务给颠覆了。多模态agent,用文本输入,不能够让你真正的‘与数据对话’,上述所有场景都能被通过多模态的方式进行增强。通过构建多模态代理,能够消化各种输入,比如图像和音频文件输入。
5、agent功能选型
总体上,MetaGPT侧重的是角色扮演,AutoGen侧重的是conversation和 python programming,AutoAgents侧重的是协作,XAgent强调的是外循环和内循环完成复杂任务的形式。后面各大厂家纷纷发布了自己的Agent项目。比如AppAgent,KwaiAgents,Pangu-Agent,modelscope-agent,ERNIE Bot Agent都各具特色,还有一些机构发布的Agents,例如清华的AgentVerse,港大的OpenAgents等等,从侧面说明,Agent这个东西没什么特别高的技术门槛,如果效果不好,直接标数据SFT就行,产生价值的地方就是在应用上面,比如一些传统业务的降本增效,创新业务落地成爆款应用等等。
具体功能可参考:https://e2b.dev/ai-agents
参考:
https://zhuanlan.zhihu.com/p/671355141
https://zhuanlan.zhihu.com/p/665644399
https://zhuanlan.zhihu.com/p/668153266
https://zhuanlan.zhihu.com/p/676828569
https://datawhalechina.github.io/hugging-multi-agent/chapter2/
https://zhuanlan.zhihu.com/p/660027092
https://zhuanlan.zhihu.com/p/683697536
https://zhuanlan.zhihu.com/p/676828569
https://zhuanlan.zhihu.com/p/671355141
https://mp.weixin.qq.com/s/vVUO-WRkp8FS3wKcfgu45w