Agent之推理模式:Reflection、Reflexion、LATs

如何用LangGraph构建3种反思机制

反思的定义:LangChain博客的介绍说是一种用来提供Agent质量和成功率的prompt策略

归根结底,核心还是prompt的设计。用额外的计算来获得更好的输出质量,这点有点像CoT和ToT的设计。但与之不同的是,CoT和ToT是和LLM单轮的交互,而Reflection一般是和LLM多轮的交互(封装在Agent框架当中),尽管看起来和人类的交互是单轮的。

Simple Reflection 简单的反思

结构图
组成结构:两个LLM分别扮演生成器(尝试直接响应用户的需求)和反射器(扮演老师的角色,对最初的反应提出批评)。

逻辑:通过两个LLM的多轮交互,得到一个比生成器最初的响应要好一些的响应给到人类,处在人类的角度,只接收了一次系统的回复。

当然,上图的流程因为不基于任何外部过程,最终结果可能不会比原始结果好得多。

以下是围绕这个的一点个人看法:

实际实现时,两个LLM可以用同一个大模型服务来替代,只需要给到不同的输入prompt即可,甚至说用一个system prompt也可以。

比如下面的例子,定义清楚 Thought、Action、Observation分别的含义,然后写清逻辑(repeat Thought/Action/Observation N times)即可。

from langchain import hub
prompt = hub.pull("hwchase17/structured-chat-agent")
print(prompt.messages[0].prompt.template)

Respond to the human as helpfully and accurately as possible. You have access to the following tools:

{tools}

Use a json blob to specify a tool by providing an action key (tool name) and an action_input key (tool input).

Valid "action" values: "Final Answer" or {tool_names}

Provide only ONE action per $JSON_BLOB, as shown:

``
{{
  "action": $TOOL_NAME,
  "action_input": $INPUT
}}
``

Follow this format:

Question: input question to answer
Thought: consider previous and subsequent steps
Action:
``
$JSON_BLOB
``
Observation: action result
... (repeat Thought/Action/Observation N times)
Thought: I know what to respond
Action:
``
{{
  "action": "Final Answer",
  "action_input": "Final response to human"
}}

Begin! Reminder to ALWAYS respond with a valid json blob of a single action. Use tools if necessary. Respond directly if appropriate. Format is Action:``$JSON_BLOB``then Observation

Reflexion 反射

与上面的Simple Reflection最大的区别是,对每个响应的批评建立在外部数据的基础上。这里的外部数据,可以是Tool提供的,也可以是RAG引入的context等。如此看来,带有Tools的Agent可以算是Reflexion机制的实现。

如下图所示,step2当中Responder响应者的任务是 生成响应以及搜索查询形式或者其他形式的 操作。然后step3当中执行Tools得到结果(Observation)后,给到Revisor修订者来反思(Thought)当前状态。

这种方法有效利用外部Tools和反思来提供最终回应的质量。同时因为执行的轨迹较为固定,可能存在错误传递、影响最终结果。总体效果比Simple Reflection要优,是实现Agent的基本框架。
Reflextion Actor Overview

LATS:Language Agents Tree Search

结合了 reflection/evaluation、search(蒙特卡洛树搜索) 来实现更好的任务性能。 比 ReAct、Reflexion、ToT更优。

我认为重点在于 蒙特卡洛树搜索的应用。其次是 它采用标准的强化学习(RL)任务框架,将RL代理、价值函数和优化器都替换为对一个大型语言模型(LLM)的调用。目的是帮助 Agent 适应并解决复杂任务,避免陷入重复的循环中。

Language Agents Tree Search

搜索过程的4个步骤:

a.选择:根据下面第(2)步中累计的奖励来选择最佳的下一步行动。如果找到了解决方案或达到了最大搜索深度就做出回应,否则继续搜索。

b.展开并模拟:生成N个(在我们的案例中是5个)潜在的行动方案,并且并行执行它们。

c.反思+评估:观察这些行动的结果,并基于反思(可能还包括外部反馈)对决策进行打分。

d.反向传播:根据结果更新根路径的分数。

LATS的优点:LATS将其他代理架构的推理规划反思组件统一起来,如Reflexion思维树(Tree of Thoughts)计划执行代理(plan-and-execute agents)。LATS还来自于基于反思和环境反馈的反向传播,用于改进搜索过程。虽然它对奖励分数比较敏感,但通用算法可以灵活地应用于多种任务。

三种Agent架构比较

这块有点没看明白 ==! 后面看懂了再继续更新

LATS代码

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值