当前位置:   article > 正文

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

reflexion 推理

如何用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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

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代码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/646727
推荐阅读
相关标签
  

闽ICP备14008679号