Reflexion

Reflexion

Content #

Reflexion 相比 Reflection,将反思这一步细化后,分成了如下图所示的 Evaluator(评估)和 self-reflection(自我反思)两个部分。图中剩余的另一个大模型 Actor,即为 Reflection 中的 Generator。图中还包含了 Trajectory(轨迹)以及 Experience(经验)两种记忆。

我们来串一下 Relecxion 的流程。

  1. 从 Actor 开始,还是根据用户提问,生成答案,但这次,Actor 继承了 ReAct 的能力,可以与外界环境交互,并观察答案,然后通过 Trajector 模块将对话记录存储在短期记忆,比如内存中。

  2. 之后,Evaluator 和 Self-reflection 模块开始介入,Evaluator 对对话结果做评估,检查答案是否正确。Self-reflection 则汇总评估结果,以及对话内容做总结反思,总结出经验教训后,存储到长期记忆中,比如 Redis 等等数据库。

  3. 等到下次再提类似问题时,可以将经验与问题同时输入给 Actor,这样有了经验做加持,Actor 就会少走弯路。

回到英国伦敦天气的例子,我们套用一下这个思路。假设第一次提问时,Actor 调用了高德地图天气 API,提示无权限,随后又调用墨迹天气 API,返回了伦敦天气阴,19 摄氏度。Evaluator 会验证 19 摄氏度是否准确,避免出现 80 摄氏度的情况。Self-reflection 会总结出:要想查询国外天气,需要调用墨迹天气 API。这样当下次提问美国纽约天气时,Actor 就会直接调用墨迹天气 API。

Viewpoints #

From #

03|Agent的常见推理模式:CoT、ReAct、Reflexion究竟是什么?-AI 重塑云原生应用开发实战-极客时间

Content #

ReAct 一词来自于论文《ReAct: Synergizing Reasoning and Acting in Language Models》,包含 Reason 与 Act 两个部分,其中 Reason 就是大模型推理的过程,其推理运用了 CoT 的思想;Act 是与外界环境交互的动作。

ReAct 发明的初衷是为了解决两个问题,第一,大模型执行的结果不可观测,导致出现“幻觉”;第二,大模型不能与外部环境交互,导致无法回答一些特定垂直领域或者实时问题。

我们先来结合一张图,了解一下 ReAct 的过程。

在最开始,我们输入给大模型一个任务,例如,任务为“请问济南的天气如何?”,同时将天气的 API 工具也输入给大模型。此时大模型会进行推理,得出的结论是需要调用天气预报工具来解决问题。

结合第一节课 Function Calling 相关的知识,我们知道,大模型只能选择工具,工具的执行者是人类。于是人类便开始行动,替大模型执行天气工具,并将得到的结果反馈给大模型。

此时重点来了,大模型会观察人类返回的结果,看看结果是否能满足要求。这里的观察主要是观察工具调用的结果对不对,是否有错误。当然这里指的有错误,是工具调用错误,而不是数据错误,例如工具反馈给大模型,济南的温度是 80℃,大模型是不会认为有问题的。但如果反馈给大模型的是“400 bad request”,则大模型就会认为工具调用出问题了,它会重新推理后,再次尝试调用工具。

如果大模型观察后,认为没问题,则会继续推理,思考是继续调用其他工具解决问题呢,还是答案已经能解决用户提问了呢?如果是前者,则就会继续进入选择工具、调用工具、反馈、观察的步骤;如果是后者,则大模型会直接输出答案。

我用一个连续对话为你整理一下以上过程,方便理解。

user: 济南的天气如何?+ 天气查询 API 工具(get_weather)
assistant: 经过思考,我需要调用get_weather工具

人类调用get_weather工具...

user: Observasion: 400 bad request
assistant: 看起来调用 get_weather 工具出错了,我们尝试再调用一次,我需要调用get_weather工具

人类调用get_weather工具...

user: Observasion: 济南晴,温度80℃
assistant: 我已经得到了最终答案,济南是晴天,温度80℃。

相信看到这里,你已经懂得了 ReAct 的原理了。其实思想非常简单,就是在 CoT 推理方案的基础上,加上工具调用,以及工具结果观察,这样做可以极大地减少幻觉的产生。由于该方案思路简单,效果霸道,在 Agent 应用开发中,使用率非常高。

Viewpoints #

From #

03|Agent的常见推理模式:CoT、ReAct、Reflexion究竟是什么?-AI 重塑云原生应用开发实战-极客时间