ToT (Tree-of-Thought)

思维树

CoT 的多分支版本:探索多种思路再回头评估。

详解

Tree-of-Thought(思维树,ToT)是 CoT 的升级版:CoT 沿着一条推理链一路走到底,而 ToT 在每个决策节点同时展开多个候选分支,用评分或投票筛选最优路径,支持回溯(走错了退回来换条路)。ToT 把问题求解拆成四个模块:①思考分解器(把大问题拆成步骤)②候选生成器(每步产生多个候选思路)③状态评估器(给每个候选打分)④搜索算法(BFS 广度优先或 DFS 深度优先遍历树)。论文实验显示,在需要搜索探索的任务(24 点游戏、填字游戏、创意写作)上,ToT 的正确率远超 CoT。ToT 的代价是显而易见的:需要多次模型调用(生成候选 + 评分),成本和耗时都大幅增加,不适合对响应速度或成本敏感的场景。实践中,ToT 更适合离线、批量、对精度要求高的复杂任务,如代码规划、数学证明。

一个类比
CoT 像走迷宫时选一条路走到底,走不通才发现要回头。ToT 像你在迷宫入口先画出所有可能的路线图,给每条路估算长度和风险,再选最优的一条走——遇到死路可以立刻退回最近的岔路口,而不是从头再来。
举个例子
# ToT 简化示意:同一问题生成多个候选思路,再评分选最优
# 完整 ToT 需要多轮调用;此处演示「生成候选 + 评分」两步
import anthropic

client = anthropic.Anthropic()

problem = "如何用最少的步骤把一个单词倒序输出?"

# 第一步:生成多个候选方案
candidates_resp = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=256,
    messages=[{
        "role": "user",
        "content": f"针对问题:{problem}\n请给出 3 种不同的解题思路,每种思路用一句话描述,编号 1-3。"
    }]
)
candidates = candidates_resp.content[0].text
print("候选思路:\n", candidates)

# 第二步:让模型作为评估者,给出最优方案
best_resp = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=128,
    messages=[{
        "role": "user",
        "content": f"以下是解决'{problem}'的 3 种思路:\n{candidates}\n请评估哪种最简洁高效,给出理由并写出对应代码。"
    }]
)
print("最优方案:\n", best_resp.content[0].text)
PYTHON 示例
相关概念