【论文精读】A Survey on Large Language Model based Autonomous Agents
A Survey on Large Language Model based Autonomous Agents
前言
一篇来自人大高瓴的综述,详细介绍了基于LLM的智能体的发展和应用,以及对未来的预测。作为AI当前最火的领域,智能体上手容易,操作简单,本质上就是框架+prompt,但是其效果惊艳,能够完成很多LLM无法完成的简单任务,其在未来一定大有可为。
Paper | https://arxiv.org/pdf/2308.11432.pdf |
---|---|
Code | https://github.com/Paitesanshi/LLM-Agent-Survey |
From | arXiv 7 Sep 2023 |
Abstract
自主智能体一直都是学术界和工业界的重点研究焦点。先前的研究关注于具有有限知识的智能体在隔绝环境下的训练,这与人类学习方式大相径庭,因此很难像人类一样做决策。最近,LLMs通过获取的丰富web知识,在完成人类等级只能上展现出非凡的潜力。本文对该领域研究进行了全面的调查,作者首先讨论了基于LLMs的自主智能体的构建,提出一个大一统的框架,接着作者阐述了基于LLMs的自主智能体在社科、自然科学和工程领域的各种应用,最后作者深入研究了基于LLMs的自主智能体常用的评估策略。基于这些研究,作者也提出了这个领域的一些挑战和未来方向。
1 Introduction
自主智能体一直都被认为是解决AGI的有前途的方法,它有望通过自我指导的规划和行动来完成任务。但是之前的工作,智能体都在隔绝的环境中,基于简单启发式策略函数来学习,这与人类学习方式大相径庭,因此它们无法复刻人类的决策。
近年来,LLMs基于海量数据和模型参数获得了类人类智能,取得显著的成效。因此越来越多研究将LLMs作为中央控制器,来指导自主智能体获取人类决策的能力。其关键是为LLMs配备记忆和规划等关键能力,让它们像人类一样完成任务。
本文对基于LLMs的自主智能体提做了一个全面的综述,具体来说,作者将综述分为三个部分:构建,应用和评估。构建主要关注如何设计更好的智能体框架,以及激发和增强智能体完成不同任务的能力。应用主要关注智能体在社会科学、自然科学和工程上的应用。评估部分作者深入研究了评估基于 LLM 的自主代理的策略,重点关注主观和客观策略。
总的来说,本文对基于LLM的自主智能体领域进行了系统的回顾,建立了全面的分类法。主要关注:智能体创建,应用和评估。基于之前的研究,作者确定了领域的挑战,讨论了未来发展方向。
2 LLM-based Autonomous Agent Construction
我们期待基于LLM的自主智能体能够利用LLM的类人类能力来解决各种问题,为了实现这个目标,有两个重要的方面:
- 什么样的架构可以更好使用LLMs。
- 如何让智能体获取解决具体任务的能力。
作者首先整合了一个全面的统一框架,接着根据是否对LLM进行微调,总结智能体获取能力的策略。下面是详细的介绍。
2.1 Agent Architecture Design
LLMs在QA任务上展现巨大的潜力,但是自主智能体和QA又远远不同,因为它们需要根据指定的角色,像人一样自主感知环境并从环境中学习。为了建立LLM和智能体的桥梁,关键在于设计合理的智能体架构帮助LLM最大化其能力。本文提出的大一统框架如上图所示,由画像模块、记忆模块、规划模块和动作模块组成。画像模块用于识别智能体的角色,记忆模块和规划模块让智能体在动态环境中可以根据历史的行为计划未来的动作。动作模块将智能体的决策付诸于行动。画像模块影响记忆和规划模块,三者共同影响动作模块。
2.1.1 Profiling Module
自主智能体通过承担特定的角色来执行任务,而这一角色很大程度取决于具体的应用场景。那么如何为智能体创建特定的画像呢,现有的方法通常采用如下三种策略:
- 手动构建方法。手动为智能体赋予角色信息的方法灵活,但是劳动密集型。
- LLM生成方法。智能体的画像通过LLM进行生成得到,可以选择一些智能体的画像作为小样本。LLM生成方法可以大大节省时间,但是无法精准调控。
- 数据集对齐方法。智能体的画像从真实世界的数据集中获取,可以准确捕获真实人群的属性,从而让智能体的行为更能反映现实世界。
作者认为,将上述三种方法结合起来可能有额外的好处,比如数据对齐可以让画像更真实,再加上手动构建可以丰富画像的信息。画像模块作为智能体设计的基础,对智能体的记忆、规划和动作过程都有很大的影响。
2.1.2 Memory Module
记忆模块存储从环境中获取的信息,并利用已有的记忆帮助未来的动作。记忆模块帮助智能体积累经验,自我提升,从而以有效、合理、一致的方式行事。本小节关注于记忆模块的结构、格式和操作。
Memory Structures
基于LLM的自主智能体通常结合人类记忆的原理和机制。具体来说,人类有长期记忆和短期记忆,在智能体中,也有类似的机制,长期记忆类似于外部向量存储,智能体可以根据需求快速检索查询,短期记忆类似于受Transformer架构约束的上下文窗口的输入信息。下面将介绍两种智能体中常见的架构:
- 统一记忆。仅仅模拟人类的短期记忆,通常通过上下文学习的方式将记忆信息直接写入prompt中。统一记忆的方法简单直接,同时又能增强智能体感知上下文行为和观察的能力。
- 混合记忆。模拟了人类的长短期记忆方式,短期记忆包含在智能体的上下文中,长期记忆存储智能体过去的行为和想法,可以根据当前的事件进行检索。长期记忆常常用过向量数据库实现。长期记忆提供稳定的知识,短期记忆则允许灵活的规划。在实践中,整合长短期记忆可以增强智能体的长期推理额积累经验的能力,这在复杂环境中完成任务至关重要。
只有长期记忆的方法很少出现在文献中,因为智能体在与环境交互的过程中总是需要短期记忆捕获动作之间的连续性。
Memory Formats
从格式上来看,记忆又可以分为自然语言记忆和embedding记忆等,下面进行列举:
- 自然语言:这种形式的记忆存储了智能体的行为和观察等,它的好处有灵活易懂,丰富语义可以指导智能体。
- embedding:记忆信息编码为embedding向量,这种方式可以提升记忆检索和阅读效率。
- 数据库:记忆信息存储在数据库中,智能体可以全面、高效操纵记忆。
- 结构化列表:这种形式的记忆信息被组织成列表,可以高效简洁表达语义。
上面只是有代表性的记忆形式,还有很多其它的形式。不同的记忆形式有自己优势的场景。
Memory Operations
记忆模块通过与环境交互去获取、积累和使用,这一般涉及三个操作:记忆存储,记忆读取和记忆反思。
- 记忆读取:从记忆中提取有用信息增强智能体行动。关键在于如何提取有用信息,一般最近的、相关的、重要的信息会被提取。
- 记忆存储:存储通过环境交互获得的信息。这要求信息是有价值的,能够为未来检索丰富的记忆奠定基础。该部分的关键在于如何存储与现有记忆相似的信息(去重),以及内存到达存储上限,如何删除信息(溢出)。
- 记忆反思:让智能体根据经验信息进行总结,得到更广泛和抽象的见解,这个过程的目标是为智能体提供独立总结和推断更抽象、复杂和高级信息的能力。
传统LLM和Agent的一个显著区别是后者必须在动态环境中学习和完成任务的能力,这个区别的体现主要在记忆模块和规划模块。
2.1.3 Planning Module
当面对复杂 的任务时,人类会倾向将复杂任务分解为多个简单的子任务并单独解决。规划模块即赋予智能体这种能力。具体来说,作者根据是否接受反馈将现有研究分类如下:
- 没有反馈的规划。智能体执行任务不会接收到反馈。
- 单一路径推理。一个任务会分解成多个中间步骤,以级联方式连接。
- 多路径推理。生成计划的推理步骤被组织成树状结构。它和单一路径推理的区别见上图。
- 外部规划。LLM对特定领域生成计划仍然具有挑战性。为应对这种挑战,研究人员求助于外部工具,它可以识别出最优的计划。
- 有反馈的规划。现实场景中,有反馈的计划才是更合理的。因为任务可能会在执行过程中发生改变(如出错),这就需要反馈来修改计划。
- 环境反馈。从客观世界或者虚拟环境中获取。
- 人类反馈。直接与人类交互,可以让智能体符合人类的偏好,缓解幻觉问题,从而实现更明智的规划和推理。
- 模型反馈。模型内部也可以设计反馈机制,比如自我优化模块,通过与LLMs不断交互来提高输出的质量直到达到要求。
总的来说,没有反馈的规划只能适用于某些简单的任务,而有反馈的规划需要更为细致的设计,但是能够解决更多复杂的任务。
2.1.4 Action Module
动作模块用于将智能体的决策转换为具体的结果,直接与环境交互。它受到画像,记忆和规划模块的影响。本节从动作目标,动作产生,动作空间,动作影响四个方面对动作模块进行介绍。
Action Goal
智能体可以执行具有任何目标的动作。这样的目标有:
- 完成任务。
- 沟通。
- 环境探索。
Action Production
与传统的LLM不同,智能体会通过不同的策略和来源来采取动作。有两种常见的动作产生策略:
- 通过记忆采取动作。智能体根据存储的记忆信息采取相关动作。
- 通过计划采取动作。智能体严格遵循计划采取动作。
Action Space
动作空间是指智能体可以执行的一组可能的动作。这些动作主要分为两类,外部工具和LLMs内部知识。
- 外部工具。有些领域的任务需要专家知识,此外LLMs容易出现幻觉问题,因此调用外部工具执行动作可以增强智能体的能力。这些外部工具包括:
- APIs。利用外部的API来补充和扩展动作空间。
- 数据库和知识库。连接到外部数据库或知识库可以帮助智能体获取特定领域的信息以生成更合理的动作。
- 外部模型。利用外部模型来扩大动作空间的范围。
- 内部知识。除了利用外部的知识,智能体可以依靠智能体内部的知识来指导它们采取动作。这些内在的知识基于LLM一些关键的能力:
- 规划能力。LLM可以自己对任务进行分解。
- 对话能力。LLM通常可以产生高质量的对话来采取行动。
- 常识理解能力。LLM可以很好理解人类的常识并做出类似人类的决策。
Action Impact
动作执行后会产生很多的结果。这些结果可以分为如下类别:
- 环境变化。
- 改变内部状态。
- 触发新的动作。
2.2 Agent Capability Acquisition
上面的框架相当于智能体的硬件,但是仅仅依靠硬件资源不足以实现有效的任务性能,因为智能体可能缺乏必要的特定任务的能力、技能和经验,这些可以视作软件资源。为了让智能体配备这些资源,主要根据是否微调分为两种策略。
Capability Acquisition with Fine-tuning
增强智能体完成任务能力的直接方法是在任务相关的数据集上进行微调。这些方法如下:
- 在人工标注的数据集上微调。需要人工标注,成本高昂,但质量高。
- 在LLM生成的数据集上微调。质量略差,但成本低,标注数量多。
- 在真实世界数据集上微调。从真实世界中获取数据(比如互联网数据爬虫)。噪声多,但真实。
Capability Acquisition without Fine-tuning
在智能体时代,模型的能力可以通过模型微调,prompt工程和机制工程获取。机制工程是一个宽泛的概念,涉及开发专门模块、引入新的工作规则以及其它增强智能体能力的策略。上图是模型在获取能力上策略的转变过程。
- Prompt工程:以自然语言的形式与LLM进行互动,从而增强其能力。常见的有上下文学习,此外还有CoT。
- 机制工程:这是一种独特的增强智能体能力的策略,常见方法如下:
- Trial-and-error。智能体首先执行一个动作,然后预定义的批判者会对动作进行评估,如果不满意,智能体会根据评估结果生成响应。
- Crowd-sourcing。利用群体智慧来增强智能体的能力。
- Experience Accumulation。将成功完成任务的动作保存下来,从而累积经验。
- Self-driven Evolution。智能体通过自主设定目标,根据环境探索和接受奖励函数反馈来逐步提高能力。通过这种方式,智能体可以根据自己的喜好获取知识并发展能力。
微调的方式虽然能够通过调整参数来提高智能体的能力,但是只能应用在开源的LLM,无需微调的方式通常基于精细的Prompt工程和机制工程来增强智能体。它们不受开源闭源的限制,但是受到上下文窗口的限制。
上面这些小节就是基于LLM的智能体构建细节,主要在于架构和能力获取两个方面。相关的工作见下表。
3 LLM-based Autonomous Agent Application
基于LLM的智能体在很多领域展现出显著的潜力。本节基于前面的研究将应用场景分类为三种:社会科学,自然科学和工程。
3.1 Social Science
社会科学致力于研究社会以及社会人与人之间的关系。基于LLM的智能体可以利用其出色的人类理解能力、思考和任务解决能力来促进这个领域的发展。下面是几个典型的领域:
- 心理学。智能体可以通过模拟实验来提供心理健康的支持。实验表明更好的模型往往能提供更真实的结果,可以帮助用户应对焦虑、抑郁等问题,但是都有可能会产生有害信息。
- 政治学与经济学。基于LLM的智能体也可以用于学习政治学与经济学, 通过解析言论的结构或者赋予他们特定的特征(天赋,偏好,个性),以模拟人类的行为。
- 模拟社交。基于LLM的智能体可以模拟在线社区,模拟虚拟城镇中人类的生活,或者模拟课堂场景等。
- 法律体系。基于LLM的智能体可以为法律决策过程提供更明智的判断,有的工作采用多语言模拟多个法官,通过收集不同意见,以投票机制整合。为了减少LLM的幻觉问题,ChatLaw支持数据库和关键字检索来缓解。
- 研究助手。基于LLM的智能体可以协助科研人员完成各种任务, 如文章摘要,提取关键字等,或者充当写作助理。
3.2 Natural Science
在自然科学中,基于LLM的智能体也有很多的应用:
- 文档与数据管理。自然科学领域通常涉及大量文献的收集、组织和整合,需要耗费大量的时间和人力,而智能体利用自己强大的理解能力和文本处理能力,可以回答问题和制定实验计划。
- 实验助手。智能体拥有独立进行实验的能力。现有的工作包括利用智能体设计实验计划,提供实验的建议等。
- 自然科学教育。由于基于LLM的智能体可以和人类流畅交流,因此通常被用来开发基于智能体的教育工具。比如帮助学生理解学习数学、提高学生编程水平等。对于幻觉问题,可以采用丰富的prompt或者检索解决。
3.3 Engineering
基于LLM的智能体在工程研究和应用上也展现了强大的潜能:
- 土木工程。智能体可以帮助设计和优化复杂的结构。
- 计算机科学与软件工程。智能体提供了自动化编码、测试、调试和文档生成的潜力。比如设计端到端的框架进行通信和协作,或者抽象出不同角色监督代码生成过程来提高输出代码的质量。
- 工业自动化。工业自动化领域,可以利用智能体实现生成过程中的智能规划和控制。
- 机器人与人工智能。在该领域,重点是增强智能体在具体环境中进行规划、推理和协作的能力。
为了推动基于LLM的智能体的应用,研究人员还引入了开源库,帮助其他开发人员根据自己的需求快速实现和评估智能体。例如开源框架LangChain,可以自动编码、测试、调试和文档生成。基于语言模型和数据源集成,LangChain通过自然语言通信和多角色智能体协作来实现高效的软件开发。此外还有自动化智能体AutoGPT、通过对话完成任务的WorkGPT,利用大语言模型的能力,再加上爬虫获取的外部知识来总结和汇总摘要。
当然,基于智能体的LLM虽然支持上面的一系列应用,但也会带来一定的风险与挑战。一方面,大模型本身会易出现幻觉问题,导致提供错误的答案,因此用户必须采取适当的措施。另一方面,基于LLM的智能体可能会被恶意使用,比如发展化学武器。需要采取适当的安全措施。
4 LLM-based Autonomous Agent Evaluation
有两种常见的评估策略,即第三节图中的客观评估和主观评估。
4.1 Subjective Evalution
主观评估主要基于人类的判断,通常适用于没有评估数据集或者难以量化的场景。下面是两种常用的主观评估策略:
- 人类标注。让人类评测者直接对不同智能体的输出结果进行评估或排名。
- 图灵测试。在该方法中,人类评测者需要区分智能体和真实人类的产生结果。如果在给定任务上无法区分,则表明智能体可以在该任务上达到类似人类的表现。
基于LLM的智能体通常设计用于服务人类,因此主观评估方法非常重要,但是这种方法仍需面对高昂成本、低效和人口偏差。为了解决这个问题,很多研究者采用LLM作为主观评估的代理,随着LLM模型能力的提升, 这样的评估策略会越来越可信可用。
4.2 Objective Evaluation
客观评估是采用定量指标来评估基于LLM的智能体的能力。客观评估旨在为智能体提供具体的、可测量的见解。它包括三个重要方面:评估指标、协议和基准。
常见的评估指标如下:
- 任务成功指标。
- 人类相似度度量。
- 效率指标。
如何利用这些评估指标也很重要,通常有如下的评估协议:
- 真实世界模拟。智能体在游戏或者交互式模拟器等沉浸环境进行评估。
- 社会评估。利用指标来估计基于模拟社会中智能体交互的社会智能。
- 多任务评估。采用不同领域的任务来评估智能体。
- 软件测试。让智能体执行软件测试任务来评估智能体。
给定指标和协议,剩下的关键就是采用合适的基准执行评估。过去常用ALFWorld、IGLU和Mincraft等模拟环境作为评估的benchmark,现有的benchmark有AgentBench,它提供了一个全面的框架,用于评估跨环境智能体。SocKET评估LLM社交能力,AgentSims评估基于LLM的智能体在交互环境的有效性。WebShop用于评估基于LLM的智能体的产品搜索和检索能力。此外还有多个benchmark,详见原文。
客观评估采用不同的指标对基于LLM的智能体的能力进行评估,虽然无法完美衡量,但是也是对主编评估的重要补充。
5 Related Surveys
随着大语言模型的蓬勃发展,出现了大量的总数,提供各个方面的见解,比如有介绍LLM的背景和发展,LLM在下游任务上的应用与挑战,LLM的幻觉问题,LLM的对齐方法,LLM推理能力的探索等等,但是一直没有基于LLM的Agent的相关综述。本文整理了超过百篇基于LLM的智能体的相关著作,涵盖其构建、应用和评估。
6 Challenges
虽然基于LLM的智能体取得了很多显著的成功,但是也有很多局限性和挑战。
6.1 Role-playing Capability
角色扮演在智能体对话中至关重要,但是LLM会很难扮演不熟悉的角色(即在预训练过程中很少见的)。此外智能体很难模拟人类的认知心理,导致对话场景缺乏自我意识。潜在的解决方法是微调,但是也很难保证微调后其它角色扮演仍表现良好。此外还有设计量身定制的框架,但是这样的设计空间太大,很难找到最佳。
6.2 Generalized Human Alignment
传统的LLM通过微调来达到符合人类的价值观,但是现有的LLM都是与广义的人类价值观对齐,需要有针对不同场景的人类价值观对齐,比如消极的人类价值观,通过研究这个可以帮助阻止现实中存在的类似问题。可以尝试的方向是设计有趣的Prompt。
6.3 Prompt Robustness
为了确保智能体的合理行为,设计者通常设计不同的模块到LLM中(包含大量的Prompt)来促进一致的操作和有效的沟通。但是Prompt的方式缺乏稳健性,可能会影响别的模块,可行的解决方案有:反复试错,或者GPT自行生成。
6.4 Hallucination
幻觉对LLM提出了根本的挑战,为了解决这个问题,一种可能的方法是讲人类校正反馈纳入到人类与智能体交互的循环中。
6.5 Knowledge Boundary
基于LLM的智能体的一个重要的应用是模拟人类行为。但是LLM通常有强大的知识储备,因此在做判断的时候通常会用到广泛的知识,与真实人类做决策行为不同。如何约束它使用这些知识也是未来的方向。
6.6 Efficiency
LLM推理速度较慢,如果采用密钥部署多个智能体会显著增加时间成本。
7 Conclusion
本文系统总结了基于LLM的智能体现有的研究,从构建、应用和评估三个方面进行介绍和总结。最后作者还提出这个领域的几点挑战,预期该领域的未来方向。
阅读总结
一篇总结非常到位的基于LLM智能体的综述,总结了从22年底到23年9月近百篇智能体的工作,当然后序还是有很多衍生的工作产生,毕竟这个领域实在是太火了。在我看来,真正的智能体就是文章中所提到的四合一,即画像、规划、记忆和动作。画像限定了智能体的角色,也就限定了智能体的活动空间和范围,规划是针对特定任务所设计的步骤,记忆是便于复用以前的经验,而动作是执行计划,是真正与环境的交互,人在执行任务的时候也是同样的过程,首先人本身有自己的角色,是老师、学生还是设计师等等,有了角色,面对当前任务才会采取特定角色的规划策略,执行任务时也会根据自身的技能与环境交互,在交互过程中复用以前的知识。这样的智能体才真正像人类一样行动,才是真正意义上的智能体。
那么对于火热的智能体领域,文章中也提到了未来的发展与挑战,当前很多大公司已经在制定智能体的框架,那么小的研究团队能做的也就是找到特定的应用场景做应用,比如机器人,这就相当于给机器人加上大脑。或者从智能体本身存在的问题出发,设计出通用的方法,比如怎样减少幻觉,如何合理规划,如何更好复用记忆,如何减少通信次数提高效率。面对这一新兴的领域,有许许多多的工作值得我们去做。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!