AI Agent
Agent 的核心思想是使用语言模型来选择要采取的一系列操作。在 Agent 中,语言模型被用作推理引擎来确定要采取哪些操作以及按什么顺序。相比于传统机械或软件被动的'给予输入——>做出输出'的模式,Agent 由于更加强调自主的发现问题、确定目标、构想方案、选择方案、执行方案、检查更新的特性,因此可以被认为是一类拥有'自主智能的实体',而被广泛称之为智能体。
下文介绍的 Plan/Memory/Tool 三组件只是 Agent 框架一种简单的拆分(参考了 LangChain),除此外还有多种理解 Agent 框架的视角,读者若感兴趣可以自行学习其他 Agent 框架如 Baby Agent、清华大学的 XAgent 等。
Planning 规划
子目标和分解:AI Agent 将大型任务分解为更小的、可管理的子目标,从而能够有效处理复杂的任务。
反思和完善:Agent 可以对过去的行为进行自我批评和自我反思,从错误中吸取教训,并针对未来的步骤进行完善,从而提高最终结果的质量。
Memory 记忆
短期记忆:所有的上下文学习(参见提示工程)都是利用模型的短期记忆来学习。
长期记忆:这为 AI Agent 提供了长期保留和调用无限信息的能力,通常是通过利用外部向量存储和快速检索来实现。在实际应用中,常结合向量数据库(Vector Database)来管理历史对话和知识库内容。
Tool / Toolkit
Agent 学习调用外部 API 来获取模型权重中缺失的额外信息,通常这些信息在预训练后很难更改,包括当前信息、代码执行能力、对专有信息源的访问等。
工具是代理可以调用的功能,本质上就是一个函数。使用工具是 AI Agent 最迷人最先进的特性。
思考框架
CoT
语言智能可以被理解为'使用基于自然语言的概念对经验事物进行'理解'以及在概念之间进行'推理'的能力'。
理解能力上,作为'语言模型'的大模型具备概念理解能力并不难理解,但是仅仅像 Word2vec 一样只能得到'国王'与'男人'的'距离'更近的结论对于语言智能而言必然远远不够。
真正让人惊讶的是大模型在推理上的能力涌现。推理,一般指根据几个已知的前提推导得出新的结论的过程,区别于理解,推理一般是一个'多步骤'的过程,推理的过程可以形成非常必要的'中间概念',这些中间概念将辅助复杂问题的求解。
2022 年,在 Google 发布的论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》中首次提出,通过让大模型逐步参与将一个复杂问题分解为一步一步的子问题并依次进行求解的过程可以显著提升大模型的性能。而这一系列推理的中间步骤就被称为思维链(Chain of Thought)。
CoT 大家应该都比较熟了,使用它的方法很简单:
对于 Zero-Shot,只需要在 Prompt 的结尾加一句:
Let's think step by step
对于 One-Shot 或 Few-Shot,需要在 Prompt 中适当地为大模型提供一些示例。
拓展:CoT 其实也在逐渐进化,出现了各种让大模型进行复杂链路思考的方式,如 ToT (Tree of Thoughts) 等。
ReAct
无论是环境的反馈,还是人类的指令,Agent 都需要完成一个对接收到的信息进行'理解',并依据得到的理解进行意图识别,转化为下一步任务的过程。在前文中之所以介绍 CoT,是因为使用 CoT 可以大大帮助模型对现有输入进行'感知',激活大模型对任务的拆分规划和推理能力。借鉴 CoT,我们可以归纳出基本的 Agent 框架并延伸,ReAct 就是其中之一。
ReAct 引入了一个框架,其中 LLMs 以交错的方式生成 推理轨迹 和 任务特定操作。
生成推理轨迹使模型能够诱导、跟踪和更新操作计划,甚至处理异常情况。操作步骤允许与外部源(如知识库或环境)进行交互并且收集信息。
ReAct 框架允许 LLMs 与外部工具交互来获取额外信息,从而给出更可靠和实际的回应。
结果表明,ReAct 可以在语言和决策任务上的表现要高于几个最先进水准要求的基线。ReAct 还提高了 LLMs 的人类可解释性和可信度。总的来说,作者发现了将 ReAct 和链式思考 (CoT) 结合使用的最好方法是在推理过程同时使用内部知识和获取到的外部信息。
运作机理
ReAct 的灵感来自于'行为'和'推理'之间的协同作用,正是这种协同作用使得人类能够学习新任务并做出决策或推理。
链式思考 (CoT) 提示显示了 LLMs 执行推理轨迹以生成涉及算术和常识推理的问题的答案的能力,以及其他任务。但它因缺乏和外部世界的接触或无法更新自己的知识,而导致事实幻觉和错误传播等问题。
ReAct 是一个将推理和行为与 LLMs 相结合通用的范例。ReAct 提示 LLMs 为任务生成口头推理轨迹和操作。这使得系统执行动态推理来创建、维护和调整操作计划,同时还支持与外部环境 (例如,Wikipedia) 的交互,以将额外信息合并到推理中。


