0%

LATS(Language Agent Tree Search):把推理、行动、规划统一到同一个语言模型代理框架里 — 深度技术评审

1. 为什么这篇论文值得你认真读

如果让我用一句最朴素的话解释这篇论文,我会这么说:

LATS 的目标,是让语言模型代理别再“想到啥就一路冲到底”,而是像一个稳健的研究员一样,先比较几条路线,再选更靠谱的一条执行。

很多现有代理方法看起来“会思考”,但在复杂任务里经常出现同一种失败模式:

  • 第一步选错方向;
  • 后续每一步都建立在错误前提上;
  • 中间即使拿到外部反馈,也不会真正改策略;
  • 最后输出一个“局部看起来合理、全局其实失败”的结果。

人类做难题通常不是这样。我们更像是:

  1. 先想几种可能路径;
  2. 试一条;
  3. 发现不对就回退;
  4. 再换一条;
  5. 对比后再做最终决定。

这篇论文的核心贡献,不是提出一个花哨提示词,而是给出一个统一框架,把三件事放到同一个闭环里:

  • Reasoning(推理):模型内部语言思考;
  • Acting(行动):与外部环境交互(检索、执行、点击等);
  • Planning(规划):用树搜索比较多条未来路径。

更重要的是,它不是只在一个 benchmark 上“偶然涨分”。论文在多个不同类型任务上都展示了收益:

  • 多跳问答(HotPotQA)
  • 代码生成(HumanEval、MBPP)
  • 网页购物决策(WebShop)
  • 数学推理(Game of 24)

这说明它更像一个“通用代理架构设计”,而不只是某道题的小技巧。


2. 前置知识:理解这篇论文前需要知道什么

这一节我会尽量不跳步,默认读者几乎没有相关背景。

2.1 什么是“语言模型代理”(LM Agent)

普通语言模型通常是“一问一答”:

  • 输入一段文字;
  • 输出一段文字。

而代理(Agent)是一个循环过程:

  1. 读当前状态;
  2. 先想一下;
  3. 做一个动作;
  4. 看外部反馈;
  5. 再想;
  6. 再行动。

所以,代理的关键不是“会说话”,而是“会在反馈中迭代决策”。

2.2 推理、行动、规划三者到底差在哪

这三个词很容易混。

推理(Reasoning):模型在脑内做文字逻辑。

例如:

  • “A 在 B 东边,B 在 C 里,那么 A 大概率也在 C 的地理范围里。”

行动(Acting):调用外部工具、访问环境、执行命令。

例如:

  • 搜索百科词条;
  • 运行代码单元测试;
  • 在网页上点击购买按钮。

规划(Planning):在执行前(或执行中)比较多条候选路径。

例如:

  • 先搜人名再搜地点?
  • 还是先搜事件再回查人物?

规划的目标是避免“一条路走到黑”。

2.3 为什么“只靠一条思维链”常常在难题上翻车

很多提示方法(如基础 CoT)是按自回归方式一路生成:

  • 第 1 步写出来;
  • 第 2 步依赖第 1 步;
  • 第 3 步依赖第 2 步;
  • ……

一旦前面某步错了,后面会发生误差传播(error propagation)

尤其在以下任务里更明显:

  • 步数多;
  • 分支多;
  • 需要外部证据校验;
  • 中间决策不可随便糊弄。

这正是为什么需要搜索和回退机制。

2.4 什么叫外部环境与外部反馈

这篇论文里的模型,不只是“自己想”。它会与环境交互。

环境可能给出:

  • 检索结果;
  • 代码测试报错;
  • 网页状态变化;
  • 成功/失败奖励。

外部反馈的价值在于:

模型内部知识再强,也不该把所有问题都当成闭卷考试。

当任务本身是开放世界、动态环境时,外部反馈往往是纠错关键。

2.5 什么是树搜索(生活化理解)

想象你在岔路口:

  • 左转、右转、直走都可能到目的地。

如果你永远只选“第一眼看起来顺眼”的路,可能会错过更优路径。

树搜索的思想是:

  • 把每个决策状态当成一个节点;
  • 把每个可选动作当成边;
  • 逐步扩展并比较不同分支。

2.6 MCTS(蒙特卡洛树搜索)到底在做什么

MCTS 可以理解成一个反复循环:

  1. 先沿着“看起来比较好”的分支往下走;
  2. 但也会刻意试一些还没探索够的分支;
  3. 到达终点后根据结果回传评价;
  4. 下一轮据此调整搜索重心。

它的核心不是“永远贪心”,而是“在探索与利用之间做平衡”。

2.7 什么是“探索 vs 利用”

利用(Exploitation):继续走当前最优分支。
探索(Exploration):尝试不确定但可能更优的分支。

只利用会陷入局部最优;只探索会效率低下。

好的搜索算法要做到“稳中有试探”。

2.8 价值函数(Value Function)是什么意思

价值函数就是一个评分器:

这个状态“看起来有多大希望最终成功”?

它不需要 100% 准确,只要能在统计上把“更有希望的状态”排在前面,就能明显提升搜索效率。

2.9 自一致性(Self-Consistency)是什么

如果模型从同一状态采样多次,很多结果都指向同一个候选动作/答案,那么这个候选更值得信任。

这就是自一致性:

  • 不是只信一次采样,
  • 而是看“多次采样是否趋同”。

2.10 自我反思(Self-Reflection)在代理里有什么用

失败后让模型复盘:

  • 错在什么地方;
  • 哪一步决策不合理;
  • 下一次应如何改。

这不是参数训练层面的学习,但在提示上下文里是有用的“语义梯度”。

2.11 为什么“可回退(rollback)”是这篇论文的关键前提

传统强化学习很多环境很难回到中间状态,回退成本高。

但在很多语言任务里,状态本质是文本历史:

  • 你只要恢复对应上下文,就能“回到过去”。

论文强调这一点:

在大量 LM 任务中,回退比想象中容易,这使树搜索在代理场景下更可落地。


3. LATS 具体要解决什么问题

论文对现有方法的不足归纳得很清楚,主要有三类。

问题 1:灵活性不足

CoT/ReAct 这类基础流程常常是单轨生成,缺乏系统化分支比较。

问题 2:对外部反馈利用不充分

纯推理方法(CoT/ToT/RAP)更多依赖模型内部知识,容易出现事实错误与错误传播;而很多行动方法又不做足够的前瞻规划。

问题 3:适应性不足

已有规划方法在“行动环境 + 外部反馈”上往往不能稳定发挥,或者缺乏从失败中持续改进的机制。

所以 LATS 要回答的问题是:

能不能在一个统一框架下,把推理、行动、规划、反思、反馈整合起来,让语言模型代理在复杂任务上更稳健?


4. 方法总览(Figure 1)

Figure 1 给出了最核心的系统图。

LATS 不把语言模型只当“回答器”,而是把它在一个搜索闭环中复用为三类角色:

  • 代理(产生动作/思路)
  • 价值评估器(给状态打分)
  • 反思生成器(失败后总结)

同时引入外部环境反馈,再由 MCTS 负责整体搜索控制。

这个组合的意义在于:

  • 不是仅靠“模型更大”,
  • 而是通过“推理时结构化控制”提升决策质量。

5. 技术细节深挖:LATS 是怎么工作的

下面按论文的六个操作(Figure 2)逐步拆解。

5.1 状态、动作、观察的形式化定义

论文把节点状态定义为:

s=[x,a1i,o1i]s = [x, a_{1\cdots i}, o_{1\cdots i}]

其中:

  • xx:原始输入任务;
  • a1ia_{1\cdots i}:已执行动作序列;
  • o1io_{1\cdots i}:已收到观察序列。

在 ReAct 实例下,动作空间是:

A^=AZ\hat{A} = A \cup Z

即:

  • 外部可执行动作 AA
  • 语言思考轨迹 ZZ

这意味着“思考”和“操作”都可作为搜索树分支的一部分。

5.2 Selection:用 UCT 在树上选点

选择阶段使用 UCT:

UCT(s)=V(s)+wlnN(p)N(s)UCT(s) = V(s) + w \sqrt{\frac{\ln N(p)}{N(s)} }

  • V(s)V(s):当前节点价值;
  • N(s)N(s):节点访问次数;
  • N(p)N(p):父节点访问次数;
  • ww:探索权重。

最直观地说就是:

  • 第一项偏向“当前看起来更好”的分支;
  • 第二项偏向“还没怎么探索过”的分支。

这样不容易被“早期偶然看起来不错”的分支绑死。

5.3 Expansion:每步采样多个候选动作

扩展阶段不是只出一个动作,而是采样 nn 个候选。

论文默认常用 n=5n=5

每个候选动作交给环境执行后,会得到对应观察,形成新的子节点。

为什么这步关键?

因为如果每步只采样 1 个动作,你几乎又回到了“单轨代理”。

多候选采样是“真正有搜索”的起点。

5.4 Evaluation:LM 打分 + 自一致性打分

LATS 的状态价值函数由两部分线性组合:

V(s)=λLM(s)+(1λ)SC(s)V(s) = \lambda \cdot LM(s) + (1-\lambda) \cdot SC(s)

  • LM(s)LM(s):语言模型对该状态的评分;
  • SC(s)SC(s):自一致性评分;
  • λ\lambda:权重超参数。

这里的亮点是:

  1. 不额外训练 critic 网络;
  2. 直接复用大模型做“文本化价值评估”;
  3. 再用自一致性缓和单次判断噪声。

消融实验也验证了这个设计很关键:去掉 LM heuristic 会显著掉分。

5.5 Simulation:向前模拟直到终止状态

从当前节点继续向下扩展,直到到达终止条件:

  • 成功完成任务;
  • 或失败结束。

终止状态会提供更客观的成败信息,用于后续回传。

5.6 Backpropagation:把回报回传到路径节点

终止后把奖励沿路径回传,更新各节点价值与访问次数。

直观地说:

  • 成功路径上的早期节点会“升值”;
  • 失败路径上的早期节点会“降温”。

下一轮选择自然更倾向高价值路径。

5.7 Reflection:失败复盘 + 外部记忆

若终止失败,LATS 触发反思生成:

  • 总结失败原因;
  • 给出改进建议;
  • 将失败轨迹与反思写入外部记忆。

下一次搜索时,这些内容会被注入上下文,帮助规避重复错误。

这一步是“语义级经验复用”,不需要梯度训练,也能形成跨轨迹改进。


6. 为什么 LATS 不是“把 MCTS 和 ReAct 硬拼接”这么简单

一个常见质疑是:

不就是 MCTS + ReAct 吗?

我认为这个质疑只说对了一半。

LATS 的确借用了已有组件,但关键难点在于“适配与整合”,尤其体现在:

  1. 状态表示不是传统棋盘状态,而是文本历史 + 动作 + 观察 + 反思记忆;
  2. 价值估计不是训练型 critic,而是 LM 语言评分 + 自一致性混合;
  3. 外部反馈整合不是简单 append 观察,而是让反馈进入搜索闭环;
  4. 反思机制让失败信息以可读语义形式复用。

论文里 ToT(ReAct) 与 RAP(ReAct) 的结果不理想,也从反面说明“简单拼接”确实不够。


7. 实验设置

论文覆盖四类任务,分别代表不同代理能力需求。

7.1 HotPotQA

多跳问答,需要检索多段证据并组合推理。

可同时评估:

  • 内部推理能力;
  • 外部检索行动能力。

7.2 Programming(HumanEval / MBPP)

动作是生成程序;观察是编译与测试反馈。

这类任务反馈信号强、可验证性高,是检验代理规划能力的好场景。

7.3 WebShop

网页购物决策环境,动作包括搜索、点击、筛选、购买。

相比纯问答,这更接近真实在线交互任务。

7.4 Game of 24

纯数学推理任务,用于测试没有复杂外部工具时 LATS 是否仍有收益。

7.5 关键超参数(附录信息)

论文附录给出常用配置:

  • 扩展采样数 n=5n=5(默认常用);
  • 探索权重 w=1w=1(默认);
  • λ=0.5\lambda=0.5(HotPotQA、Game of 24);
  • λ=0.8\lambda=0.8(Programming、WebShop)。

此外:

  • HotPotQA 通常 k=50k=50 trajectories;
  • Programming 常用 k=8k=8
  • WebShop 常用 k=30k=30

8. 核心结果解读(按图表逐项解释)

8.1 HotPotQA:纯内部推理设置(Table 2)

GPT-3.5 的 Exact Match:

  • Base LM:0.32
  • CoT:0.34
  • CoT-SC:0.38
  • ToT:0.55
  • RAP:0.60
  • LATS (CoT):0.62

解读:

  1. 单纯 CoT 提升有限;
  2. 搜索型方法明显更强;
  3. LATS 在纯推理设置下仍优于 ToT/RAP,说明它并不依赖“必须有外部动作”才生效。

8.2 HotPotQA:带工具行动设置(Table 3)

GPT-3.5 EM:

  • ReAct:0.32
  • ReAct(best of k):0.38
  • Reflexion:0.51
  • ToT(ReAct):0.39
  • RAP(ReAct):0.54
  • LATS(ReAct):0.63
  • LATS(n=10):0.65
  • LATS(CoT+ReAct):0.71

这一组数据非常关键。

特别值得注意的是:

  • ToT(ReAct) 只有 0.39,说明“把 ToT 套在 ReAct 外面”并不自动有效;
  • LATS 系统化整合后能到 0.63/0.71,证明适配设计本身才是关键。

此外,CoT+ReAct 的混合策略表现最好,符合直觉:

  • 先用内部知识推一遍;
  • 不够再调用外部检索补证据。

这是更接近人类问题求解的策略。

8.3 HumanEval:代码生成(Table 4)

GPT-3.5 Pass@1:

  • CoT:46.9
  • ReAct:56.9
  • Reflexion:68.1
  • ToT:54.4
  • RAP:63.1
  • LATS(ReAct):83.8

GPT-4:

  • Base LM:80.1
  • Reflexion:91.0
  • LATS(ReAct):92.7

这里的提升非常硬核,尤其 GPT-3.5 从 68.1(Reflexion)到 83.8(LATS)是一个量级上的进步。

为什么代码任务提升这么明显?

因为代码环境有高质量外部反馈:

  • 编译错误可定位;
  • 测试通过率可量化;
  • 候选程序之间可比较。

这恰好是搜索框架最能发挥价值的场景。

8.4 MBPP:代码任务再验证(Table 5)

GPT-3.5 Pass@1:

  • CoT:54.9
  • ReAct:67.0
  • Reflexion:70.0
  • ToT:65.8
  • RAP:71.4
  • LATS(ReAct):81.1

HumanEval 与 MBPP 双基准都显示同趋势,说明 LATS 在编程任务上的优势并非偶然。

8.5 WebShop:网页交互决策(Table 6)

Prompting 组:

  • ReAct:Score 53.8,SR 28.0
  • ReAct(best of k):59.1,32.0
  • Reflexion:64.2,35.0
  • LATS(ReAct):75.9,38.0

训练组:

  • IL:59.9,29.1
  • IL+RL:62.4,28.7
  • Fine-tuning:67.5,45.0
  • Expert:82.1,59.6

解读要客观:

  • LATS 的平均得分提升很明显(75.9);
  • 成功率也提升(到 38.0),但离专家和强训练方法仍有差距。

这说明 LATS 是“有效增强”,不是“任务已被彻底解决”。

8.6 Game of 24:纯推理数学任务(Table 7)

GPT-3.5 Success Rate:

  • CoT:0.08
  • Reflexion:0.12
  • ToT:0.20
  • RAP:0.40
  • LATS(CoT):0.44

这个结果的意义在于:即便没有复杂外部工具交互,LATS 的搜索+评估结构仍能带来收益。

附录 Table 13 还显示:

  • LATS(CoT, λ=1):0.40
  • LATS(CoT, 默认混合):0.44

说明自一致性分量并非摆设,确实提供增益。

8.7 消融实验:哪些组件真的有用(Table 8)

HotPotQA(ReAct setting):

  • ToT(ReAct):0.39
  • RAP(ReAct):0.54
  • LATS(No LM Heuristic):0.37
  • LATS(DFS):0.42
  • LATS(No Reflection):0.58
  • LATS(ReAct):0.63

结论很明确:

  1. LM Heuristic 非常关键(去掉几乎崩);
  2. 反思有帮助(0.63→0.58);
  3. MCTS 型搜索优于 DFS 替代

附录还给出更多细节:

  • 降低探索权重(w=0.5)会掉分;
  • 深度从 7 降到 4 影响较小;
  • LATS 随迭代增加增长更稳定(Figure 3)。

8.8 复杂度、token 开销与效率分析(Table 9/10)

搜索方法常被质疑“太贵”。论文在这点上给了实证数据。

Table 10(HotPotQA)显示在相同 k 下,LATS 常常以更少扩展节点得到更高性能。

例如 k=50:

  • ToT:性能 0.49,节点 84.05
  • RAP:性能 0.54,节点 70.60
  • LATS:性能 0.61,节点 66.65

k=30:

  • ToT:0.39,47.54
  • RAP:0.50,37.71
  • LATS:0.52,34.12

k=10:

  • ToT:0.34,33.97
  • RAP:0.44,31.53
  • LATS:0.44,28.42

这说明 LATS 的提升并非单纯“暴力展开更多节点”换来的,搜索质量本身有改进。

当然,它仍比简单提示法更耗推理资源,这点必须承认。


9. 我认为这篇论文最有说服力的地方

9.1 跨任务类型的稳定收益

问答、代码、网页、数学都有效,这在代理论文里很难得。

9.2 不是靠某一个“神奇模块”

它的提升来自系统级闭环:

  • 搜索
  • 价值评估
  • 外部反馈
  • 反思记忆

整体一致性强。

9.3 编程结果很硬

HumanEval/MBPP 的提升幅度具有工程意义,不是统计波动级别。

9.4 消融设计扎实

作者展示了“去掉哪块会怎样”,有助于读者识别真正关键组件。

9.5 强调推理时结构(inference-time structure)

它提醒我们:

代理能力不只看模型参数量,也看推理控制结构。


10. 局限性、边界条件与落地风险

10.1 计算成本上升是客观事实

相比 ReAct/Reflexion,LATS 更贵。

适合用于:

  • 错误代价高;
  • 分支选择关键;
  • 有可利用反馈;
  • 延迟预算允许的任务。

10.2 回退假设并非所有环境都满足

很多文本任务可回退,但某些真实系统(强时序、不可逆操作)不一定能轻松重置。

10.3 部分评测设置偏理想化

HotPotQA 使用 oracle 反馈有其合理性,但真实世界反馈常更噪、更弱。

10.4 反思质量受模型与任务影响

论文也提到在 WebShop 里反思可能偏泛化,帮助有限。

10.5 WebShop 仍有明显上限差距

LATS 很强,但与专家水平仍有距离,不能夸大为“通用网页代理已解决”。


11. 可复现实操清单

如果我要认真复现,我会强制记录以下信息。

11.1 模型与提示细节

  • 模型版本与 API 参数;
  • agent prompt / value prompt / reflection prompt;
  • 温度、top-p、停止词;
  • 输出解析规则。

11.2 搜索超参数

  • 采样分支数 nn
  • 轨迹预算 kk
  • 探索权重 ww
  • 深度上限 dd
  • 价值函数权重 λ\lambda

11.3 环境接口

  • HotPotQA 的检索 API 细节;
  • HumanEval/MBPP 的编译与测试执行脚本;
  • WebShop 动作空间映射(参考 Table 12);
  • 成功判定逻辑。

11.4 反思与记忆策略

  • 失败轨迹如何存储;
  • 反思文本保存数量;
  • 长上下文截断策略。

11.5 评测协议

  • 样本子集是否固定;
  • HumanEval 使用 161 还是 164 题;
  • pass@1 计算细则;
  • 多次运行方差。

额外建议:

  • 记录成功轨迹平均 token 消耗与 wall-clock 延迟;
  • 这对真实部署同样重要。

12. 给工程实践者的落地建议

建议 1:复杂任务别只靠“更长提示词”

当任务本身是多分支决策问题时,结构化搜索通常比继续堆 prompt 更有效。

建议 2:外部反馈要进入“决策环”而不只是“上下文”

许多弱代理系统只是把 observation 贴回 prompt。LATS 证明更好的做法是让反馈直接影响搜索选择。

建议 3:把 LM 当可编程评估器使用

让模型参与状态打分(而非只出答案)是很实用的工程范式。

建议 4:低成本经验复用很重要

反思机制不是参数学习,但在迭代任务中能降低重复踩坑概率。

建议 5:根据任务价值选择是否启用 LATS

我建议在以下场景优先用 LATS 类框架:

  • 单次错误成本高(例如代码修复、关键检索、复杂流程决策);
  • 环境反馈信息量大;
  • 任务允许回退重试;
  • 延迟预算可接受。

对简单任务,轻量方法通常更划算。


13. 最终结论

我的结论很直接:

LATS 是当前“代理推理时控制结构”方向里非常有代表性的一篇工作。它最重要的价值,是把推理、行动、规划统一进一个可执行闭环。

它不是完美终局方案:

  • 成本更高;
  • 依赖可回退环境;
  • 反思质量不稳定;
  • 某些评测设置有理想化成分。

但它给出了一个很关键的工程认知转向:

代理能力提升,不一定只靠更大模型;也可以靠更好的推理时结构化控制。

如果你在做代理系统,且遇到“每步都看似合理但整体经常失败”的问题,下一步要改的很可能不是再写一个更长 prompt,而是引入像 LATS 这样的搜索与价值控制机制。

这篇论文最大的价值,就在这里。


14. 参考文献

  1. Andy Zhou, Kai Yan, Michal Shlapentokh-Rothman, Haohan Wang, Yu-Xiong Wang. Language Agent Tree Search Unifies Reasoning, Acting, and Planning in Language Models. ICML 2024. arXiv:2310.04406.
  2. Shunyu Yao et al. ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023.
  3. Shunyu Yao et al. Tree of Thoughts: Deliberate Problem Solving with Large Language Models. NeurIPS 2023.
  4. Hao et al. Reasoning with Language Model is Planning with World Model. EMNLP 2023.
  5. Shinn et al. Reflexion: Language Agents with Verbal Reinforcement Learning. NeurIPS 2023.
  6. Wei et al. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. NeurIPS 2022.
  7. Wang et al. Self-Consistency Improves Chain of Thought Reasoning in Language Models. ICLR 2023.
  8. Chen et al. Evaluating Large Language Models Trained on Code. arXiv 2021.
  9. Austin et al. Program Synthesis with Large Language Models. NeurIPS 2022.
  10. Yao et al. WebShop: Towards Scalable Real-World Web Interaction with Grounded Language Agents. NeurIPS 2022.

评审写于 2026-04-11。