Tree of Thoughts 思维树:什么时候值得增加模型调用?
Tree of Thoughts(思维树)通过生成分支、评估中间状态和剪枝,让应用在答案完成前调整解题路径。本文结合 24 点游戏,解释思维树与思维链、自一致性的区别,拆解模型调用预算,并说明评估器、控制器和最终校验如何配合,帮助开发者判断何时值得增加搜索,何时先用推理模型就已足够。
发布于

Tree of Thoughts(思维树)提示方法是否值得增加模型调用,关键在于:能否在解答完成之前,判断中间方案的好坏。按下文的示例预算,一次小规模搜索就会把 1 次调用的基线方案变成 21 次调用。先测试推理模型的基线表现,只在搜索确实能解决的失败案例上增加分支。
来源核验于 2026 年 10 月 24 日。 下文的基准测试结果均来自 Shunyu Yao 及其合作者的 2023 年原始论文。文中的分支演示和模型调用预算用于解释机制,是示例推算,并非已报告的生产环境结果。
Tree of Thoughts 思维树如何搜索解题路径?
Tree of Thoughts(ToT,思维树)让应用能够比较尚未完成的解答,并决定哪些值得继续探索。大语言模型(LLM)提出下一步,评估器判断由此得到的状态,再由搜索程序决定保留、扩展或放弃哪些状态。Yao 等人于 2023 年 5 月提出这一框架。原论文的方法部分。
可以把它想成在一栋楼里规划路线:走到岔路口时,先查看几条走廊,再决定往哪走。已经堵死的走廊不该继续耗费精力;看起来可行的路线则可以先保留,同时探查其他方向。它的价值在于趁改道的代价还低,及时调整方向。
这里的**思维单元(thought)**是有意义的一段中间成果,可以是一条算式、一个候选填字答案,也可以是一份写作计划。**状态(state)**则记录原始问题和当前的部分解答。思维单元既要足够完整,能够接受评估,又要足够小,让尝试其他方案仍有意义。
整个循环有三个明确的操作:
- **分支生成:**从当前状态出发,提出不同的下一步。
- **评估:**检查每个新状态是否满足约束,以及它是否有望通向有效答案。
- **剪枝:**停止扩展被否决的状态,把剩余预算用在更有希望的候选方案上。
论文将这些操作与广度优先搜索和深度优先搜索结合使用。前者在同一层保留有希望的候选状态,后者沿一条分支向下探索,失败时可以回溯。应根据任务选择搜索方式,两种方式都不需要训练新模型。框架与搜索算法。
对开发者而言,核心变化是应用能够控制中间阶段的备选方案。仅仅要求模型表现得更善于思考,并不能赋予应用这种控制能力。
思维链与思维树有什么区别?
两者的区别在于比较备选方案的时机:是在解答尚未完成时比较,还是等完整答案生成后再比较。
这一区别来自 Yao 等人的背景与方法说明。标准的自一致性方法会采样完整的推理链,并选择出现次数最多的答案。它需要能够合理判断哪些答案等价;对不受格式约束的文本投票,比对数值结果投票更难直接处理。
思维链提示有助于表达中间过程。自一致性增加的是完整尝试之间的多样性。ToT 则增加了一个控制器,可以在付出完成整条路径的成本之前,先停掉较弱的路线。但控制器也带来了新的失败方式:把原本能够成功的路线剪掉。
另外两种相关技术解决的是不同问题。少样本提示通过示例说明所需行为或输出格式,因此能帮助生成器或评估器遵守约定。提示链则把多个阶段串起来,例如先提取事实,再起草回复。固定的阶段序列只有在保留备选方案、并决定探索哪些方案时,才构成搜索。
选择能解决当前问题的最简单结构。格式不一致,就补充更清楚的示例或校验;缺少证据,就加入检索。这些问题本身都不意味着需要一棵搜索树。
用一个例子看懂分支、评估与剪枝
中间算式即使算对了,也可能走进死路。评估器必须能分清这两件事。
以论文中的 24 点游戏为例:用 4、9、10 和 13 这几个数,每个数恰好用一次,通过基本四则运算得到 24。下面的过程是为演示机制而构造的,并非模型对话实录。哪些状态有解、哪些无解,已经通过枚举剩余运算组合检查过。论文中的示例输入。
从初始状态生成分支
候选 A 计算
4 + 9 = 13,剩余数值为10, 13, 13。候选 B 计算
13 - 9 = 4,剩余数值为4, 4, 10。两种计算都符合规则。重复出现的数字代表各自独立的剩余数值,状态中必须保留它们各自的数量。
评估生成的状态
候选 A 即使把剩余数值各用一次,进行加、减、乘、除,也无法得到 24,因此将其剪枝。
候选 B 存在有效的后续步骤:用 10 减去其中一个剩余的 4,再乘以另一个 4,因此将其保留。
这个例子采用精确的算术检查,让判断依据可以核验。论文中的搜索使用的是模型给出的价值估计,这种估计可能出错。
扩展保留下来的分支
从
4, 4, 10出发,可以计算4 + 4 = 8,剩下8, 10;也可以计算10 - 4 = 6,剩下4, 6。第一种状态无法用剩余的一次运算得到 24。第二种可以:
4 × 6 = 24。保留这条路径,再核验完整表达式。检查最终答案
(13 - 9) × (10 - 4) = 24恰好使用了每个原始数字一次,计算结果也达到目标。结果通过任务检查,搜索随之结束。

对这样的小型算术题,穷举求解器就能完成全部工作,加入 LLM 只是增加不必要的工程复杂度。这个例子是为了说明循环机制。在实际应用中,常见的有效分工是:由模型提出可能可行的计划,再由代码检查那些不应让模型猜测的约束。
思维树论文报告了哪些结果?
原论文的结果表明,在作者选择的任务上,有计划的搜索确实带来了帮助。但这些结果不能直接说明,当前的生产工作负载能获得多大提升。
在 24 点游戏任务上,作者用 100 道相对较难的题测试了 GPT-4。实验于 2023 年 5 月进行。表 2 报告的成功率如下:
搜索宽度指保留的状态数,不是模型调用次数。 生成候选方案和评估候选方案都需要额外工作。在 24 点游戏的配置中,作者对每个候选状态的价值进行了三次采样。实验设置。
论文还研究了创意写作和迷你填字游戏。这些任务各不相同,评估方法也不同。实际能得出的结论比“ToT 让模型变得更强”要窄:当中间方向的选择很重要,而且能够评估时,搜索可能有帮助。开发者在加入控制器之前,仍需要用自己的工作负载验证效果。
增加分支会多出多少次模型调用?
生成、评估和最终输出应分开计数。评估器消耗的调用次数,可能比候选生成器还多。
下面用一个有边界的搜索示例来算账,它独立于论文中的配置。这里的一次调用,指应用发出的一次模型请求。假设每个父节点只发出一次提案请求,就能生成它的全部子节点;每个子节点则分别调用模型进行评估。搜索到指定深度后停止,不重试,也不提前退出,最后再调用一次模型生成回复。
每个被扩展的父节点生成三个子节点,每层结束后保留两个状态,共扩展三层。各层需要扩展的父节点数依次为 1、2 和 2。因此:
- 生成:
1 + 2 + 2 = 5次调用。 - 评估:
3 × (1 + 2 + 2) = 15次调用。 - 最终回复:
1次调用。 - 合计:
5 + 15 + 1 = 21次调用,相当于 1 次调用基线的 21 倍。
如果每个候选方案都重复评估三次,同一棵树就需要 5 + 45 + 1 = 51 次调用。如果把每层的所有候选评估合并为一次请求,则变成 5 + 3 + 1 = 9 次调用。合并评估会改变评估器的上下文和判断条件;它是一种实现选择,并不保证质量相同。
作为对照,如果自一致性方法分别请求五个样本,再由确定性代码完成最终投票,就需要五次模型调用。额外引入模型裁判会增加调用次数,也会改变这一比较。
通用的计数公式是 C = Σ nₜ(g + kv) + f。其中,nₜ 是第 t 层被扩展的父节点数,g 是每个父节点的生成请求数,k 是每个父节点的子节点数,v 是每个子节点的评估请求数,f 是最终输出请求数。这个公式假设各子节点分别评估;采用批量评估时,应直接按合并后的请求数计算。
如何在 LLM 应用中控制思维树搜索?
把搜索状态和停止规则放在应用代码中管理。让模型提出和评估范围明确、能够检查的中间产物。
这套架构的瓶颈是评估器的判断质量。如果评估器分不清可行的部分解答和看似有说服力的死路,扩展更多分支,只会增加它选错的机会。
定义可以检查的状态
以带约束的排程功能为例,状态可以包括已分配任务、剩余任务、已占用时段和尚未满足的约束。把下一步思维单元定义为一项拟议的任务分配,并分别存储状态、候选标识符、父节点标识符和依据。
选择在当前阶段就能检查的产物。如果只是笼统地写一段“这个策略很好”,就很难可靠地判断是否应该剪枝。
明确生成器和评估器各自的职责
给生成器的指令可以是:“根据当前状态,提出不同的下一步分配方案。返回每个候选方案的分配内容和更新后的状态。遵守所列约束。”
给评估器的指令可以是:“逐一检查候选方案是否满足约束。返回候选标识符、违反的约束,以及后续是否可行、尚不确定或已无可能。引用支持判断的状态字段。”
对于时段重叠、必填字段缺失等规则,优先使用确定性检查。如果需要模型判断,就通过 LLM-as-a-judge 评估流程,用已知案例验证其判断。
明确剪枝规则与预算上限
排除违反硬性约束的状态,对剩余候选进行排序,保留数量有上限的待扩展状态集合,并去除重复状态。预算允许时,保留尚不确定的候选方案;评估器信心不足,并不证明该分支走不通。
由控制器强制执行请求次数、深度、token 用量和耗时限制,并把评估与重试计入这些限制。记录丢弃了什么、为什么丢弃,方便排查成功路径被剪掉的情况。
先验证,再接受结果或执行操作
设置终局检查,例如排程满足全部约束,或相关软件测试通过。如果预算耗尽前没有候选方案达标,就返回未解决的结果,或转交审核。
分支探索应留在沙盒中,或仅以拟议操作的形式存在。探索中的排程分支不应发送邀请;控制器还在比较候选方案时,代码分支也不应部署改动。

除了最终答案,也要衡量评估器的表现。错误的否决可能永久移除有用的分支;错误的接受则可能把剩余预算都花在扩展死路上。这两类失败需要不同的修正方式。
什么时候推理模型已经够用,无需额外引入 ToT?
如果推理模型已经满足质量和延迟要求,而且应用不需要控制中间阶段的备选方案,就没有必要再加一层外部 ToT 搜索。
推理模型会在作答前进行内部处理。Anthropic 当前的提示指南建议,给其思考型模型提供总体目标,而不是规定每一步推理。这支持先把任务、约束和验收标准说清楚的做法,但不能据此断言某个具体模型在内部实现了 Yao 等人的 ToT 算法。Anthropic 提示指南。
假设要为应用增加一个小规模代码转换功能,先尝试合适的推理模型,并用相关测试检查结果。如果基线方案已经达到发布标准,外部搜索树只会增加状态管理、评估和故障处理,而没有已经证实的收益。
当应用能提供额外能力时,仍值得考虑外部搜索,例如模拟器、约束检查器、隔离测试环境,或必须保留不同候选计划的要求。更强的模型依然可以充当搜索中的生成器。模型自身的推理能力与应用控制的搜索,是两项独立的设计选择。
最终要靠实测决定:只有经过验证的结果改善足以抵偿测得的资源消耗,才保留搜索树。答案更长、过程记录更复杂,都不是成功标准。
关于思维树,哪些说法被夸大了?
让几位虚构专家展开讨论的提示词,本身并不构成可控的树搜索。它也许能生成备选方案,但生产环境中的 ToT 实现需要明确的状态、评估、分支选择和停止策略。如果这些只存在于一次生成的文本内部,就不能假定你描述的搜索已经按预期执行。
另一种夸大是认为分支越多,答案就一定越好。分支可能反复提出同一个想法;裁判可能与生成器持有同样的错误假设;过早剪枝可能丢掉唯一有用的后续路径。语气再有把握,也代替不了任务检查。
最后,论文在 24 点游戏上的最佳结果,并不能证明每项业务流程都需要 ToT。文档提取器的输出不符合 schema,可能需要更好的示例与校验;客服助手缺少某项政策信息,可能需要补上正确来源。在同样缺少信息的前提下多搜几条路径,并不会补出缺失的事实。
当备选决策可以被评估时,再用搜索。缺上下文或接口约定出了问题,就直接修复这些问题。
这周该如何调整你的应用?
如果失败案例包含本可补救的早期选择,而且你有可信的方法为中间状态评分,就可以开始尝试。例如,在隔离环境中检查候选代码改动,或根据明确的排程约束测试计划。先只为这类案例开一条适用范围较窄的处理路径,并设定固定的搜索预算。
如果你还说不清为什么某个部分解答比另一个更好,就先别扩大搜索。整理一组可接受和不可接受的状态,检查评估器的决策,先改善判断质量,再增加搜索宽度。
如果现有流程只是简单的提取、分类,或已经达到验收标准的固定步骤序列,基本无需调整,继续保留更简单的结构即可。
周一就能动手的具体做法是:从当前思维链流程中挑出失败案例,在同一组留出测试任务上,比较推理模型基线与限定预算的 ToT 版本。最终验证器保持不变,记录通过验收的结果、模型调用次数、token 用量、延迟,以及剪枝误删成功路径的情况。只在结果证明有效的那部分任务上采用搜索。
思维树常见问题
推理和思维链是一回事吗?
推理是解决问题的一种更广泛的能力。思维链则是一种使用中间步骤的提示方法。模型可以进行内部推理,而不在答案中输出这些步骤。
AI 中的“树”指什么?
树用来表示状态及其可能的下一步操作。每个节点是一种状态,子节点则是再走一步后得到的不同备选状态。在 ToT 中,这些状态代表部分解答。
什么是推理树?
在本文语境下,它指把不同的部分解答组织成分支,对其进行评估,再选择哪些继续推进。Yao 等人提出的具体框架叫作 Tree of Thoughts。
什么是思维树提示方法?
它用语言模型提出和评估中间阶段的备选方案,再结合搜索程序,决定扩展哪些状态。实际价值在于:不必等整个答案完成,就可以重新考虑之前的决策。
提示词的“三个 C”是什么?
Yao 等人的 ToT 算法没有定义“三个 C”规则。这种记忆口诀并非其算法规范;论文描述的是思维单元拆分、生成、状态评估和搜索。
思维链和思维树最主要的区别是什么?
标准 CoT 生成一条连续的推理路径。ToT 则显式考虑不同的部分路径,并在搜索过程中进行评估。自一致性又有所不同:它采样完整路径,再汇总最终答案。
能举一个思维链提示的例子吗?
一段算术解题示范可以先写 13 - 9 = 4,再写 10 - 4 = 6,最后写 4 × 6 = 24。把这样的中间步骤作为示例提供,就是在演示 CoT。如果进一步比较不同的下一步,并决定保留哪个分支,就加入了 ToT 的搜索机制。
用简单的话说,什么是思维链?
它通过计算或推导等中间步骤,把问题连接到答案。这些步骤能让解题过程更容易理解,但其中仍然可能有错误。
思维链具体是怎么工作的?
在标准提示设置下,模型根据问题和此前已生成的文本,依次生成中间步骤,再给出答案。仅有这段步骤序列,既不能独立检查正确性,也不会形成由应用管理的待扩展状态集合。
订阅邮件通讯,获取构建可靠 AI 工作流的实用指南。
- 发布日期
- 分类
- Build
- 语言







