所谓 AI Agent,其实就是 LLM(大语言模型)Agent,每次迭代时,它们都会生成自我导向的指令和操作,可以理解成一个能够自动执行任务的「机器人」。由于它可以连接到各种数据源,并通过 API 与环境进行交互,所以这个「机器人」又存在着很多类型,每个类型都有特殊的技能,比如搜索网页、与文档库交互,乃至通过自问自答的方式解决问题。
近期,AI Agent 再度在圈内爆火。
所谓 AI Agent,其实就是 LLM(大语言模型)Agent,每次迭代时,它们都会生成自我导向的指令和操作,可以理解成一个能够自动执行任务的「机器人」。
由于它可以连接到各种数据源,并通过 API 与环境进行交互,所以这个「机器人」又存在着很多类型,每个类型都有特殊的技能,比如搜索网页、与文档库交互,乃至通过自问自答的方式解决问题。
那么,建立这样一个 AI Agent 到底包含了哪些内容,可以提供什么样的能力?
6 月底,OpenAI 的 Safety 团队的负责人 Lilian Weng 发布了一篇 6000 字的博客,详细介绍了 AI Agent,并认为,这将使 LLM 转为通用问题解决方案的途径之一。
本文将根据这篇博客总结一下关于 AI Agent 的相关内容。
-
AI Agent 简介
-
AI Agent 组成部分
-
规划(Planning)
-
记忆(Memory)
-
工具使用(Tool Use)
-
-
规划(Planning)
-
任务分解(Self-Reflection)
-
自我反省(Self-Reflection)
-
-
记忆(Memory)
-
记忆类型
-
最大内积搜索(MIPS)
-
-
工具使用(Tool Use)
AI Agent 简介
所谓 AI Agent,就是一个以 LLM 为核心控制器的一个代理系统。业界开源的项目如 AutoGPT、GPT-Engineer 和 BabyAGI 等,都是类似的例子。
LLM 的潜力不仅仅是生成写得很好的副本、故事、散文和程序;它可以被框架为一个强大的一般问题解决者。
也就是说,AI Agent 本质是一个控制 LLM 来解决问题的代理系统。LLM 的核心能力是意图理解与文本生成,如果能让 LLM 学会使用工具,那么 LLM 本身的能力也将大大拓展。AI Agent 系统就是这样一种解决方案。
以 AutoGPT 为例,一个经典的案例是对大模型输入一个问题:找出一个投资机会。正常情况下,一个 LLM 是无法给出具体的操作的。
而 AutoGPT 的思路,是首先告诉 LLM,这个问题 LLM 一般可以咋解决这个问题,给出几个选择,然后 LLM 会挑选一个方法,可能是浏览雅虎财经,也可能是阅读某个文件,然后 AutoGPT 本身就可以根据选择的结果继续执行,这种执行可能是用谷歌搜索,也可能直接访问某个文件,但这些都是 LLM 无法做到的。
AutoGPT 完成这些任务之后继续带上之前的记录发给 LLM,继续询问新的解决方案。这就是一个简单的 AI Agent 的案例。
AI Agent 组成部分
所谓 AI Agent,就是一个以 LLM 为核心控制器的一个代理系统。业界开源的项目如 AutoGPT、GPT-Engineer 和 BabyAGI 等,都是类似的例子。
那么,为了完成上述能力,实际上一个 AI Agent 系统需要包含几个主要的部分。Lilian Weng 认为一个 AI Agent 系统应当包含如下图所示的几个部分:
1、规划(Planning)
子目标和分解:代理将大型任务分解为更小、易于管理的子目标,从而实现复杂任务的高效处理。
反思和提炼:代理可以对过去的行为进行自我批评和自我反思,从错误中吸取教训,并为未来的步骤改进它们,从而提高最终结果的质量。
2、记忆(Memory)
短期记忆:所有的上下文学习,都是利用模型的短期记忆来学习。
(参见提示工程:https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/)
长期记忆:这为代理提供了在很长一段时间内保留和调用(无限)信息的能力,通常是通过利用外部矢量存储和快速检索。
3、工具使用(Tool Use)
代理学会调用外部 API 以获取模型权重中缺少的额外信息(在预训练后通常难以更改),包括当前信息、代码执行能力、对专有信息源的访问等。
下面,对每个部分进行详细的解释。
规划 Planning
复杂的任务通常涉及许多步骤。AI Agent 需要知道他们是什么,并提前计划。
1、任务分解(Self-Reflection)
任务分解主要是的目的是将复杂的任务分解成简单的小任务,这样 LLM 可以更简单地解决问题。
这里介绍 2 类方法:
1)思维链已成为增强复杂任务模型性能的标准提示技术(Prompt Technology)。大致就是让模型 “一步一步地思考”,利用更多的测试时间计算将困难任务分解为更小、更简单的步骤。CoT 将大型任务转化为多个可管理的任务,并对模型的思维过程进行了阐释。
2)思想树(姚等人 2023 年)通过在每一步探索多种推理可能性来扩展 CoT。它首先将问题分解为多个思维步骤,并每一步生成多个思维,创建一个树结构。搜索过程可以是 BFS(广度优先搜索)或 DFS(深度优先搜索),每个状态都由分类器(通过提示)或多数票评估。
2、自我反省(Self-Reflection)
自我反省是一个重要的方面,它允许 AI Agent 通过完善过去的行动决策和纠正以前的错误来迭代地改进。它在现实世界中发挥着至关重要的作用,在现实世界中,试错是不可避免的。
这里也包含几种方法:
1)ReAct(姚等人 2023 年)通过将动作空间扩展为特定于任务的离散动作和语言空间的组合,将推理和行为集成在 LLM 中。前者使 LLM 能够与环境交互(例如使用维基百科搜索 API),而后者则提示 LLM 以自然语言生成推理跟踪。
2)Reflexion(Shinn & Labash 2023) 是一个为代理配备动态记忆和自我反思能力以提高推理能力的框架。Reflexion 具有标准的强化学习(Reinforcement Learning,RL)设置,其中奖励模型提供简单的二进制奖励,而行动空间则沿用 ReAct 中的设置,即在特定任务的行动空间中加入语言,以实现复杂的推理步骤。每次行动后,AI Agent 会计算一个启发式的值,然后根据自我反思的结果决定重置环境以开始新的试验。
3)Chain of Hindsight(CoH;Liu 等人,2023 年)通过向模型明确展示一系列过去的输出结果,鼓励模型改进自己的输出结果。
记忆 Memory
记忆(Memory),是类似多轮对话中记住之前的输入和设定的一种能力。在当前的大模型架构中,随着对话的增长,要记住之前用户的输入内容再输出需要消耗大量的硬件资源。大多数模型支持的上下文长度都是非常有限的。
超过这个长度之后,大多数模型的性能都会极具下降或者是不支持。但是长上下文是解决实际问题中必须要面对的。如代码生成、故事续写、文本摘要等场景,支撑更长的输入通常意味着更好的结果。
在这里,Lili Weng 先是总结了一下人类的记忆分类总结,然后对应到大模型上分别是什么样的。
1、记忆类型
记忆可以定义为用于获取、存储、保留和检索信息的过程。人类大脑中有几种类型的记忆。
感官记忆(Sensory Memory):这是记忆的最早阶段,能够在原始刺激结束后保留对感官信息(视觉、听觉等)的印象。感官记忆通常只能持续几秒钟。其子类别包括图标记忆(视觉)、回声记忆(听觉)和触觉记忆(触觉)。
短时记忆(Short-Term Memory,STM)或工作记忆:它存储我们当前意识到的信息,以及执行学习和推理等复杂认知任务所需的信息。
长时记忆(Long-Term Memory,LTM):长时记忆可以将信息存储很长时间,从几天到几十年不等,存储容量基本上是无限的。长时记忆有两种亚型:
-
显性/陈述性记忆:这是对事实和事件的记忆,指那些可以有意识地回忆起的记忆,包括外显记忆(事件和经历)和语义记忆(事实和概念)。 -
内隐/程序性记忆:这种记忆是无意识的,涉及自动执行的技能和例行程序,如骑车或在键盘上打字。
-
感官记忆是类似大模型学习原始输入(包括文本、图像或其他模式)的嵌入表征; -
短时记忆可以理解为大模型的上下文学习,类似于 prompt。由于受到 Transformer 有限上下文窗口长度的限制,它是短暂和有限的,但是可以每次输入都引入。 -
长期记忆一般就是大模型之外作为外部向量存储的数据了,AI Agent 可在查询时加以关注,并可通过快速检索进行访问。
工具使用 Tool Use
本文来自硬 AI,原文标题:《AI「未来指南」!OpenAI 安全团队负责人:AI Agent「详细教程」》