目录
1 Agent介绍
LLM Powered Autonomous Agents
基于大模型的agent系统,LLM在整个agent系统里面起到大脑的作用。agent系统核心框架图如下:
接下来,我们来分别介绍一下这几个核心成分。
1.2 Planning
问题分解(Task Decompositon):Agent将一个复杂的大目标拆分成小的,可执行的子目标。 解决一个复杂的任务通常由多个简单的子任务完成,对问题的分解,通常有如下几种常见的方法:
- Chain of Thought (CoT) 已经成为了一个常见的提高模型在复杂任务表现的一个prompt技术框架。通过"think step by step"来指引模型的思考过程,将复杂任务分解成多个简单的任务进行执行,从而提升模型的表现。
- Tree of Thoughts是对CoT方法的扩展,通过探索对每一个step的多个推理可能。首先将问题分解成多个steps然后对每个step产生多个thoughts,会形成生一个树的结构。搜索过程可以通过BFS(广度优先搜索)或者DFS(深度优先搜索),每个状态的评估可以通过一个构建prompt分类器或者多数投票机制。
任务分解可以通过构建1)通过prompt让大模型进行任务分解,比如我们可以这么设计prompt:完成T任务的步骤是什么;又或者实现T任务的子目标是什么等。2)通过具体任务的指令,比如针对写一篇小说任务,我们可以这么设计prompt: 书写一个小说的提纲。3)人为的构建任务分解
自我反思和更正(Self-Reflection):自我反省让agent可以纠正过去的动作带来的错误。这在实际场景中扮演了重要的角色,因为犯错是不看避免的。根据历史的actions和反馈结果,Agent可以从错误中进行学习,并且进行自我更正,提高最终的效果。
-
ReAct将推理和行动与LLM融合,让大模型可以与环境交换(比如使用一些工具产出的结果等),通过从环境获取的新的信息进行推理。ReAct prompt模板构成如下:
Thought:…
Action:…
Observation:…
… (Repeated many times)
在知识密集型以及决策性任务中,ReAct效果要比只有Act (去除了Thought)的效果要好。 -
Reflexion是一个框架旨在为Agent提供动态记忆和自我反思的能力,以提高推理能力。Reflexion 采用标准的强化学习(RL)设置,其中奖励模型提供简单的二元奖励,操作空间遵循 ReAct 的设置,通过增加语言来支持复杂的推理步骤。每个动作之后,代理都会计算一个启发式方法,并可能根据自我反思的结果决定是否重置环境以开始新的尝试。整体框架图如下:
启发函数(heuristic function) 用于确定轨迹何时无效或包含幻觉并应停止。无效的计划是指在没有成功的情况下花费太多时间的轨迹。幻觉被定义为遇到一系列连续相同的操作,这些操作在环境中导致相同的观察结果。
自我反思是通过向大语言模型(LLM)展示两次示例来创建的,每个示例都是一对(失败的轨迹、指导未来计划变化的理想反思)。然后,将这些反思添加到代理的工作记忆中,最多可以添加三个,以用作查询LLM的上下文。 -
Chain of Hindsight 该方法鼓励模型通过显式呈现过去输出序列(每个都带有反馈注释)来改进其自身的输出。人类反馈数据是一个集合, D h = ( x , y i , r i , z i ) i = 1 n D_h={(x,y_i,r_i,z_i)}_{i=1}^n Dh=(x,yi,ri,zi)i=1n其中x是prompt, y i y_i yi是模型生成的内容, r i r_i ri是人类对 y i y_i yi的评分, z i z_i zi是人类提供的反馈。模型微调后只能在序列前缀的条件下预测 y i y_i yi,以便模型可以根据反馈序列进行自我反思,从而产生更好的输出。模型在测试时可以选择多轮与人类注释者的指令互动。具体细节可以参考原始论文的讲解。
1.3 Memory
记忆可以定义为获取、存储、保持和随后检索信息的过程。人脑中有几种不同类型的记忆,如下:
感觉记忆: 这是记忆的最早阶段,提供在原始刺激结束后保留感觉信息(视觉、听觉等)印象的能力。感觉记忆通常只能持续几秒钟。感觉记忆的子类别包括图像记忆(视觉)、回声记忆(听觉)和触觉记忆(触觉)。
短期记忆: 据信短期记忆的容量约为7个项目(Miller, 1956),持续时间为20到30秒,我们可以理解所有基于context的学习都是利用模型的短期记忆来进行学习,它存储我们当前意识到的信息,并用于执行复杂的认知任务,如学习和推理。
长期记忆: 长期记忆能够存储信息的时间非常长,从几天到几十年不等,并且存储容量基本上是无限的。长期记忆可以给agent提供了较长时间保留和提供信息的能力,通常利用外部向量存储和检索的能力。
1.4 工具的使用
工具的使用是人类一个显著而独特的特征。我们创造、修改和使用外部物体来完成超出我们身体和认知限制的任务。同样,为大语言模型(LLMs)配备外部工具可以显著扩展模型的能力。Agent系统可以调用外部的API接口,获得更多的外部资源和信息,加强系统处理问题的能力。如下是一些目前常见的一些工具集合:
MRKL 是“Modular Reasoning, Knowledge and Language”的简称。这是一个用于自主代理的神经-符号架构。MRKL 系统被提议包含一组“专家”模块,而通用的大语言模型(LLM)则作为路由器,将查询路由到最合适的专家模块。这些模块可以是神经的(例如,深度学习模型)或符号的(例如,数学计算器、货币转换器、天气 API)
TALM (Tool Augmented Language Models) 和 Toolformer 对大语言模型(LM)进行微调,使其学会使用外部工具 API。数据集会根据新添加的 API 调用注释是否能提高模型输出的质量进行扩展。其中ChatGPT插件以及OpenAI的API功能函数功能都是非常好的例子,利用工具加强LLM的能力。
1.5 Agent执行流程
通过对上面agent的基本信息的介绍,Agent系统的基本执行流程和步骤如下:
- Task planing: 大模型作为大脑,用来解析用户的请求,将复杂任务分解成多个简单的任务,然后依次执行每个任务。
- Tool selection: 针对当前的子任务,大模型决策使用什么工具解决,并且生成调用工具需要的参数
- Tool execution: agent框架执行大模型选择的工具,并获得工具产出的结果
- Response generation: 将工具返回的结果融合之前的整个上下文信息给到大模型,大模型会进一步判断当前信息是否解决用户的问题,若解决则生成答案给到用户,若是还不能解决,则重复上述步骤。
1.6 Case Studies
我们可以通过详细补充我们的system prompt,让大模型可以更好的理解任务要求,以及有哪些工具可以供使用,包括工具的作用等,这对于LLM理解任务是十分重要的,比如在AutoGPT 里面,如下就是system message的模板:
You are {
{
ai-name}}, {
{
user-provided AI bot description}}.
Your decisions must always be made independently without seeking user assistance. Play to your strengths as an LLM and pursue simple strategies with no legal complications.
GOALS:
1. {
{
user-provided goal 1