人人都是产品经理 昨天
AI大模型实战篇:Reflexion,为AI Agent开启强化学习之路
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

前面的文章中,作者分享了一种偏重反思的 AI Agent 设计模式,即 Basic Reflection。但面对复杂度很高的产品时,还有另一种框架可以解决。就是本文介绍的 Reflexion 设计模式。

在文章《AI 大模型实战篇:Basic Reflection,AI Agent 的左右互搏之术》中,风叔结合原理和具体源代码,详细介绍了第一种偏重反思的 AI Agent 设计模式,即 Basic Reflection。Basic Reflection 的思路非常朴素,就是通过左右互搏让两个 Agent 相互进化,实现成本也较低。

但是在实际应用中,Basic Reflection 的 Generator 生成的结果可能会过于发散,和我们要求的结果相去甚远。同时,当面对一些复杂度很高的问题时,Basic Reflection 框架也难以解决。有两种方法来优化 Basic Reflection,一种是边推理边执行的 Self Discover 模式,一种是增加了强化学习的 Reflexion 模式。

上篇文章《AI 大模型实战篇:Self Discover 框架,万万想不到 Agent 还能这样推理》,风叔沿着 " 边推理边执行 " 的优化路线介绍了 Self Discover。这篇文章中,风叔沿着 " 强化学习 " 这条优化路线,详细介绍下 Reflexion 设计模式。

01 Reflexion 的概念

Reflexion 本质上是强化学习,可以理解为是 Basic reflection 的升级版。Reflexion 机制下,整个架构包括 Responder 和 Revisor,和 Basic Reflection 机制中的 Generator 和 Reflector 有点类似。但不同之处在于, Responder 自带批判式思考的陈述,Revisor 会以 Responder 中的批判式思考作为上下文参考对初始回答做修改。此外,Revisor 还引入了外部数据来评估回答是否准确,这使得反思的内容更加具备可靠性。

下图是 Reflexion 的原理:

Responder 接收来自用户的输入,输出 initial response,其中包括了 Response、Critique 和工具指示(示例图中是 Search)

Responder 将 Initial Response 给到执行工具,比如搜索接口,对 Initial Response 进行初步检索

将初步检索的结果给到 Revisor,Revisor 输出修改后的 Response,并给出引用来源 Citations

再次给到执行工具,循环往复,直到循环次数

Revisor 将最终结果输出给用户

02 Reflexion 的实现过程

下面,风叔通过实际的源码,详细介绍 Basic Reflection 模式的实现方法。关注公众号【风叔云】,回复关键词【Reflexion 源码】,可以获取到 Reflexion 设计模式的完整源代码。

第一步 构建 Responder

在下面的例子中,我们先构建一个 Responder

为 Responder 确定 Prompt 模板,并建立一个 Responder。通过 Prompt,我们告诉 Responder," 你需要反思自己生成的答案,要最大化严谨程度,同时需要搜索查询最新的研究信息来改进答案 "。

第二步 构建 Revisor

接下来我们开始构建 Revisor,通过 Prompt 告诉 Revisor

应该使用之前生成的 critique 为答案添加重要信息

必须在修改后的答案中包含引用,以确保答案来源可验证

在答案底部要添加参考,形式为 [ 1 ] https://example.com

使用之前的批评从答案中删除多余的信息,并确保其不超过 250 个字。

第三步构建 Tools

接下来,创建一个节点来执行工具调用。虽然我们为 LLM 赋予了不同的模式名称,但我们希望它们都路由到同一个工具。

第四步构建 Graph

下面,我们构建流程图,将 Responder、Revisor、工具等节点添加进来,循环执行并输出结果。

以上内容就是 Reflexion 的核心思想,其实完整的 Reflexion 框架要比上文介绍的更复杂,包括 Actor、Evaluator 和 self-Reflection 三块,上文的内容只涵盖了 Actor。

参与者(Actor):主要作用是根据状态观测量生成文本和动作。参与者在环境中采取行动并接受观察结果,从而形成轨迹。前文所介绍的 Reflexion Agent,其实指的就是这一块

评估者(Evaluator):主要作用是对参与者的输出进行评价。具体来说,它将生成的轨迹(也被称作短期记忆)作为输入并输出奖励分数。根据人物的不同,使用不同的奖励函数(决策任务使用 LLM 和基于规则的启发式奖励)。

自我反思(Self-Reflection):由大语言模型承担,能够为未来的试验提供宝贵的反馈。自我反思模型利用奖励信号、当前轨迹和其持久记忆生成具体且相关的反馈,并存储在记忆组件中。Agent 会利用这些经验(存储在长期记忆中)来快速改进决策。

关于 Reflexion 完整的实现方案可参考:https://github.com/noahshinn/reflexion

总结

Reflexion 是我们介绍的第一个带强化学习的设计模式,这种模式最适合以下情况:

智能体需要从尝试和错误中学习:自我反思旨在通过反思过去的错误并将这些知识纳入未来的决策来帮助智能体提高表现。这非常适合智能体需要通过反复试验来学习的任务,例如决策、推理和编程。

传统的强化学习方法失效:传统的强化学习(RL)方法通常需要大量的训练数据和昂贵的模型微调。自我反思提供了一种轻量级替代方案,不需要微调底层语言模型,从而使其在数据和计算资源方面更加高效。

需要细致入微的反馈:自我反思利用语言反馈,这比传统强化学习中使用的标量奖励更加细致和具体。这让智能体能够更好地了解自己的错误,并在后续的试验中做出更有针对性的改进。

但是,Reflexion 也存在一些使用上的限制:

依赖自我评估能力:反思依赖于智能体准确评估其表现并产生有用反思的能力。这可能是具有挑战性的,尤其是对于复杂的任务,但随着模型功能的不断改进,预计自我反思会随着时间的推移而变得更好。

长期记忆限制:自我反思使用最大容量的滑动窗口,但对于更复杂的任务,使用向量嵌入或 SQL 数据库等高级结构可能会更有利。

代码生成限制:测试驱动开发在指定准确的输入输出映射方面存在限制(例如,受硬件影响的非确定性生成器函数和函数输出)。

在下一篇文章中,风叔将介绍目前最强大的 AI Agent 设计模式,集多种技术的集大成者,LATS。

本文由人人都是产品经理作者【风叔】,微信公众号:【风叔云】,原创 / 授权 发布于人人都是产品经理,未经许可,禁止转载。

题图来自 Unsplash,基于 CC0 协议。

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

逗玩.AI

逗玩.AI

ZAKER旗下AI智能创作平台

相关标签

ai 准确 源代码
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论