阅读原文
1、LLM Agent
自主智能体(Autonomous Agent)长期以来一直被认为是实现通用人工智能(AGI)的一种很有前景的方法,通用人工智能有望通过自主规划和行动来完成任务。LLM Agent 利用大型语言模型作为核心引擎,结合特定策略、任务管理、外部数据和上下文推理,能够执行特定任务或提供自动化服务。
2、Agent 核心构建
对于自主智能体的构建,有两个关键问题:
- 如何设计智能体架构以充分利用 LLM?
- 涉及到如何在智能体的硬件和算法架构中有效地整合LLM的能力
- 如何激发和增强智能体的能力?
- 包括如何通过不同的策略和软件资源,增强智能体在多个任务上的表现
接下来,将从 Agent(智能体) 的构建、应用以及评估方法,系统地总结智能体的构建方法、应用场景和评估策略,并指出未来可能的研究方向。
3、Agent 架构
基于 LLM 的 Agent 架构主要由角色设定模块、记忆模块、规划模块、行动模块构成:
- 角色设定模块: 确定智能体的角色
- 记忆和规划模块: 将智能体置入动态环境中,使其能够回顾过去行为并计划未来行动
- 行动模块: 负责将智能体决策转化为特定输出
3.1、角色设定模块
自主智能体通常通过承担特定的角色来执行任务,比如程序员、教师和领域专家。角色设定模块旨在指明智能体所扮演角色的特征,这些特征通常会被写入提示词中,从而影响 LLM 的行为。智能体的角色特征通常涵盖年龄、性别和职业等基本信息,以及反映智能体个性的心理信息,还有详述智能体之间关系的社会信息。用于设定智能体角色特征的信息的选择,在很大程度上取决于具体的应用场景。在确定了角色特征信息的类型之后,下一个重要的问题就是为智能体创建具体的角色特征,通常采用以下三种策略。
3.1、手工设定
手动指定以设计具有不同个性的智能体,如通过姓名、目标和智能体之间的关系等信息来描述智能体。
3.1.1、LLM 生成
智能体的角色特征基于 LLM 自动生成。通常,指明角色特征生成规则,阐明目标群体中智能体角色特征的构成和属性。然后,可以选择指定几个种子智能体角色特征作为少样本示例。最后,利用 LLM 生成所有智能体的角色特征。
这种方法显著减少了构建智能体角色特征所需的时间和精力。然而,其对生成的角色特征缺乏精确的控制。
3.1.2、数据对齐
将数据集中关于真实人类的信息组织成自然语言提示,然后利用这些信息来配置智能体。数据集对齐方法能够准确捕获真实群体的属性,有效地弥合虚拟世界和现实世界之间的差距。
如:相关研究利用了美国全国选举研究(ANES)的数据,根据参与者的人口统计信息(如种族/民族、性别、年龄、州籍等)为 GPT-3 设定了角色,从而使其能够更好地模拟不同人群的政治观点和行为。
角色设定模块作为 Agent 设计的基础,对 Agent 的记忆、规划和行动过程产生重要影响。结合不同的角色生成策略,利用真实数据反映当前社会,通过手动设定预测未来可能出现的角色,可以更好地利用 Agent 模拟来研究社会现象。
3.2、记忆模块
记忆模块存储从环境中感知到的信息,并利用所记录的记忆来辅助未来的行动。记忆模块可以帮助智能体积累经验、实现自我进化,并以更加连贯、合理和有效的方式行事。
3.2.1、记忆结构
人类的记忆通常遵循这样一个过程:从记录感知输入的感觉记忆,到短暂保存信息的短期记忆,再到长期巩固信息的长期记忆。在设计智能体的记忆结构时,研究人员借鉴了人类记忆的这些方面。具体来说,包括:
- 短期记忆: 受限于 Transformer 架构的上下文窗口的输入信息
- 长期记忆: 根据需要迅速查询和检索的外部向量存储
接下来,介绍基于短期记忆和长期记忆的两种常用记忆结构:
a、统一记忆
模拟人类短时记忆,通常通过上下文学习实现,记忆信息直接写入提示(prompts)。实现短期记忆相对简单,并且可以增强智能体感知近期或对上下文敏感的行为和观察的能力。
然而, LLM 有限的上下文窗口限制了将全面的记忆信息纳入提示词中,这可能会降低智能体的性能。这一挑战需要 LLM 具备更大的上下文窗口以及处理更长上下文的能力。
b、混合记忆
区分了短期和长期记忆,短时记忆部分用于暂时存储最近的感知信息,长时记忆部分用于存储长期积累的知识。短时记忆和长时记忆之间可以进行信息交互,短时记忆的信息可以转化为长时记忆,长时记忆也可以提供信息给短时记忆。
3.3、记忆格式
记忆存储介质的格式有:
- 自然语言: 记忆信息直接用自然语言描述,形式灵活,语义丰富,但计算复杂度高
- Embeddings: 记忆信息编码成嵌入向量,便于高效检索和读取
- 数据库: 记忆信息存储在数据库中,使智能体能够高效且全面地处理记忆
- 结构化列表: 记忆信息组织成列表结构,语义表达高效且简洁,并且可以以一种高效简洁的方式传达记忆的语义。例如:
- GITM 以分层树状结构存储子目标的行动列表。这种分层结构清晰地捕捉到了目标与相应计划之间的关系
- RET-LLM 首先将自然语言句子转换为三元组短语,然后将它们存储在记忆中
3.4、记忆操作
智能体与环境之间的交互通过三个关键的记忆操作来实现,即:记忆读取、记忆写入和记忆反思。
a、记忆读取
记忆读取的目标是从记忆中提取有意义的信息,以改进智能体的行动。例如,利用先前成功的行动来实现类似的目标。记忆读取的关键在于如何从过去的行动中提取有价值的信息。通常,信息提取有三个常用的标准,即新近度、相关性和重要性。更新近、更相关且更重要的记忆更有可能被提取出来。
记忆信息提取的公式:
m ∗ = arg min m ∈ M α s r e c ( q , m ) + β s r e l ( q , m ) + γ s i m p ( m ) m^{*} = \underset{m\in M}{\arg\min} \alpha s_{rec}(q, m) + \beta s_{rel}(q, m) + \gamma s_{imp}(m) m∗=m∈Margminαsrec(q,m)+βsrel(q,m)+γsimp(m)
其中,
- q q q 是查询内容,例如智能体需要处理的任务或智能体所处的情境
- M M M 是所有记忆的集合
- s r e c ( ⋅ ) s_{rec}(·) srec(⋅) 、 s r e l ( ⋅ ) s_{rel}(·) srel(⋅) 和 s i m p ( ⋅ ) s_{imp}(·) simp(⋅) 是用于衡量记忆 m m m 的新近度、相关性和重要性的评分函数
评分函数可以使用各种方法来实现,例如, s r e l ( q , m ) s_{rel}(q, m) srel(q,m) 可以基于局部敏感哈希(LSH)、近似最近邻搜索(ANNOY)、HNSW、FAISS 等来实现。需要注意的是, s i m p s_{imp} simp 仅反映记忆本身的特征,因此它与查询 q q q 无关。 α \alpha α 、 β \beta β 和 γ \gamma γ 是平衡参数。通过为它们赋予不同的值,人们可以得到各种记忆读取策略。例如,通过设置 α = γ = 0 \alpha = \gamma = 0 α=γ=0 ,在记忆读取时仅考虑相关性得分 s r e l s_{rel} srel 。通过设置 α = β = γ = 1.0 \alpha = \beta = \gamma = 1.0 α=β=γ=1.0 ,对上述三个指标赋予相同的权重,以便从记忆中提取信息。
b、记忆写入
记忆写入的目的是将关于所感知到的环境的信息存储在记忆中。在记忆写入过程中,需要解决如何存储与现有记忆相似的信息(即记忆重复)。以及,当记忆达到其存储限制时(即记忆溢出),如何删除信息。
- 记忆重复: 新增信息与已有记忆相似,需要决定是覆盖还是合并
- 例如,与同一子目标相关的成功行动序列被存储在一个列表中。一旦列表的大小达到 N ( = 5 ) N(=5) N(=5),列表中的所有序列就会使用 LLM 压缩成一个统一的计划解决方案。记忆中的原始序列将被新生成的序列所取代
- 记忆溢出 当记忆容量达到上限时,需要决定丢弃哪些旧记忆
- 先进先出(FIFO):丢弃最早存储的记忆
- 基于用户指令显式删除某些记忆
c、记忆反思
记忆反思使 Agent 能够像人类一样通过反思自己的记忆使 Agent 能够独立地总结和推断更抽象、复杂和高阶的信息。
- Generative Agent:智能体根据其最近的记忆生成三个关键问题,问题用于查询记忆以获取相关信息。智能体基于所获取的信息生成五个见解,以反映智能体的高级想法。反思过程可以分层进行,即可以基于现有的见解生成新的见解
- GITM:成功完成子目标的行动被存储在一个列表中。当列表中的元素超过五个时,智能体将它们总结为一个通用且抽象的模式,并替换所有元素
- ExpeL:引入两种方法让智能体进行反思。首先,智能体比较同一任务中成功或失败的轨迹。其次,智能体从一系列成功的轨迹中学习以获取经验
3.3、规划模块
当人类面临复杂任务时,他们首先将其分解为简单的子任务,然后逐一解决每个子任务。规划模块赋予基于 LLM 的智能体具有思考和计划解决复杂任务的能力,这使得智能体更加全面、强大和可靠。
3.3.1、无反馈规划
智能体在采取行动后,不会接收到能够影响其未来行为的反馈。
a、单路径推理
单路径推理将最终任务分解为若干个中间步骤。这些步骤以级联的方式相互连接,每个步骤仅会导向一个后续步骤。LLM 遵循这些步骤来实现最终目标。
- CoT:将解决复杂问题的推理步骤输入到提示词中。这些步骤作为示例,启发 LLM 以逐步推进的方式进行规划和行动。在这种方法中,规划是基于提示词中示例的启发而创建的
- Zero-shot-CoT:用触发短语(如"think step by step")提示 LLM 进行逐步推理,不使用例子
- Re-Prompting:Re-Prompting在生成计划前,检查每个步骤是否满足先决条件。如果步骤不满足条件,给出错误提示并要求LLM重新规划
- ReWOO:将计划生成与外部观察分离,先独立生成计划,再结合观察得到结果
- HuggingGPT:首先将任务分解为多个子目标,然后逐个解决子目标。与一次性产生所有推理步骤的 CoT 和 Zero-shot-CoT 不同,ReWOO 和 HuggingGPT 通过多次递归访问LLMs来产生结果
- SWIFTSAGE:受到人类认知双过程理论的启发,结合 SWIFT 和 SAGE。SWIFT 基于学习到的模式提供快速响应,SAGE 则使用 LLM,通过提出关键问题并生成行动序列来进行深入规划,以确保任务成功完成
b、多路径推理
多路径推理将推理步骤组织成树状结构,每个步骤有多个可能的后续步骤。
- CoT-SC(Self-consistent CoT):采用 CoT 来生成各种推理路径和相应的答案,选择频率最高的答案作为最终输出
- ToT(Tree of Thoughts):使用树状结构的推理方式生成计划,树中的每个节点代表一个 “思维”,对应于一个中间推理步骤。最终规划是使用广度优先搜索(BFS)或深度优先搜索(DFS)策略生成的。与 CoT-SC 一次性生成所有规划步骤的方式不同,思维树需要针对每个推理步骤查询 LLM
- RecMind:设计了一种自我启发机制,规划过程中被丢弃的历史信息也被用来推导出新的推理步骤
- GoT:将思维树中的树状推理结构扩展为图结构,从而产生了更强大的提示策略
- AoT:通过在提示词中纳入算法示例来增强 LLM 的推理过程。只需要查询 LLM 一到几次
- RAP:基于蒙特卡洛树搜索(MCTS)来模拟不同规划的潜在收益,然后通过聚合多次蒙特卡洛树搜索迭代来生成最终规划
c、外部规划器
尽管 LLMs 具有显著的零样本规划能力,但在许多情况下,它们并不如传统的规划器可靠,特别是面对领域特定的规划问题时。将自然语言转换为规划语言,然后交给外部规划器求解。通过这种方式,LLMs 可以专注于生成高层计划,而具体的执行细节由外部规划器处理。
- LLM+P:将任务描述转换为正式的规划领域定义语言(PDDL),然后使用外部规划器来处理规划领域定义语言。最后,LLM 将生成的结果再转换回自然语言
- LLM-DP:利用 LLM 将观察结果、当前世界状态和目标转换为规划领域定义语言。随后,转换后的数据被传递给外部规划器,由其高效地确定最终的行动序列
- CO-LLM:LLM 擅长生成高层次的规划,但在低层次控制方面存在困难。于是,采用了一个启发式设计的外部低层次规划器,以便根据高层次规划有效地执行行动
3.3.2、有反馈规划
在许多现实世界的场景中,智能体需要进行长期规划来解决复杂任务。当面对这些任务时,上述无反馈的规划模块可能效果不佳,原因如下:首先,直接从一开始就生成一个完美无缺的规划极其困难,因为这需要考虑各种复杂的先决条件。因此,仅仅遵循初始规划往往会导致失败。此外,规划的执行可能会受到不可预测的状态转变动态的阻碍,使得初始规划无法执行。
有反馈规划通过设计接收反馈的智能体以根据外部反馈迭代地制定和修改规划,从而处理复杂任务。反馈可以来自环境、人类和模型。
a、环境反馈
环境反馈来自客观世界或虚拟环境,例如,它可以是游戏中的任务完成信号,或者是智能体采取行动后所进行的观察结果。
- ReAct:使用 “思维 - 行动 - 观察” 三元组来构建提示词。“思维” 部分旨在促进高层次的推理和规划,以指导智能体的行为。“行动” 代表智能体采取的特定行动。“观察” 对应于行动的结果,通过外部反馈获得,例如搜索引擎的结果。下一个 “思维” 会受到先前 “观察” 的影响,这使得生成的规划更能适应环境
- Voyager:通过纳入三种类型的环境反馈来制定规划,这些反馈包括程序执行的中间进度、执行错误和自我验证结果。这些信号可以帮助智能体为下一步行动制定更好的规划
- Ghost:将反馈纳入推理和行动过程中。这种反馈包括环境状态以及每个已执行行动的成功和失败信息
- SayPlan:利用从场景图模拟器获得的环境反馈来验证和完善其策略制定。模拟器擅长识别智能体行动后的结果和状态转变,帮助语言规划智能体迭代地重新校准其策略,直到确定一个可行的规划
- DEPS:作者认为仅仅提供任务完成的信息通常不足以纠正规划错误。因此,他们提议向智能体告知任务失败的详细原因,使它们能够更有效地修改规划
- LLM-Planner:引入了一种基于实际情况的重新规划算法,当在任务完成过程中遇到对象不匹配和无法实现的规划时,该算法会动态更新 LLM 生成的规划
- Inner Monologue:在智能体采取行动后,为其提供三种类型的反馈:(1)任务是否成功完成;(2)被动的场景描述;(3)主动的场景描述。前两种反馈是由环境生成的,使得智能体的行动更加合理
b、人类反馈
人类反馈是一种主观信号,可以有效地使智能体与人类的价值观和偏好保持一致,也有助于缓解幻觉问题。
- Inner Monologue:智能体的目标是在 3D 视觉环境中执行高层次的自然语言指令。它被赋予了主动向人类征求关于场景描述反馈的能力。然后,智能体将人类反馈纳入其提示词中,从而能够进行更明智的规划和推理
c、模型反馈
语言模型可以作为批评家,对生成的计划进行批评和改进。即引入自我完善机制,通过迭代反馈和改进来提高 LLM 的输出效果。
- 输出-反馈-完善:智能体生成输出,利用 LLMs 对输出进行反馈,并提供如何完善的指导,最后通过反馈和完善改进输出
- SelfCheck:允许智能体检查和评估其在不同阶段生成的推理步骤,可以通过比较结果来纠正任何错误
- InterAct:使用不同的语言模型作为辅助角色,如检查器和分类器,来帮助主语言模型避免错误和低效的行动
- ChatCoT:利用模型反馈来提高其推理过程的质量。模型反馈是由一个评估模块生成的,该模块会监控智能体的推理步骤
- Reflexion:通过详细的文字反馈来提高智能体的规划能力。智能体首先根据其记忆产生一个行动,评估器以智能体的行动轨迹为输入生成反馈
3.4、行动模块
行动模块负责将智能体的决策转化为具体的结果。该模块处于最下游的位置,直接与环境进行交互。它受到角色设定模块、记忆模块和规划模块的影响。
- 动作目标:动作的预期结果是什么?
- 动作生成:动作是如何产生的?
- 动作空间:智能体可以执行哪些动作?
- 动作影响:动作的执行会带来哪些后果?
3.4.1、动作目标
典型示例:
- 任务完成: 智能体的行动旨在完成特定任务,比如在 Minecraft 中制作铁镐或者在软件开发中完成一个功能
- 交流: 在这种情况下,行动是为了与其他智能体或真实人类进行交流,共享信息或合作
- 环境探索: 智能体的目标是探索陌生环境,扩展自己的感知,并在探索和利用之间取得平衡
3.4.2、动作生成
智能体会通过不同的策略和来源采取行动,两种常用的行动生成策略:
- 记忆回溯生成行动: 行动是通过从智能体记忆中提取信息来生成的,根据当前的任务。任务和提取出的记忆被用作提示来触发智能体的行动
- Generative Agents:智能体维护一个记忆流,并且在每次采取行动之前,它会从记忆流中检索近期、相关且重要的信息,以指导其行动
- GITM:为了实现一个低层次的子目标,智能体查询其记忆,以确定是否存在与该任务相关的成功经验。如果之前已经完成过类似的任务,智能体就会调用之前成功的行动来直接处理当前任务
- ChatDev 和 MetaGPT 等协作智能体:不同的智能体可能会相互交流。在这个过程中,对话中的对话历史会被存储在智能体的记忆中。智能体生成的每一句话都受到其记忆的影响
- 计划跟随生成行动: 智能体根据其预先生成的计划采取行动,对于给定的任务,智能体首先制定行动计划。如果没有信号表明计划失败,智能体将严格遵循这些计划
- GITM:智能体通过将任务分解为许多子目标来制定高层次的规划。基于这些规划,智能体依次采取行动来解决每个子目标,以完成最终任务
3.4.4、动作空间
智能体可以执行的可能行动集合。行动大致分为两类:(1)外部工具,(2)LLMs 内部的知识
a、外部工具
对于那些需要全面专业知识的领域,LLM 可能效果不佳,还可能会遇到幻觉问题。为了缓解上述问题,智能体被赋予了调用外部工具来执行行动的能力。
- 应用程序编程接口(APIs): 智能体利用外部应用程序编程接口作为通用工具,通过集成各种计算能力,系统地扩展了它们的行动空间,并超越了传统语言模型的固有局限性。
- HuggingGPT:集成了抱抱脸(HuggingFace)庞大的模型生态系统,以处理复杂的用户任务
- WebGPT:提出在响应用户请求时,自动生成查询以从外部网页中提取相关内容
- TPTU:探索了 LLM 通过战略性任务规划和基于应用程序编程接口的工具来处理复杂任务的潜力
- Gorilla:引入了一个经过微调的 LLM,为应用程序编程接口调用生成精确的输入参数,缓解使用外部应用程序编程接口时的幻觉问题
- ToolFormer:采用自监督学习来确定何时以及如何调用外部工具,并使用工具应用程序编程接口的示例进行训练
- API-Bank:提供了一个全面的基准测试,其中包含各种应用程序编程接口工具,用于系统地评估工具增强型 LLM,同时还提供了强大的训练数据集,旨在增强它们的集成能力
- ToolL-LaMA:提出了一个工具使用框架,涵盖数据收集、训练和评估,经过微调后的模型在各种应用程序编程接口方面表现出色
- RestGPT:将 LLM 与遵循广泛接受的Web服务开发标准的RESTful API连接起来,使结果程序更兼容现实世界的应用
- TaskMatrix.AI:将 LLM 与广泛的应用程序编程接口生态系统连接起来,以支持任务执行。其核心是一个多模态对话基础模型,该模型与用户交互,理解他们的目标和上下文,然后为特定任务生成可执行代码
- 数据库和知识库: 集成外部数据库或知识库使智能体能够获取特定领域的信息,从而生成更符合现实的行动。
- ChatDB:使用 SQL 语句查询数据库,以逻辑方式辅助智能体的行动
- MRKL 和 OpenAGI:整合了各种专家系统,如知识库和规划器,以访问特定领域的信息
- 外部模型: 先与应用程序编程接口相比,外部模型通常处理更复杂的任务。每个外部模型可能对应多个应用程序编程接口。
- ViperGPT:使用基于 LLM 实现的 Codex 从文本描述中生成 Python 代码,然后执行代码以完成给定的任务
- ChemCrow:基于 LLM 的化学智能体,旨在执行有机合成、药物发现和材料设计等任务。它利用十七个由专家设计的模型来辅助其操作
- MM-REACT:集成了各种外部模型,如用于视频摘要的 VideoBERT、用于图像生成的 X-decoder 和用于音频处理的 SpeechBERT,增强了它在各种多模态场景中的能力
b、内部知识
除了使用外部工具外,许多智能体仅依靠 LLM 的内部知识来指导其行动。LLM 如下几个关键能力可以支持智能体合理有效地行动。
- 规划能力: LLM 可以用作不错的规划器,将复杂任务分解为更简单的任务。即使在提示词中不纳入示例,LLM 的这种能力也可以被触发。
- DEPS:开发了一个《我的世界》智能体,它可以通过子目标分解来解决复杂任务
- GITM 和 Voyager:严重依赖 LLM 的规划能力来成功完成各种任务
- 对话能力: LLM 通常可以生成高质量的对话,使智能体的行为更像人类。智能体可以基于 LLM 强大的对话能力采取行动。
- ChatDev:不同的智能体可以讨论软件开发过程,甚至反思自己的行为
- RLP:智能体可以根据听众对其话语的潜在反馈与他们进行交流
- 常识理解能力: LLM 能够很好地理解人类常识。智能体可以模拟人类的日常生活并做出类似人类的决策。
- Generative Agent:智能体可以准确理解其当前状态、周围环境,并根据基本观察总结出高层次的想法
- RecAgent 和 S3:这些智能体专注于模拟用户的社交行为
3.4.5、动作影响
行动影响是指智能体行动所产生的后果。
- 改变环境: 智能体可以通过行动直接改变环境状态,比如移动位置、收集物品、建造建筑等。
- GITM 和 Voyager:在智能体完成任务的过程中,它们的行动会改变环境。具体来说,当智能体收集资源(例如收获三块木头)时,这些资源会从环境中消失
- 改变内部状态: 智能体采取的行动也可以改变智能体自身,包括更新记忆、制定新计划、获取新知识等
- Generative Agents:在系统内执行行动后,记忆流会被更新
- SayCan:使智能体能够采取行动来更新对环境的理解
- 触发新行动: 在任务完成过程中,一个智能体的行动往往会引发后续行动。
- Voyager:一旦智能体收集到了必要的资源就会触发建筑物的建造
4、Agent 能力获取
在上述章节中,主要关注如何设计智能体架构,以更好地利用大语言模型(LLMs)的能力,使其能够像人类一样完成任务。
架构如同智能体的 “硬件”,然而,仅依靠硬件不足以实现高效的任务执行。这是因为智能体可能缺乏特定任务所需的能力、技能和经验,而这些可被视为 “软件” 资源。下面,将根据策略是否需要对 LLM 进行微调,将智能体能力获取分为两类。
4.1、微调
4.1.1、人工标注
- CoH:将人类反馈转换为自然语言数据,微调 LLM 以符合人类价值观
- RET-LLM:基于人工构建的自然语言三元组数据集微调,以改进语言到记忆的转换
- WebShop:收集真实购物数据,设计交互式场景,微调智能体以实现更好的购物体验
- EduChat:基于教育场景人工标注数据集微调,增强教育功能(开放域问答、论文评估、苏格拉底式教学和情感支持)
4.1.2、LLM 标注
- ToolBench:收集现实世界的 APIs 来提示 ChatGPT 生成多样化的指令,基于获得的数据集,对 LLaMA 进行微调,
- 模拟社交:为了赋予智能体社交能力,作者设计了一个沙盒,并部署多个智能体相互交互。给定一个社交问题,中心智能体首先生成初始响应。然后将响应分享给附近的智能体,以收集他们的反馈。基于反馈以及其详细的解释,中心智能体修改其初始响应,使其更符合社交规范。在这个过程中,作者收集了大量的智能体社交互动数据,然后利用这些数据对 LLMs 进行微调
4.1.3、现实世界数据集
- MIND2WEB:收集多样化的网页数据来微调 LLM,提高其在网络任务上的性能
- SQL-PALM:使用跨领域的大规模文本到 SQL 数据集对 PaLM-2 进行微调
4.2、非微调
在智能体时代,模型的能力可以基于三种策略来获取:
- 模型微调
- 提示(Prompt)工程
- 设计合适的智能体进化机制(机制工程)
4.2.1、Prompt 工程
- CoT:为了赋予智能体复杂任务推理的能力,作者在提示词中展示了中间推理步骤作为少样本示例
- RLP:旨在通过用智能体对自身和听众心理状态的信念来提示 LLM,增强智能体在对话中的自我意识。这种方法产生了更具吸引力和适应性的话语。此外,纳入听众的目标心理状态使智能体能够制定更具战略性的计划
- Retroformer:提出了一种回顾模型,使智能体能够对其过去的失败进行反思。这些反思被整合到 LLM 的提示词中,以指导智能体未来的行动。此外,该模型利用强化学习迭代地改进回顾模型,从而优化 LLM 的提示词
4.2.2、机制工程
机制工程是一个广泛的概念,涉及开发专门的模块、引入新的工作规则和其他策略以增强智能体的能力
- 试错法: 智能体首先执行一个动作,接着调用预定义的评价者来判断该动作。如果该动作被认为不理想,智能体将根据评价者的反馈作出调整
- RAH:智能体在推荐系统中充当用户助手,模拟人类行为并代表用户生成回复。智能体首先生成一个预测回复,然后将其与真实的人类反馈进行比较。如果预测回复与真实的人类反馈不同,评判器就会生成失败信息,随后这些信息会被纳入智能体的下一个行动中
- DEPS:智能体首先设计一个计划来完成给定的任务。在计划执行过程中,如果一个行动失败,解释器会生成具体的细节来解释失败的原因。然后,智能体将这些信息纳入其中,以重新设计计划
- RoCo:智能体首先为多机器人协作任务中的每个机器人提出一个子任务计划和一个 3D 路径点路径。这些计划和路径点会通过一系列环境检查(如碰撞检测和逆运动学)进行验证。如果任何一个检查失败,反馈就会被附加到每个智能体的提示词中,然后开始新一轮的对话。智能体使用 LLM 进行讨论并改进它们的计划和路径点,直到它们通过所有验证
- PREFER:当智能体表现不佳时,利用 LLM 生成详细的反馈,从而实现迭代优化和性能提升
- 众包法: 设计了一种辩论机制,利用群体的智慧来增强智能体的能力。即不同 Agent 对问题提供独立回答,然后根据其他智能体的答案进行迭代和整合,形成共识
- 首先不同智能体对给定问题提供单独的回答
- 如果它们的回答不一致,将提示它们整合其他智能体的解决方案,并提供更新的答案
- 这个迭代过程持续到达成最终共识答案
- 经验积累: Agent通过探索积累经验,并在遇到类似问题时利用这些经验
- GITM:智能体一开始并不知道如何解决任务。在探索过程中,一旦成功完成一项任务,该任务中使用的行动就会被存储到智能体的记忆中。未来,如果智能体遇到类似的任务,就会提取相关的记忆来完成当前任务。在这个过程中,智能体能力的提升来自于专门设计的记忆积累和利用机制
- Voyager:引入了一个技能库,其中特定技能的可执行代码通过与环境的交互得到完善,随着时间的推移能够高效地执行任务
- AppAgent:智能体被设计成以类似于人类用户的方式与应用程序交互,通过自主探索和观察人类演示来学习。在这个过程中构建一个知识库,该知识库可作为在手机上执行各种应用程序中复杂任务的参考
- MemPrompt:要求用户以自然语言提供关于智能体解决问题意图的反馈,这些反馈会被存储在记忆中。当智能体遇到类似的任务时,它会尝试检索相关的记忆,以生成更合适的回复
- 自驱演化: 允许智能体通过自主学习和反馈机制实现自我提升
- LMA3:智能体可以自主设定目标,并通过与环境交互和获得奖励反馈来逐步提升能力
- SALLM-MS:将像 GPT-4 这样的 LLM 集成到多智能体系统中,智能体可以适应并执行复杂任务,展示出先进的通信能力,从而在与环境的交互中实现自主驱动的进化
- CLMTWA:使用一个 LLM 作为教师,一个较弱的语言模型作为学生,教师可以生成并传达自然语言解释,通过思维理论来提高学生的推理技能。教师还可以根据干预的预期效用,为学生个性化地调整解释,并仅在必要时进行干预
- NLSOM:利用智能体之间的自然语言协作,根据反馈动态调整角色、任务和关系,以解决单个智能体能力范围之外的问题
微调方法通过调整模型参数来提升智能体的能力,这种方法可以纳入大量特定任务的知识,但仅适用于开源 LLM。无需微调的方法通常基于精妙的提示策略或机制工程来增强智能体的能力,既可以用于开源 LLM,也可以用于闭源 LLM。然而,由于 LLM 输入上下文窗口的限制,无法纳入过多的任务信息。此外,提示词和机制的设计空间非常大,这使得找到最优解决方案并非易事。
5、领域应用
5.1、社会科学
- 心理学: LLM驱动的智能体模拟实验,提供心理健康支持,并在某些情况下表现出超精准的失真
- 政治科学和经济学: 用于意识形态检测、预测投票模式、理解政治演讲要素以及探索经济行为
- 社会模拟: 用于模拟信息传播、社交网络影响以及人类日常生活等社会现象
- 司法: 辅助法律决策流程,收集多名法官意见,并通过投票机制整合结果
- 研究助手: 帮助研究人员生成摘要、提取关键词、创建脚本以及发现新的研究问题
5.2、自然科学
- 生物学和医学: 用于药物发现、提出假设、进行文献综述和医疗数据分析
- 物理学和化学: 用于科学模拟、预测分子性质、材料发现以及解决量子力学问题
- 环境科学: 应用于气候建模、分析环境数据和模拟生态系统
5.3、工程学
- 计算机科学: 用于代码生成、软件开发、错误修复和API推荐
- 机器人技术与自动化: 辅助机器人控制、路径规划、人机交互和自主导航
- 机械与土木工程: 帮助设计优化、结构分析、故障诊断和基础设施监测
6、评估策略
6.1、主观评估
- 人工标注: 通过人类评价者对不同智能体生成的结果进行评分或排名。例如,通过多个标注者对智能体关联的五个关键问题提供反馈,评估模型的效果
- 图灵测试: 评估人类评价者是否能够区分智能体和真人产生的结果。通过让人类评价者猜测响应是来自人类还是 LLM 智能体,评估智能体的表现
6.2、客观评估
- 指标: 设计合适的指标是客观评估的关键,常见的评估指标包括任务成功率、人类相似性和效率等。
- 协议: 客观评估的另一个重要方面是如何利用这些指标。常用的评估协议包括真实世界模拟、社交评估、多任务评估和软件测试等。
- 基准: 在选择合适的基准进行评估时,人们使用了各种基准,例如仿真环境、多领域任务、社交能力等。
7、挑战
- 角色扮演能力: LLM 通常是基于网络语料库进行训练的,因此对于在网络上很少讨论或新兴的角色,LLM 可能无法很好地模拟它们
- 广义人类对齐: 模拟人类的负面特征可能更加重要,因为模拟的一个重要目标是发现和解决问题,没有负面特征意味着没有问题可解决
- 提示的稳健性: LLM 提示的缺乏稳健性,因为即使微小的改动也可能产生截然不同的结果
- 幻觉问题: 幻觉对 LLM 构成了基本挑战,其中模型错误地自信地输出虚假信息
- 知识边界: LLM 的强大能力并不总是有利的。因为它们是基于超出普通个人范围的广泛网络知识进行训练的。这种巨大的能力可以显著影响模拟的有效性
- 举例来说,当试图模拟用户对各种电影的选择行为时,至关重要的是确保 LLM 假定对这些电影没有先验知识。然而,LLM 可能已经获取了这些电影的信息。如果没有实施适当的策略,LLM 可能会基于其广泛的知识做出决策,尽管现实世界的用户事先无法获取这些电影的内容
- 效率: 由于其自回归架构,LLM 通常具有较慢的推理速度
参考文献
- A Survey on Large Language Model based Autonomous Agents