发布于 

LLM based Autonomous Agents综述

主要综述了当前基于 LLM 的 Agent 方向研究,提出了智能体构件的统一架构。文章由中国人民大学高瓴人工智能学院相关团队撰写,并在 2024 年收录至 Frontiers of Computer Science(FCS)。

1. 背景

Agent 是实现通用人工智能中最有前景的方向之一,但以往受技术所限,Agent 在决策能力上与人类存在显著差异。近年来 LLM 的发展让构建更强大的 Agent 成为可能,所以随着 LLM 的发展,近年来基于 LLM 的 Agent 研究也层出不穷。

本文围绕基于 LLM 的自主 Agent 的构建(construction)、应用(application)、评估(evaluation)展开系统综述。 图 1

2. Construction

怎么设计架构 + 提升 Agent 能力。 图 2

2.1 怎么设计架构

2.1.1 Profile

告诉 Agent 是谁。建立 profile 有三种方式:

  1. Handcrafting 手工写:pro = 灵活性;con = 成本较高(如果有很多 profile 需求,我们暂时没有)。
  2. LLM 生成:给定一个规则,让 LLM 自动生成。
  3. Dataset Alignment:对齐某个数据集,比如 GPT-3 是对齐 ANES(American National Election Studies),不断保证 GPT-3 的回答和 ANES 的结果是一样的。 图 3

2.1.2 Memory

2.1.2.1 记忆类型
  1. Unified memory = 短期记忆,上下文直接写进 prompt 里。现在上下文长度的限制影响了这个能力,所以研究者都尝试使用 hybrid memory 方式来解决。
  2. Hybrid memory = 长期 + 短期记忆,短期记忆只影响最近,长期记忆巩固重要信息。
  • AgentSims,AI 小镇:Prompt 里的信息 = 短期记忆;长期记忆是一个向量数据库,每日的短期记忆会 encode 进去,用的时候再进行查询。 图 4
  • GITM(Ghost In the Minecraft):短期记忆 = 刚才的 trajectory;长期记忆 = 过去之前所有成功的 trajectory。短期记忆负责灵活的规划,长期记忆负责稳定的知识。

Mark:可能还有仅长期记忆的情况,但是相关文献较少使用这种模式,推测现在 Agent 的用途比较依赖实时交互能力,所以都需要短期记忆。

2.1.2.2 记忆格式
  1. NL:记忆灵活,可解释性强;丰富的语义信息可以用于指导 Agent 的整体行为。
  2. Embeddings:保存/读取很快。
  3. Database:记忆全面,读取有效。
  4. Structured List:将记忆信息组织成列表。 - GITM 把行为根据大目标拆解为小目标,转化为结构树保存。
2.1.2.3 记忆操作
  1. Read:三要素 = recency、relevance、importance。
  2. Write:将遭遇写入记忆中,需要注意两点:

a. 记忆重复

  • 聚合记忆:Augmented LLM 中类似信息聚合,保留 count。

Augmented LLM 主要讲了 LLM + memory = 通用图灵机:类似 LLM 是 CPU,memory 是 RAM。

  • 内化记忆:GITM 会把 Task 上“成功”的行为聚合,超过 5 次就换成一个新的 NL 记忆作为这种 Task 的解决方案,在记忆系统中会替换。

进行了一部分 Reflection 的工作,内化经验为知识:5 次都成功,以后就继续这么干。

b. 记忆溢出

  • 人工干预:ChatDB,可以 by 指令人为删除记忆。

ChatDB 主要讲了用数据库作为记忆模块来增强大语言模型,使 LLM 可以通过 SQL 操作数据库。

Mark:说明目前主要方式还是把 Agent 当作人一样用 SQL 访问数据,目前 LLM 不太可能 universality 地直接读取全部明细数据。

  • FIFO:RET-LLM,一个 fixed quota,最老的信息先忘记。

有点类似模拟遗忘?可能不光靠时间,也可以依赖上面三要素 recency、relevance、importance。

  1. Reflection:对记忆进行反思和分析,模拟人类将“经验/信息”内化为“知识”,从而影响未来自身认知、情感和行为。
  • GITM:上文中的把成功的 5 次经验聚合。
  • Expel:把所有成功和失败的 trajectory 收集起来,然后总结出 insight 用于指导后续行为。 图 5 Expel = Experience Learner,提出了 Agent 从经验中学习的架构,from 清华。

2.1.3 Planning

图 6 Planning 模块的作用是让 Agent 像人一样,把复杂任务拆解为子任务(类似 InsightAgent 中我们把 Task 拆解为 Subtask 的 intuition)。目前绝大多数 Agent 根据是否在规划图中接受信息可以分为两部分:

2.1.3.1 无反馈规划
  1. 单路径:比如 Zero-shot CoT,将最终目标分解成几个中间步骤,这些步骤以级联方式连接,每个步骤只导致一个后续步骤。LLMs 遵循这些步骤来实现最终目标。

当前阶段的 IA,by task 来 hard coding,类似这个思想。

  1. 多路径:比如 CoT-SC,每个中间步骤可能有多个后续步骤,模拟人类思考,在每个推理步骤中可能有不同的选择。
  2. 外部规划器:把问题的 description 转换为外部规划器的语言,然后规划好转化为 NL 再吐给 LLM。比如 LLM+P,把问题转化为 PDDL(Planning Domain Definition Language),再还回去。

PDDL 主要由三部分组成:领域文件描述了可用于各种问题的操作和谓词,问题文件定义了特定情况下的特定初始条件和目标,规划列出了在这些条件下实现目标所需的操作。PDDL 优势是可以验证 LLM 生成的规划是否可以执行。

2.1.3.2 有反馈规划

在许多现实世界场景中,代理需要进行长范围规划来解决复杂任务。面对这些任务,上述无反馈规划模块可能效果较差。

  1. 环境反馈:来自客观世界或虚拟环境的反馈,例如一个任务是否执行完成。

= IA 规划图中的 Re-Decomposition 和 Re-Execution 部分。

  • ReAct:thought-act-observation 三件套,thought 目标是高级推理和规划以指导 Agent 行为,act 代表代理的具体行动,observation 代表观测行动后的结果。

找到的一个理解 ReAct 的例子:

https://zhuanlan.zhihu.com/p/624003116

问题:除了 Apple 遥控器,还有什么其他设备可以控制相关软件?相关软件指的是,Apple 遥控器最早可以控制的软件。

说明:Apple 遥控器最早只能控制 Front Row 软件;Front Row 软件可以被两种设备控制,Apple 遥控器和键盘的功能键;所以,正确答案是键盘的功能键。

1. 传统方式,直接问 LLM

答案:iPod。

答案错误,显然是在胡言乱语。因为 LLM 的内容生成,是根据之前所有的字预测后续内容,所以,我推测,出现这个结果很可能因为 LLM 其实并不知道相关答案,只是 Apple 遥控器和 iPod 的语义很接近,所以才得出 iPod 这个结论。

2. CoT 方式

想法:让我们一步一步思考这个问题。Apple 遥控器可以控制 Apple 电视。Apple 电视可以被 iPhone、iPad 和 iPod Touch 控制。

答案:iPhone、iPad 和 iPod Touch 控制。

答案错误。思维链范式,其实也是在胡诌,因为它不知道答案。

3. 动作范式

动作 1:搜索【Apple 遥控器】

结果 1:Apple 遥控器是一种遥控器……最早可以控制“Front Row”……

动作 2:搜索【Front Row】

结果 2:无结果。

动作 3:搜索【Front Row 软件】

结果 3:Front Row 是一种过时软件……

动作 4:完成【是的】

答案错误。动作范式,即隐式推理,也没有得到正确答案。不难理解,隐式推理对 LLM 的推理能力要求很高,因为它会隐去思考过程。我觉得当 LLM 推理能力达到一定程度时,应该也能得出正确答案。

4. ReAct 方法,即推理 + 动作

想法 1:我需要搜索 Apple 遥控器,并找到 Apple 遥控器最早可以控制的软件。

动作 1:搜索【Apple 遥控器】

结果 1:Apple 遥控器是一种遥控器……最早可以控制“Front Row”……

想法 2:Apple 遥控器最早可以控制 Front Row。我需要搜索 Front Row 下一步,找出还有什么其他设备可以控制它。

动作 2:搜索【Front Row】

结果 2:无结果,可以试试“Front Row Seat to Earth”和“Front Row 软件”。

想法 3:Front Row 没有找到,我可以搜索“Front Row 软件”。

动作 3:搜索【Front Row 软件】

结果 3:Front Row 是一种过时软件……可以被 Apple 遥控器和键盘功能键控制。

想法 4:现在我知道答案了。

动作 4:完成【键盘功能键】

答案正确。通过显式推理,加上动作,LLM Agent 自主找到了答案。整个过程感觉就像是个不是特别聪明的孩子,要把想法写出来,然后去综合所有想法和观察,接着再做出相应的动作。但显然这个方法很有效,它最终找到了答案。

也许将来,聪明的 LLM Agent 不需要显式推理,通过纯动作,即传统方法 3,也能得到正确答案。但作为人类,我们还是会去使用 ReAct 范式,因为它具备可解释性。我们可以知道 Agent 是怎么想的,尤其是在需要调试和人工介入的情况下。

  • GITM:在推理和行动执行过程中也整合了反馈,这些反馈包括环境状态以及每个执行行动的成功和失败信息。
  • Inner Monologue:利用环境反馈,LLM 能够形成内心独白(Inner Monologue),使它们能够在机器人控制场景中进行更丰富的处理和规划。在代理采取行动后向其提供三种类型的反馈:(1)任务是否成功完成,(2)被动场景描述和(3)主动场景描述,前两种来自环境,使代理行动更合理。
  1. 人工反馈:直接与人类互动也是一种非常直观的策略,可以增强代理的规划能力。

= IA 规划图中 Conclusion 后询问 Y/N。

  • Inner Monologue:代理旨在一个 3D 视觉环境中执行高级别自然语言指令,它能够主动向人类征求有关场景描述的反馈,然后将人类反馈纳入其提示中,从而进行更明智的规划和推理。
  1. 模型反馈:利用 Agent 反馈,这种类型的反馈通常是基于预训练模型生成的。
  • SelfCheck:对大模型推理步骤每步让大模型自己检查,根据检查结果对每步进行评分,然后得到这个问题结果的置信度,然后投票,提升了数学推理任务。 图 7

2.1.4 Action

执行模块负责将代理的决策转化为实际操作,它是代理架构中最下游的部分,直接与环境交互。该模块受到角色、记忆和规划模块的影响,由四个方面组成:

  1. 行动目标:完成任务(我们的 IA);交流(聊天机器人);探索环境(游戏 Agent)。
  2. 行动生成: - 通过计划跟踪进行行动:在这种策略中,代理根据其预先生成的计划采取行动。GITM 遵循对于一个 high-level goal 拆解为小的 sub-goal 的 plan 来决策行动。 - 通过记忆回忆进行行动:在这种策略中,行动是通过根据当前任务从代理记忆中提取信息来生成的。任务和提取的记忆被用作提示来触发代理行动。GITM 对于 sub-goal,会寻找是否有类似的记忆,有则遵循记忆中的行为。
  3. 行动空间:有什么可以行动。 - 外部工具:API(HuggingGPT 可以用 Hugging Face 的接口)、数据库(ChatDB)、外部模型(可以接很多其他 AI,处理更复杂的任务)。 - 内部知识:规划能力(上文的 Planning)、对话能力(Chat with user/other agent)、理解能力(常识理解)。
  4. 行动影响: - 环境变化。 - 记忆更新。 - 智能体状态变化。

2.2 怎么提升能力

两种策略,分别是对 LLM 需要进行微调和不需要进行微调。 图 8

2.2.1 With Fine-tuning

利用人工标注 / LLM 生成 / 真实世界数据集。

2.2.2 Without Fine-tuning

  1. Prompt Engineering:学会写 + 好好写 Prompt。例如 CoT,为了赋予智能体进行复杂任务推理的能力,作者在提示中提供了中间推理步骤作为少样本示例。

  2. Mechanism Engineering:用于提升 Agent 能力的独特策略,一些例子:

Mechanism Engineering = 机制工程?个人理解为 Agent 的架构设计,需要模块具备哪些功能 + 各个模块如何协同工作,不同 Agent 都应该有不同的架构。

  • Trial-and-error:预定义一个批评者来判断行为是否满意,然后智能体执行动作后根据判断来做出反馈。
  • Crowd-sourcing:Improving factuality and reasoning in language models through multiagent debate 中,不同智能体对一个问题给单独答案,答案不一致则把答案结合为其他智能体,再给一个新的答案,直到答案一致。
  • Experience Accumulation:GITM 中,智能体一开始并不知道如何解决任务。然后,它进行探索,一旦它成功地完成了一项任务,用于该任务的动作就会被存储到智能体的记忆中。将来,如果智能体遇到类似的任务,则会提取相关的记忆来完成当前任务。
  • Self-driven Evolution:LMA3 中,Agent 有一个 goal generator 模块,可以在 trajectory 后根据反馈自主修改目标,并通过探索环境和从奖励函数中接收反馈来逐渐提高其能力。

一些机制工程的 intuition 其实和传统机器学习一脉相承,比如上面 1-3 分别类似 GAN、Bagging 和 Boosting。

3. Application

在社会科学(心理学、政治学和经济学、社会模拟以及法学和研究助理)、自然科学(文献和数据管理、实验助手以及自然科学教育)、工程(软件工程、工业自动化、机器人与具身智能)均可以应用。

一些有趣的例子:

  1. 心理学:模拟心理学实验。为 LLM 赋予不同的特征,然后让它们完成心理学实验,从而分析 LLM 的行为是否与真实人类参与者相似。
  2. 心理学:心理医生 Agent,缓解焦虑抑郁。
  3. 政治学:识别意识形态和预测投票,或模拟人类的经济行为。

4. Evaluation

4.1 主观

  • 人类标注:人类评估者直接对不同智能体生成的输出进行评分或排名。
  • 图灵测试:人类评估者需要区分智能体和人类生成的输出。

4.2 客观

  1. Metrics:可以用什么指标评估 Agent。 - 成功率:任务成功率、accuracy、error rate 等等。 - 人类相似性:coherent、fluent、human acceptance rate 等。 - 效率:training efficiency。
  2. Protocols:怎么评估,如何权衡不同 metric。 - Real-world simulation:比如游戏中,或者模拟环境中。 - Social Evaluation:在社会中合作,和其他 Agent / 人。 - Multi-task:多任务处理。
  3. Benchmark:选择合适的基准,比如对比人,或者对比系统,也有论文 AgentBench 提供了全面的 benchmark。

Mark:感觉找客观评估还是比较难的,就像客观评价一个人类的整体行不行也比较难,但是可以在某些维度上评价,比如 IA 对比我们人工写的,让行运对不同维度(文字流利、方向新颖等等)进行评价。

5. 挑战

  1. Corner case: - 领域比较深的角色(程序员、研究人员和化学家)中的 corner case。 - 小众的 corner 角色。
  2. 通用的人类一致性:LLM 通常被微调以与正确的人类价值观保持一致,比如黄暴政。
  3. 提示 Robustness:统一且具有弹性的提示框架,适用于各种不同的 LLM。
  4. 幻觉
  5. 知识边界:LLM 基于人类已使用的知识,如何拓宽知识边界。
  6. 效率:LLM 推理速度慢 / 成本高。

6. Ref