🚀 在我们的新课程中掌握提示工程和构建 AI 智能体!使用 PROMPTING20 享受 20% 折扣 ➜ 立即报名
LLM 智能体

LLM 智能体

基于 LLM 的智能体,以下简称 LLM 智能体,是指利用结合了 LLM 与规划、记忆等关键模块的架构,能够执行复杂任务的 LLM 应用。在构建 LLM 智能体时,LLM 充当主控制器或“大脑”,控制完成任务或用户请求所需的操作流程。LLM 智能体可能需要规划、记忆和工具使用等关键模块。

为了更好地说明 LLM 智能体的用处,假设我们想构建一个系统来帮助回答以下问题

2023 年美国人均每日卡路里摄入量是多少?

上面的问题可能可以直接使用一个已经具备所需知识的 LLM 来回答。如果 LLM 没有相关的知识,可以使用简单的 RAG 系统,其中 LLM 可以访问健康相关的信息或报告。现在,让我们给系统一个更复杂的问题,如下所示

过去十年中,美国成年人日均卡路里摄入量的趋势如何变化,这可能对肥胖率产生什么影响?此外,您能否提供此期间肥胖率趋势的图表表示?

要回答这样的问题,仅使用 LLM 是不够的。您可以将 LLM 与外部知识库结合形成 RAG 系统,但这可能仍然不足以回答上述复杂查询。这是因为上述复杂问题需要 LLM 将任务分解为子部分,这些子部分可以使用工具和操作流程来解决,从而得出所需的最终响应。一个可能的解决方案是构建一个 LLM 智能体,该智能体可以访问搜索 API、健康相关出版物以及公共/私人健康数据库,以提供与卡路里摄入量和肥胖相关的有用信息。

此外,LLM 需要访问一个“代码解释器”工具,该工具可以获取相关数据以生成有用的图表,帮助理解肥胖趋势。这些是假设的 LLM 智能体可能的高级组件,但仍有一些重要的考虑因素,例如制定解决任务的计划以及可能访问记忆模块,该模块帮助智能体跟踪操作流程的状态、观察结果和总体进度。

🎓

在我们的新 AI 课程中了解更多关于基于 LLM 的智能体和高级提示方法。立即加入!(在新标签页中打开)

使用代码 PROMPTING20 额外享受 20% 折扣。

LLM 智能体框架

"LLM Agent Framework"

一般来说,LLM 智能体框架可以包含以下核心组件

  • 用户请求 - 用户的问题或请求
  • 智能体/大脑 - 作为协调者的智能体核心
  • 规划 - 协助智能体规划未来行动
  • 记忆 - 管理智能体过去的行动

智能体

具有通用能力的大型语言模型 (LLM) 作为系统的主体大脑、智能体模块或协调者。这个组件将使用一个提示模板来激活,该模板包含关于智能体如何操作以及它可以访问哪些工具(以及工具细节)的重要信息。

虽然不是强制性的,但可以为智能体进行画像或分配一个角色来定义其作用。这种画像信息通常写在提示中,可以包括诸如角色细节、个性、社交信息和其他人口统计信息等具体细节。根据 [Wang et al. 2023],定义智能体画像的策略包括手工制作、LLM 生成或数据驱动。

规划

无反馈规划

规划模块有助于将智能体为回答用户请求而需要单独解决的必要步骤或子任务分解开来。这一步骤对于使智能体更好地对问题进行推理并可靠地找到解决方案至关重要。规划模块将利用 LLM 分解详细计划,其中将包含帮助解决用户问题的子任务。流行的任务分解技术包括 思维链(Chain of Thought)(在新标签页中打开)思维树(Tree of Thoughts)(在新标签页中打开),它们分别可以归类为单路径推理和多路径推理。下图比较了 Wang et al., 2023(在新标签页中打开) 中形式化的不同策略

"LLM Agent Planning"

有反馈规划

上述规划模块不包含任何反馈,这使得实现长期规划以解决复杂任务具有挑战性。为了应对这一挑战,可以利用一种机制,使模型能够根据过去的行为和观察结果迭代地反思和完善执行计划。目标是纠正和改进过去的错误,这有助于提高最终结果的质量。这在复杂现实世界的环境和任务中尤其重要,在这些环境中,试错是完成任务的关键。这种反思或批评机制的两种流行方法包括 ReAct(在新标签页中打开)Reflexion(在新标签页中打开)

例如,ReAct 结合了推理和行动,旨在通过在一系列步骤(重复 N 次)之间交替进行,使 LLM 能够解决复杂任务:ThoughtActionObservation。ReAct 以观察结果的形式接收来自环境的反馈。其他类型的反馈可以包括人类反馈和模型反馈。下图展示了 ReAct 的一个示例以及执行问答所涉及的不同步骤

"ReAct Agent"

在此了解更多关于 ReAct 的信息

记忆

记忆模块有助于存储智能体的内部日志,包括过去的思考、行动和来自环境的观察,以及智能体与用户之间的所有交互。在 LLM 智能体文献中报告了两种主要的记忆类型

  • 短期记忆 - 包括关于智能体当前情况的上下文信息;这通常通过上下文学习实现,这意味着由于上下文窗口的限制,它是短暂且有限的。
  • 长期记忆 - 包括智能体在较长时间内需要保留和回忆的过去行为和思考;这通常利用可通过快速且可扩展的检索访问的外部向量存储,以便在需要时为智能体提供相关信息。

混合记忆结合了短期记忆和长期记忆,以提高智能体进行远程推理和经验积累的能力。

在构建智能体时,还需要考虑不同的记忆格式。代表性的记忆格式包括自然语言、嵌入、数据库和结构化列表等。这些也可以组合使用,例如在 Minecraft 中的幽灵(GITM(在新标签页中打开))中,它利用键值结构,其中键由自然语言表示,值由嵌入向量表示。

规划和记忆模块都使智能体能够在动态环境中运行,并使其能够有效地回忆过去的行为和规划未来的行动。

工具

工具对应于一组工具,使 LLM 智能体能够与外部环境交互,例如 Wikipedia 搜索 API、代码解释器和数学引擎。工具还可以包括数据库、知识库和外部模型。当智能体与外部工具交互时,它通过工作流程执行任务,这些工作流程协助智能体获取观察结果或必要信息以完成子任务并满足用户请求。在我们最初的健康相关查询中,代码解释器就是一个工具示例,它可以执行代码并生成用户请求的必要图表信息。

LLM 以不同方式利用工具

"HuggingGPT"

LLM 智能体应用

"ChemCrow" ChemCrow 智能体,旨在完成有机合成、药物发现和材料设计等任务。图源:Bran et al., 2023

在本节中,我们将重点介绍基于 LLM 的智能体由于其复杂的推理和常识理解能力而被有效应用的领域和案例研究。

值得关注的基于 LLM 的智能体

LLM 智能体工具

"AutoGen" AutoGen 功能;图源:https://msdocs.cn/autogen(在新标签页中打开)

以下是用于构建 LLM 智能体的值得关注的工具和框架示例

LLM 智能体评估

"" AgentBench 基准,用于评估 LLM 作为智能体在现实世界挑战和 8 个不同环境中的表现。图源:Liu et al. 2023

与评估 LLM 本身类似,评估 LLM 智能体也是一项具有挑战性的任务。根据 Wang et al., (2023) 的研究,常见的评估方法包括

挑战

LLM 智能体仍处于起步阶段,因此在构建它们时仍然存在许多挑战和限制

  • 角色扮演能力:基于 LLM 的智能体通常需要适应一个角色才能在特定领域有效完成任务。对于 LLM 不擅长刻画的角色,可以对代表不常见角色或心理特征的数据进行 LLM 微调。
  • 长期规划和有限的上下文长度:跨越漫长历史进行规划仍然是一个挑战,可能导致智能体无法恢复的错误。LLM 支持的上下文长度也有限,这可能会限制智能体的能力,例如利用短期记忆。
  • 广义人类对齐:将智能体与多样化的人类价值观对齐也具有挑战性,这在标准 LLM 中也很常见。一个潜在的解决方案涉及通过设计高级提示策略来重新对齐 LLM 的可能性。
  • 提示的鲁棒性和可靠性:LLM 智能体可能包含多个旨在为记忆和规划等不同模块提供动力的提示。LLM 中常见的问题是即使对提示做最微小的更改也可能导致可靠性问题。LLM 智能体涉及整个提示框架,这使得它更容易出现鲁棒性问题。潜在的解决方案包括通过试错精心设计提示元素,自动优化/调优提示,或者使用 GPT 自动生成提示。LLM 的另一个常见问题是幻觉,这在 LLM 智能体中也很普遍。这些智能体依赖自然语言与外部组件交互,这可能会引入冲突信息,导致幻觉和事实性问题。
  • 知识边界:类似于可能导致幻觉或事实性问题的知识不匹配问题,控制 LLM 的知识范围具有挑战性,这可能会显著影响模拟的有效性。具体来说,LLM 的内部知识可能会引入偏见或利用用户未知的知识,从而影响智能体在特定环境中运行时的行为。
  • 效率:LLM 智能体涉及大量由 LLM 处理的请求,这可能会影响智能体行动的效率,因为它很大程度上取决于 LLM 的推理速度。部署多个智能体时,成本也是一个问题。

参考文献