让语言模型做一道复杂数学题或者规划一道逻辑谜题时,很多人发现模型经常在半路上走偏:前面一步推理错了,后面整条思路就全盘崩塌。传统思维链提示的本质是单路径串行推理——模型沿着一条链子往下走,没有回头路。Yao等人在论文中提出的思维树方法改变了这个局面:它把推理过程组织成树状结构,模型可以在多个分支上同时探索,还能对中间状态打分评估,必要时回溯换路。本文详细拆解ToT的原理与Prompt设计方法,并给出可直接套用的模板。

一、ToT的核心原理:从单链到树状搜索
思维树的核心思想可以用四个要素概括:思维分解、想法生成、状态评估和搜索算法。首先把一个问题拆成若干个中间步骤,每个步骤产生一个"想法"(thought),想法作为树的节点。在每个节点上,模型可以生成多个候选想法,形成分支。接着用模型自身作为评估器,给每个分支打分或判断是否值得继续。最后配合广度优先搜索(BFS)或深度优先搜索(DFS)等策略,决定往哪走、何时剪枝、何时回溯。
与标准思维链相比,ToT的最大区别在于允许探索和回溯。思维链只有一条路,走死了就结束;而ToT相当于让模型同时派出多个"侦察兵",每条路先走一小段,看哪条更有前途再集中投入。与自洽性方法相比,两者都利用多条推理路径,但自洽性是独立采样后投票,路径之间没有交互;ToT的路径之间存在树状依赖和评估筛选,单位算力下的解题质量通常更高。论文在24点游戏上的实验显示,GPT-4配合思维链只有约4%的解题率,而ToT达到了74%,差距非常明显。
需要注意,ToT并不是万能替换。它需要多次调用模型,推理成本可能是普通提示的数倍到数十倍,因此更适合步骤多、中间状态可评估、单路径容易失败的难题,比如数学推理、代码规划、创意写作大纲设计等。
二、四个模块的Prompt设计要点
1. 问题分解提示。这一步的目标是把大任务切成粒度合适的子问题。粒度太粗,分支无法体现差异;太细则评估成本爆炸。经验上每一步的"想法"应该是一个可以独立验证的中间结论,例如数学题中的一步等式变换、写作任务中的一个章节大纲。提示词可以这样写:
把这个问题分解为不超过5个连续的推理步骤。 每一步输出一个中间结论,格式为: 步骤编号: 具体的想法(一句话,需可验证)
2. 候选生成提示。在每个中间状态上,让模型给出多个不同的候选想法。这里的关键词是"不同"——如果几个候选本质是同一思路的换皮,分支就失去了意义。可以通过显式要求差异化来提升多样性:
基于当前的推理状态:
{当前状态}
请生成3个截然不同的下一步想法,要求:
- 每个想法采用不同的解题策略或切入角度
- 每个想法用一句话描述
- 想法之间不能互相包含3. 状态评估提示。评估有两种主流写法:一种是打分制,让模型对每个候选状态给出1到10的分数;另一种是价值判断制,输出"确定有效/可能有效/无效"三档。对于候选较少的场景用打分制更精细,候选多的时候用三档判断更省token:
请评估以下推理状态解决目标问题的前景:
{候选状态}
从0到10打分,10表示极有可能通向正确答案。
只输出分数和一个简短理由(不超过15字)。4. 搜索策略控制。这一层通常由外部代码承担,Prompt只需要配合。采用BFS时,每轮保留得分最高的前k个状态再扩展;采用DFS时,优先深入最优分支,遇到低分状态则回溯到父节点。在纯对话场景里没有代码调度,可以让模型自己扮演搜索控制器,在一个Prompt里完成"生成-评估-选择-记录"的循环。
三、一个可直接套用的完整模板
下面给出一套把四个模块整合进单轮对话的Prompt模板,适合在不写代码的情况下体验ToT效果。它的思路是让模型显式维护一棵"已探索树",每轮输出当前最优路径和被剪掉的分支:
你是思维树推理器,请按以下流程解决问题:{问题描述}
执行规则:
1. 分解:把问题拆成3-5个推理步骤。
2. 展开:对当前每个未完成状态,生成2-3个不同的下一步想法。
3. 评估:给每个想法打分(0-10),保留得分最高的2个,其余标记为剪枝并说明原因。
4. 深入:沿最优状态继续展开,若连续两步得分低于5,回溯到上一个分支点换路。
5. 终止:得到最终答案时,输出完整路径及每步得分。
输出格式:
【第N轮】
展开的候选想法与得分:...
保留分支:...
剪枝记录:...
当前最优路径:...实际使用时有几个调优技巧。第一,评估标准要写进Prompt,比如数学题可以要求"评估该步是否引入了非法运算",否则模型打分会偏向泛泛而谈。第二,控制树宽和深度,普通对话模型在状态超过二三十个时容易顾此失彼,宽度和深度都建议控制在3以内。第三,对于开放性任务(如方案设计),把打分制换成多维度评估更有效,例如分别从可行性、成本、创新性三个维度各打一档,再综合排序。
四、成本权衡与适用场景判断
ToT的代价是模型调用次数显著增加。一棵宽度为3、深度为4的树,最坏情况下需要生成和评估数十个状态。如果用API计费模型,成本可能达到普通提示的十倍以上。因此在决定是否使用ToT前,建议先做一个小实验:用普通思维链连续尝试5次,如果正确率低于一半,说明该任务的失败主要来自路径选择,ToT的收益会比较大;如果模型只是偶尔粗心,那么用自洽性采样加投票可能更划算。
另外还可以做混合策略:对问题先做难度分类,简单题直接走思维链,难题才启动思维树。在工程实现上,LangChain等框架已经提供了类似Tree of Thought的实验性链,也可以自己实现状态管理器,把生成、评估、剪枝的逻辑放到代码里,Prompt只负责单步的生成与打分,这样结构更清晰,也方便复用和调试。
总结一下,ToT的本质是把搜索算法引入语言模型推理:分解定义了搜索空间,生成负责扩展节点,评估提供了启发式函数,策略决定遍历顺序。掌握了这四个模块的Prompt写法,你就能针对自己的任务灵活搭建树状推理流程,让模型在难题面前不再一条道走到黑。