1. 为什么这篇论文值得你认真读
如果让我用一句最朴素的话解释这篇论文,我会这么说:
LATS 的目标,是让语言模型代理别再“想到啥就一路冲到底”,而是像一个稳健的研究员一样,先比较几条路线,再选更靠谱的一条执行。
很多现有代理方法看起来“会思考”,但在复杂任务里经常出现同一种失败模式:
- 第一步选错方向;
- 后续每一步都建立在错误前提上;
- 中间即使拿到外部反馈,也不会真正改策略;
- 最后输出一个“局部看起来合理、全局其实失败”的结果。
人类做难题通常不是这样。我们更像是:
- 先想几种可能路径;
- 试一条;
- 发现不对就回退;
- 再换一条;
- 对比后再做最终决定。
这篇论文的核心贡献,不是提出一个花哨提示词,而是给出一个统一框架,把三件事放到同一个闭环里:
- Reasoning(推理):模型内部语言思考;
- Acting(行动):与外部环境交互(检索、执行、点击等);
- Planning(规划):用树搜索比较多条未来路径。
更重要的是,它不是只在一个 benchmark 上“偶然涨分”。论文在多个不同类型任务上都展示了收益:
- 多跳问答(HotPotQA)
- 代码生成(HumanEval、MBPP)
- 网页购物决策(WebShop)
- 数学推理(Game of 24)
这说明它更像一个“通用代理架构设计”,而不只是某道题的小技巧。
2. 前置知识:理解这篇论文前需要知道什么
这一节我会尽量不跳步,默认读者几乎没有相关背景。
2.1 什么是“语言模型代理”(LM Agent)
普通语言模型通常是“一问一答”:
- 输入一段文字;
- 输出一段文字。
而代理(Agent)是一个循环过程:
- 读当前状态;
- 先想一下;
- 做一个动作;
- 看外部反馈;
- 再想;
- 再行动。
所以,代理的关键不是“会说话”,而是“会在反馈中迭代决策”。
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 可以理解成一个反复循环:
- 先沿着“看起来比较好”的分支往下走;
- 但也会刻意试一些还没探索够的分支;
- 到达终点后根据结果回传评价;
- 下一轮据此调整搜索重心。
它的核心不是“永远贪心”,而是“在探索与利用之间做平衡”。
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 状态、动作、观察的形式化定义
论文把节点状态定义为:
其中:
- :原始输入任务;
- :已执行动作序列;
- :已收到观察序列。
在 ReAct 实例下,动作空间是:
即:
- 外部可执行动作 ;
- 语言思考轨迹 。
这意味着“思考”和“操作”都可作为搜索树分支的一部分。
5.2 Selection:用 UCT 在树上选点
选择阶段使用 UCT:
- :当前节点价值;
- :节点访问次数;
- :父节点访问次数;
- :探索权重。
最直观地说就是:
- 第一项偏向“当前看起来更好”的分支;
- 第二项偏向“还没怎么探索过”的分支。
这样不容易被“早期偶然看起来不错”的分支绑死。
5.3 Expansion:每步采样多个候选动作
扩展阶段不是只出一个动作,而是采样 个候选。
论文默认常用 。
每个候选动作交给环境执行后,会得到对应观察,形成新的子节点。
为什么这步关键?
因为如果每步只采样 1 个动作,你几乎又回到了“单轨代理”。
多候选采样是“真正有搜索”的起点。
5.4 Evaluation:LM 打分 + 自一致性打分
LATS 的状态价值函数由两部分线性组合:
- :语言模型对该状态的评分;
- :自一致性评分;
- :权重超参数。
这里的亮点是:
- 不额外训练 critic 网络;
- 直接复用大模型做“文本化价值评估”;
- 再用自一致性缓和单次判断噪声。
消融实验也验证了这个设计很关键:去掉 LM heuristic 会显著掉分。
5.5 Simulation:向前模拟直到终止状态
从当前节点继续向下扩展,直到到达终止条件:
- 成功完成任务;
- 或失败结束。
终止状态会提供更客观的成败信息,用于后续回传。
5.6 Backpropagation:把回报回传到路径节点
终止后把奖励沿路径回传,更新各节点价值与访问次数。
直观地说:
- 成功路径上的早期节点会“升值”;
- 失败路径上的早期节点会“降温”。
下一轮选择自然更倾向高价值路径。
5.7 Reflection:失败复盘 + 外部记忆
若终止失败,LATS 触发反思生成:
- 总结失败原因;
- 给出改进建议;
- 将失败轨迹与反思写入外部记忆。
下一次搜索时,这些内容会被注入上下文,帮助规避重复错误。
这一步是“语义级经验复用”,不需要梯度训练,也能形成跨轨迹改进。
6. 为什么 LATS 不是“把 MCTS 和 ReAct 硬拼接”这么简单
一个常见质疑是:
不就是 MCTS + ReAct 吗?
我认为这个质疑只说对了一半。
LATS 的确借用了已有组件,但关键难点在于“适配与整合”,尤其体现在:
- 状态表示不是传统棋盘状态,而是文本历史 + 动作 + 观察 + 反思记忆;
- 价值估计不是训练型 critic,而是 LM 语言评分 + 自一致性混合;
- 外部反馈整合不是简单 append 观察,而是让反馈进入搜索闭环;
- 反思机制让失败信息以可读语义形式复用。
论文里 ToT(ReAct) 与 RAP(ReAct) 的结果不理想,也从反面说明“简单拼接”确实不够。
7. 实验设置
论文覆盖四类任务,分别代表不同代理能力需求。
7.1 HotPotQA
多跳问答,需要检索多段证据并组合推理。
可同时评估:
- 内部推理能力;
- 外部检索行动能力。
7.2 Programming(HumanEval / MBPP)
动作是生成程序;观察是编译与测试反馈。
这类任务反馈信号强、可验证性高,是检验代理规划能力的好场景。
7.3 WebShop
网页购物决策环境,动作包括搜索、点击、筛选、购买。
相比纯问答,这更接近真实在线交互任务。
7.4 Game of 24
纯数学推理任务,用于测试没有复杂外部工具时 LATS 是否仍有收益。
7.5 关键超参数(附录信息)
论文附录给出常用配置:
- 扩展采样数 (默认常用);
- 探索权重 (默认);
- (HotPotQA、Game of 24);
- (Programming、WebShop)。
此外:
- HotPotQA 通常 trajectories;
- Programming 常用 ;
- WebShop 常用 。
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
解读:
- 单纯 CoT 提升有限;
- 搜索型方法明显更强;
- 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
结论很明确:
- LM Heuristic 非常关键(去掉几乎崩);
- 反思有帮助(0.63→0.58);
- 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 搜索超参数
- 采样分支数 ;
- 轨迹预算 ;
- 探索权重 ;
- 深度上限 ;
- 价值函数权重 。
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. 参考文献
- 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.
- Shunyu Yao et al. ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023.
- Shunyu Yao et al. Tree of Thoughts: Deliberate Problem Solving with Large Language Models. NeurIPS 2023.
- Hao et al. Reasoning with Language Model is Planning with World Model. EMNLP 2023.
- Shinn et al. Reflexion: Language Agents with Verbal Reinforcement Learning. NeurIPS 2023.
- Wei et al. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. NeurIPS 2022.
- Wang et al. Self-Consistency Improves Chain of Thought Reasoning in Language Models. ICLR 2023.
- Chen et al. Evaluating Large Language Models Trained on Code. arXiv 2021.
- Austin et al. Program Synthesis with Large Language Models. NeurIPS 2022.
- Yao et al. WebShop: Towards Scalable Real-World Web Interaction with Grounded Language Agents. NeurIPS 2022.
评审写于 2026-04-11。