Agent 概念学习

451 阅读4分钟

什么是 Agent

OpenAI的研究员 Lilian 写过一篇博客:《 LLM Powered Autonomous Agents》,将 Agents 定义为:LLM + memory + planning skills + tool use,即大语言模型、记忆、任务规划、工具使用的集合

Overview of a LLM-powered autonomous agent system.

大语言模型 (LLM)是 Agent 的大脑,要求 Agent 具备以下 3 种能力来配合大脑完成任务:

  1. 任务规划(planning skills):对问题进行拆解得到解决路径,既进行任务规划。
  2. 工具使用(tool use):评估自己所需的工具,进行工具选择,并生成调用工具请求。
  3. 记忆(memory):短期记忆包括工具的返回值,已经完成的推理路径;长期记忆包括可访问的外部长期存储,例如知识库

任务规划

  • 子目标 & 拆解(Subgoal and decomposition) :我们处理问题的时候会采用“分治”的思想,将复杂任务拆解成一个个小任务处理。这个在 Agent 的实现中也是一样,一个复杂任务不太可能一次性就能解决的,需要拆分成多个并行或串行的子任务来进行求解,从而提升处理复杂问题的能力。
  • 反思 & 完善(Reflection and refinement) :Agent 能够对过去的行动决策进行自我反思,完善过去的行动决策和纠正以前的错误来迭代改进。ReAct 提示词技术就是很经典的反思和完善过程。结合 ReAct 提示词技术的 Agent 会在执行下一步action的时候,加上 LLM 自己的思考过程,并将思考过程、执行的工具及参数、执行的结果放到 prompt 中,让 LLM 对当前和先前的任务完成度有更好的反思能力,从而提升模型的问题解决能力。

ReAct 的提示模板,大致格式如下:

Thought: ... 
Action: ... 
Observation: ... 
...(重复以上过程)

记忆

记忆可以定义为用于获取、存储、保留以及随后检索信息的过程。人脑中的记忆可以划分为:

  • 感知记忆(Sensory Memory) :这是记忆的最早阶段,提供在原始刺激结束后保留感觉信息(视觉、听觉等)印象的能力。感知记忆通常只能持续几秒钟。子类别包括图像记忆(视觉)、回声记忆(听觉)和触觉记忆(触摸)。感知记忆作为原始输入的学习嵌入表示,包括文本、图像或其他形式。
  • 短期记忆(Short-Term Memory (STM) ) :它存储我们当前意识到的以及执行学习和推理等复杂认知任务所需的信息。
  • 长期记忆(Long-Term Memory (LTM)) :长期记忆可以存储相当长的时间信息,从几天到几十年不等,存储容量基本上是无限的。 LTM 有两种亚型:
    1. 外显/陈述性记忆:这是对事实和事件的记忆,是指那些可以有意识地回忆起来的记忆,包括情景记忆(事件和经历)和语义记忆(事实和概念)。
    2. 内隐/程序性记忆:这种类型的记忆是无意识的,涉及自动执行的技能和例程,例如骑自行车或在键盘上打字。

在 Agent 中进行类比:

  • 感知记忆:最原始的 embedding、文本、图像输入。
  • 短期记忆:可以理解为多轮对话的上下文窗口,受到 Transformer 有限上下文窗口长度的限制,所以尽管对话很长,短期记忆理想情况只保留大模型能够处理的上下文窗口的上限,如果是 first in first out 的模式,则只保留最近的几次对话内容。
  • 长期记忆:可以理解为外置知识库,在 Agent 处理任务的过程中作为额外检索数据的地方。

工具使用

尽管大语言模型在预训练阶段学习了大量的知识,但只能够与大模型“纸上谈兵”,它只会说、不会做,同时也不能回答一些如天气,时间之类的简单问题。Agent 对于工具的使用就是弥补大模型只说不做的缺陷。Agent 可以调用外部 API 来获取模型权重中缺失的额外信息,包括当前时间、地理位置信息、代码执行能力、对专有知识库的访问等。


Agent 的工作机制

  1. 【接收任务】用户提交任务给 Agent。
  2. 【组装提示词】Agent 收到用户提交的任务之后,对输入信息进行架构处理合并为最终的 prompt。
  3. 【与大模型交互】Agent 将处理后的 prompt 提交给 LLM,拿到下一步需要执行的动作和思考过程。
  4. 【循环执行】Agent 会执行 LLM 返回的 Action、观察评估结果、获取下一步 Action。执行的工程中会自主的判断是否需要使用工具来处理 Action 或者获取额外的信息。

参考资料

  1. LLM Powered Autonomous Agents | Lil'Log (lilianweng.github.io)
  2. [2210.03629] ReAct: Synergizing Reasoning and Acting in Language Models (arxiv.org)