A Survey on Large Language Model based AutonomousAgents(论文笔记)
Wang, L., Ma, C., Feng, X., Zhang, Z., Yang, H., Zhang, J., ... & Wen, J. (2024). A survey on large language model based autonomous agents. Frontiers of Computer Science , 18(6), 186345.
1.1 Aim
之前的工作,智能体都在隔绝的环境中,基于简单启发式策略函数来学习,这与人类学习方式大相径庭,因为人类的思维非常复杂,个人可以从更广泛的环境中学习。因此它们无法复刻人类的决策,特别是在不受约束的、开放的领域环境中。
而近年来,LLM基于海量数据和模型参数获得了类人工智能,取得了显著成效。因此越来越多的研究将LLMs作为中央控制器,来指导自主智能体获得人类决策的能力。
二者最重要的区别就是后者(基于LLM的智能体)必须具有在动态环境中学习和完成任务的能力,而这个的实现在很大程度上依赖于记忆模块管理过去的行为,计划模块规划未来的动作。
1.2 How
论文就基于LLM的智能体的构建、应用和评估进行了全面的综述。基于之前的研究确定了该领域的挑战和未来的发展方向。
1.2.1Construction
为了实现让基于LLM的智能体能够利用LLM的类人类能力来解决各种问题的目标,作者提出了两个方面:1.什么样的架构可以更好地使用LLMs?2.在这样的架构之下如何让智能体获取解决问题的能力?
1.2.1.1外部架构
为了建立LLM和智能体的桥梁,作者提出了一个大一统的架构,使其能够最大化LLM的能力。

Profile Module用于设定智能体的角色,是智能体设计的基础;Memory Module和Planning Module将智能体置于动态环境中,使其能够回忆过去的行为并计划未来的行动;Action Module将决策进行实现。前面三个模块共同影响最后一个模块的实现
1.2.1.1.1配置文件模块
设定这些配置文件有以下三种方法:1.手动为智能体设定配置文件(方法比较灵活,但是当规模比较大时,劳动密集型)2.利用LLM生成配置文件(节省了时间,但是无法精确调控)3.从真实数据集中去获得智能体的配置文件(真实,更能反映现实世界的信息)。以前大多都是独立使用这些method,但在某些场景下,混合使用可能会有额外的收获。
1.2.1.1.2记忆模块
记忆的方法
短期记忆:实现简单,可以增强智能体感知最近或者上下文敏感的行为和观察的能力。但是LLMs的上下文窗口大小有限
混合记忆(短期记忆+长期记忆):短期记忆暂时缓冲最近的感知,长期记忆随着时间的推移巩固重要的信息
记忆的格式
自然语言:记忆信息可以以灵活和可理解的方式表达。此外,它保留了丰富的语义信息,可以为指导智能体行为提供全面的信号
嵌入式:记忆信息被编码成嵌入向量,从而提高了检索和阅读的效率
数据库:内存信息存储在数据库中,允许智能体高效而全面地操作内存
结构化列表:记忆信息被组织成列表,记忆的语义可以高效而简洁的方式传达出来
记忆的步骤
记忆读取 --> 记忆存储(存在如何去重和防止溢出两个问题) --> 记忆反思
1.2.1.1.3计划模块
计划模块赋予了智能体将复杂任务分解为单个子任务并且单独完成的能力。
没有反馈的计划:适用于一些比较简单的任务。通过多路径推理/单一推理/外部推理来计划未来的动作

有反馈的计划:适用于一些比较复杂的任务,根据这些反馈的来源可以分为从环境中获得/与人类交互获得(它可以有效地使智能体与人类的价值观和偏好保持一致,也有助于缓解幻觉问题)/在模型内部设计反馈机制(比如一些优化模块,通过与LLMs不断交互来提高输出质量)来获得
1.2.1.1.4动作模块
目标:完成任务、沟通、环境探索(探索不熟悉的环境,以扩大其感知能力,并在探索和利用之间取得平衡)
如何产生:根据记忆产生、根据计划产生
智能体可以执行的一组可能的动作:将这些操作分为借助外部工具和调用智能体内部的知识。外部工具:有些领域可能需要专家知识,此外智能体还有可能出现幻觉(对自己的错误判断具有高度自信),因此调用外部工具执行动作可以增强智能体的能力。外部工具分为:APIs(利用外部API来补充和扩展操作空间)、数据库和知识库、外部模型;内部知识:基于LLMs的一些关键能力 --- 规划能力(LLM可以将自己的任务进行分解)、对话能力(LLM可以产生高质量的对话来采取行动,这一功能使智能体的行为更像人类)、常识理解能力(LLMs能够很好地理解人类的常识。基于这种能力,许多智能体可以模拟人类的日常生活,做出类似人类的决策)
影响:环境变化(智能体可以移动位置、收集物品、建造建筑物等)、改变自身内部的状态(更新记忆、制定新计划之类的)、触发后续的动作
1.2.1.2智能体能力的获得
光有外部框架是不够的,还需要一些完成任务的能力、经验和技巧。将得到这些能力是否需要微调分为两类:
1.2.1.2.1在任务相关的数据集上进行微调
在人工标注的数据集上进行微调:需要人工标注,成本高,但是质量高
使用LLM生成的数据集微调:质量略差,但是成本低,标注数量多
利用真实的数据集进行微调(噪声多,但是真实)
1.2.1.2.3不进行微调
提示语工程:人们可以使用自然语言描述所需的能力,然后将其作为提示来影响LLM操作。常见的有上下文学习、CoT等。
机制工程:
1.Trail - and - error:首先执行一个操作,根据反馈执行下一步操作
2.群体智慧
3.经验积累:将成功完成的动作保存下来,从而积累经验
4.Self-driven Evolution:相当于人类里面的自学,自己设定目标,根据环境探索和接受奖励函数反馈来逐渐提高能力。
1.2.2 Application
1.2.2.1社会科学
心理学(智能体通过模拟实验来提供心理健康的支持,但是也有可能产生有害的内容)
政治学和经济学
模拟社交(这些智能体能够模拟在线社区之类的,可以评估比如制定这个社区规定的好坏之类的)
法律体系(在Blind Judgement这篇论文里面使用几种语言模型来模拟多个法官的决策过程。它收集不同的意见,并通过投票机制巩固结果)
研究助理
1.2.2.2自然科学
文档和数据管理、实验助手、自然科学教育
1.2.2.3工程
计算机科学与软件工程、工业自动化、机器人和人工智能
虽然基于LLM的智能体应用比较广泛,但是还是存在一定的风险和挑战,比如它容易出现幻觉;还可能被恶意使用,需要考虑到安全问题。
1.2.3 Evaluation
1.2.3.1主观评估
适用于没有评估数据集或很难设计定量度量的场景
1.人类测评者直接对输出结果进行评估或排名
2.图灵测试:人类测评者需要区分智能体和真实人类产生的结果
问题:人类作为评测者可能会有一些成本高、效率低、人口偏见等的问题。后面就用智能体本身来作为评测者,克服目前直接人类评估的局限性
1.2.3.2客观评估
评估指标:
任务成功指标:成功率、奖励/得分、覆盖率和准确率/错误率
人类相似度度量:如连贯、流畅、与人类的对话相似性和人类接受率
效率指标:旨在评估智能体的效率
评估协议:(这些评估指标怎么用)
真实世界模拟
社会评估
多任务评估(衡量泛化能力)
软件测试
基准:在文中提到了很多不同的基准,分别适用于不同的评估场景。比如:SocKET评估社交能力,WebShop评估基于LLM的智能体在交互环境中的有效性。
客观评估有助于通过各种指标对基于LLM的代理的能力进行定量分析。虽然目前的技术不能完美地衡量所有类型的代理能力,但客观评估提供了基本的见解,补充了主观评估。
1.2.4Challenge
1.2.4.1角色扮演能力
问题:很难扮演不熟悉的角色(即在预训练过程中很少见到的);很难模拟人类的认知心理,导致对话缺乏自我意识。
这些问题的潜在解决方案可能包括微调LLM或仔细设计代理提示/体系结构。然而,如何确保微调的模型对于共同的角色仍然表现良好,可能会带来进一步的挑战。除了微调,人们还可以设计定制的代理提示/体系结构,以增强LLM在角色扮演方面的能力。然而,找到最佳的提示/架构并不容易,因为其设计空间太大了。
1.2.4.2Generalized Human Alignment
问题:现在的LLM都是与广义的人类价值观对齐,但是针对不同场景,需要与不同的价值观对齐。比如消极的价值观,这样可以防止现实中发生类似的问题。
可以尝试的解决方案是设计更加有趣的提示语。
1.2.4.3提示语的健壮性
问题:在以前的研究中指出,LLMs提示语缺乏健壮性,因为即使是微小的改变也可能产生本质上不同的结果。在构建自主智能体时,这个问题变得更加明显,因为它们包含的不是单个提示,而是一个考虑所有模块的提示框架,其中一个模块的提示可能会影响其他模块。此外,不同的LLM之间的提示框架可能会有很大差异。
可行的解决方案有:反复试错,或者GPT自行生成。
1.2.1.4幻觉
问题:对自己错误的操作盲目自信。
解决方案:人工校正反馈直接纳入人-智能体交互的迭代过程中
1.2.1.5知识边界
问题:LLM通常具有强大的知识储备,因此在做判断的时候也会用到广泛的知识,这与真实人类做决策不同
如何约束LLM的知识边界成为了未来的发展方向。
1.2.1.6效率
问题:由于其自回归体系结构,LLM通常具有较慢的推理速度。但是,智能体可能需要多次查询LLMs的每个操作,例如从内存中提取信息、在采取操作之前制定计划等。因此,LLM推理的速度对智能体行为的效率有很大的影响。
1.3相关思考
本文综合了多篇基于LLM的智能体的论文,进行了一个综合的描述。最终的目的就是抛给智能体一个特定的任务,然后要让它像人一样做出决策。如何实现这个过程呢?先给智能体设定一个角色,通常放在提示符里面,然后给它布置任务,之后它可以将这个任务分解成几个小的子任务,进行一个规划。在执行任务的时候又会借助自身的能力与环境进行交互,在交互的过程中,又会通过记忆模块,调用历史信息,不断优化和调整计划及动作。在挑战方面,作者对LLM知识储备量大和推理速度慢这两个问题没有指出可能的解决方案,这也将是未来的研究方向。
