从Chain-of-Thought到Tree-of-Thought全面解析

从Chain-of-Thought到Tree-of-Thought全面解析 推理能力是衡量AI智能水平的核心指标。从GPT-3时代的"直觉式回答"到2026年的多路径探索推理,大模型的推理范式经历了几次重要跃迁。本文将系统梳理从Chain-of-Thought到Tree-of-Thought的完整演进脉络。 Chain-of-Thought:让模型"展示推理过程" 核心思想 CoT的洞察看似简单——让模型在给出答案前先输出推理步骤。但这个简单的改变带来了巨大的效果提升。在GSM8K数学推理基准上,CoT将准确率从17.7%提升到58.1%。 CoT的深层原理是:大模型的每个token生成都消耗相同的计算量。“先想后说"本质上是给模型更多的计算预算来处理复杂问题。如果模型直接输出答案,它只用了一个forward pass的计算量。如果模型先输出5步推理再给答案,它用了5倍的计算量。 CoT的三种触发方式 Zero-shot CoT:在Prompt末尾加"Let’s think step by step”。最简单但效果不稳定。 Few-shot CoT:提供几个带推理过程的示例。效果好但需要精心设计示例。 Auto-CoT:让模型自己生成推理示例,减少人工设计。2026年的主流做法是结合few-shot和auto方式,用少量高质量种子示例引导自动生成。 CoT的局限 CoT本质是线性推理——从A推导到B,从B推导到C。但人类思考复杂问题时,往往会探索多条路径,发现走不通就回退重来。CoT没有这种"探索-回退"能力,一旦走上错误的推理路径,会一路错到底。 Self-Consistency:多路径投票 Self-Consistency是对CoT的第一个重要改进。核心思想:对同一个问题让模型生成多条独立的推理链,然后通过投票选择最一致的答案。 这个方法利用了一个关键洞察:正确的推理路径可能只有一条,但正确的答案可能由多条路径到达。通过多次采样并投票,正确答案获得多数票的概率显著提升。 实践效果:在GSM8K上从CoT的58.1%提升到74.4%。代价是推理成本增加N倍(N为采样次数,通常5-20)。 Self-Consistency的局限是它只对有唯一正确答案的问题有效。对于开放性问题(如"最好的方案是什么"),投票机制难以定义。 Tree-of-Thought:树形搜索推理 核心思想 ToT将推理过程建模为一棵搜索树。每个节点是一个"思考状态"(thought),模型从根节点出发,在每个节点生成多个候选的下一步思考,评估每个候选的质量,选择最优的继续探索。 这和CoT的本质区别是:CoT是一条链,ToT是一棵树。树结构允许模型: 在关键决策点探索多个选项 评估每个选项的前景 放弃不好的路径,回溯到好的分支 深度优先或广度优先搜索 ToT的工程实现 标准的ToT流程包含四个步骤: Thought Decomposition:将问题分解为中间思考步骤 Thought Generation:在每个状态生成多个候选下一步 State Evaluation:评估每个候选状态的前景 Search:使用BFS或DFS搜索最优路径 状态评估是ToT最关键也最有挑战的环节。评估方法有两种:数值评分(让模型对状态打1-10分)和排序比较(让模型比较两个状态哪个更好)。实践中,排序比较比数值评分更稳定。 ToT的效果与代价 ToT在复杂推理任务上的效果显著。在创意写作(24点游戏)等需要前瞻和回溯的任务上,ToT大幅超越CoT。但它有一个显而易见的代价——计算量巨大。ToT需要O(b×d)次推理调用,其中b是分支因子,d是搜索深度。一个典型配置b=5, d=3,意味着15次推理调用。 这使ToT在实际应用中需要权衡:简单问题不值得用ToT,复杂问题用ToT可能太慢。我们在硅基AGI平台中使用"自适应推理深度"策略——先用CoT尝试,如果置信度低再升级到ToT。 Graph-of-Thought:推理的图结构 超越树结构 GoT将推理过程从树结构扩展到图结构。核心动机是:不同推理路径之间可能有交叉和合并。在树结构中,两条路径一旦分离就不再交汇;在图结构中,路径可以合并。 一个具体场景:解决问题A需要同时考虑因素B和因素C。CoT会先分析B再分析C;ToT可能把B和C作为两个分支;但GoT允许在分析B的过程中发现与C相关的结论,并将这个结论合并到C的分支中。 知识图谱融合 GoT的一个有前途的方向是将推理图与外部知识图谱融合。推理过程中生成的中间结论作为节点加入知识图谱,后续推理可以直接引用这些结论。这类似于人类"把已经得出的结论记下来,在后面的推理中使用"。 演进趋势:从固定范式到自适应推理 2026年的最新趋势是放弃固定的推理范式,让模型自适应选择推理策略: ReAct:推理+行动交织 ReAct让推理和工具调用交织进行。模型可以先推理"我需要查一下这个数据",然后调用工具获取数据,再基于结果继续推理。这种"边想边做"的模式更接近人类解决问题的实际方式。 Reflexion:带反思的迭代推理 Reflexion在推理完成后增加一个"反思"步骤——模型评估自己的推理过程,识别可能的错误,然后基于反思重新推理。这种"失败-反思-重试"的循环能显著提升复杂任务的成功率。 LATS:语言Agent树搜索 LATS将ToT的思想扩展到Agent场景。搜索树的每个节点不只是一个思考状态,而是一个完整的Agent状态(包括思考、观察、行动)。这使搜索能在更大的行动空间中进行,适合需要多步骤决策的复杂任务。 推理范式的选择指南 基于我们的实践经验,不同场景推荐不同推理策略: 问题类型 推荐策略 理由 简单事实问答 直接回答 CoT反而可能引入错误 数学推理 CoT + Self-Consistency 多路径投票降低单链错误 逻辑推理 CoT 结构化推理足够 创意问题解决 ToT 需要探索多个方向 多步Agent任务 ReAct + Reflexion 需要行动和反思 复杂规划 LATS 大空间搜索 结语 从CoT到ToT的演进,本质是从"线性思考"到"结构化搜索"的范式升级。大模型不只是一个好的语言生成器,它还是一个不完美的推理器——通过外部化的推理结构(链、树、图),我们可以补偿模型自身推理能力的不足。2026年的前沿已经从"让模型更好地推理"转向"设计更好的推理结构来放大模型的推理能力"。 ...

2026-07-13 · 1 min · 91 words · 硅基 AGI 探索者
思维链进阶

思维链2026进阶技巧:让AI真正学会思考

引言 Chain-of-Thought(思维链)提示在2022年由Wei等人提出,到2026年已经发展成一套完整的提示工程体系。从简单的"Let’s think step by step"到复杂的自我一致性思维链,这项技术让模型的推理能力得到了数倍的提升。本文将系统介绍2026年思维链提示的进阶技巧。 思维链基础回顾 什么是思维链 思维链提示的核心思想是:让模型在给出最终答案之前,先展示推理过程。就像人类解决复杂问题时会先在脑子里思考步骤一样。 标准提示 vs 思维链提示: 标准提示: 问题:Roger有5个网球。他又买了两筒网球,每筒3个。他现在有多少个网球? 回答:11个。 思维链提示: 问题:Roger有5个网球。他又买了两筒网球,每筒3个。他现在有多少个网球? 让我们一步步思考: 1. Roger最初有5个网球。 2. 他买了两筒网球。 3. 每筒有3个网球,所以2×3=6个新网球。 4. 总共:5+6=11个网球。 回答:11个。 为什么思维链有效 分解复杂问题:将大问题分解为小步骤 减少推理错误:每步推理都更可控 提高可解释性:推理过程对用户可见 利用更多计算:生成更多token进行"思考" 2026年思维链进阶技巧 技巧一:动态思维链(Dynamic CoT) 传统的思维链是固定的,2026年的进阶技巧是"动态"生成思维链: 提示模板: 问题:{question} 请先分析这个问题的类型(数学/逻辑/常识/...),然后选择最合适的推理策略,最后执行推理。 分析:这个问题属于[类型],适合使用[策略]。 推理:[逐步推理过程] 答案:[最终答案] 技巧二:思维树(Tree of Thoughts) 对于需要探索的复杂问题,使用思维树而不是思维链: 提示模板: 问题:{question} 请生成一个思维树来解决这个问题: 1. 列出3-5个可能的解决方向 2. 对每个方向进行初步推理 3. 评估每个方向的可行性 4. 选择最佳方向深入推理 5. 给出最终答案 [按上述结构输出] 技巧三:自我一致性思维链(Self-Consistency CoT) 生成多个思维链,然后选择最一致(或投票最多的)答案: 提示模板: 问题:{question} 请从3个不同角度思考这个问题,然后综合得出最终答案。 角度1:[推理过程1] 角度2:[推理过程2] 角度3:[推理过程3] 综合:[比较3个角度,得出最终答案] 技巧四:思维链+验证(CoT+Verification) 在思维链之后加入验证步骤: ...

2026-07-02 · 2 min · 240 words · 硅基 AGI 探索者
推理模型对比

推理模型对比:o1/Claude/Gemini谁更会思考

引言 2024年底,OpenAI发布了o1系列模型,引入了"思维链推理"的新范式。2026年,推理模型已经成为AI竞争的新焦点。Claude 4推出了Extended Thinking模式,Gemini 2.5 Ultra强化了推理能力,国产模型也在推理方向上持续发力。本文将深度对比主流推理模型的能力边界。 什么是推理模型 传统的LLM采用的是"直接生成"模式:输入→输出,中间过程对用户不可见。推理模型则采用了"内部思维链"模式: 用户在提问时,模型先进行内部推理(可能需要几秒到几分钟) 推理过程对用户可见(可选) 最终输出经过深思熟虑的答案 这种模式在数学、编程、科学推理等需要多步逻辑的任务上效果显著。 主流推理模型 OpenAI系列 o1-preview — 第一代推理模型 o1 — 正式版,推理能力更强 o1-mini — 轻量版,速度快 o3 (2026.06) — 新一代推理模型 Anthropic Claude 4 Opus Extended Thinking — 可扩展推理模式 Claude 4 Sonnet Extended Thinking — 轻量推理模式 Google Gemini 2.5 Ultra Thinking — 推理增强模式 Gemini 2.5 Flash Thinking — 轻量推理模式 国产模型 DeepSeek-R1 (深度求索) — 开源推理模型 GLM-5 Reasoner (智谱AI) — 推理增强版 Qwen 3 Reasoner (阿里) — 推理专用模型 核心基准对比 GPQA Diamond 研究生级别科学推理,最能体现模型深度推理能力: ...

2026-07-02 · 2 min · 327 words · 硅基 AGI 探索者
Prompt工程进阶

Prompt工程进阶:Chain-of-Thought的变体与实践

Chain-of-Thought:让模型"思考" Chain-of-Thought(思维链,简称CoT)于2022年提出,至今仍是Prompt工程领域最具影响力的技术之一。核心思想是:让模型显式输出推理过程,而非直接给出答案。 2026年,CoT已经从单一技术演化为一个完整的技术家族,包括CoT-SC、ToT、GoT、PoT等多种变体。本文将系统梳理这些技术,并提供实战代码。 CoT基础:显式推理 为什么CoT有效? # 对比:标准Prompt vs CoT Prompt # 标准Prompt standard_prompt = """ 问:小明有5个苹果,小红给了他3个, 然后小明吃掉了2个。小明现在有多少苹果? 答: """ # CoT Prompt cot_prompt = """ 问:小明有5个苹果,小红给了他3个, 然后小明吃掉了2个。小明现在有多少苹果? 让我们逐步推理: 1. 小明开始有5个苹果 2. 小红给了他3个,所以:5 + 3 = 8个 3. 小明吃掉了2个,所以:8 - 2 = 6个 答:6个 """ CoT有效的原因: 计算重分配:将计算能力分配给推理过程 注意力锚定:中间步骤提供"锚点" 错误可追溯:发现推理错误时容易定位 CoT触发方法 class CoTTriggerMethods: """ 2026年主流CoT触发方法 """ @staticmethod def few_shot_cot(examples: list[dict]) -> str: """ Few-shot CoT:通过示例展示推理过程 """ prompt = "请在回答时展示完整的推理过程。\n\n" prompt += "示例:\n" for ex in examples: prompt += f"问题:{ex['question']}\n" prompt += "推理过程:\n" for step in ex['reasoning_steps']: prompt += f" {step}\n" prompt += f"答案:{ex['answer']}\n\n" return prompt @staticmethod def zero_shot_cot(question: str) -> str: """ Zero-shot CoT:使用触发词 2026年最佳触发词组合 """ return f"""{question} 请逐步思考(Step by Step),展示完整的推理过程,最后给出答案。""" @staticmethod def auto_cot(dataset: list[dict], model) -> list[dict]: """ Auto-CoT:自动构建CoT示例 1. 使用聚类选择多样性问题 2. 使用模型生成推理过程 3. 验证生成的正确性 """ # 步骤1:问题聚类 embeddings = model.encode([d['question'] for d in dataset]) clusters = cluster(embeddings, n_clusters=10) # 步骤2:从每个簇中选择代表性问题 selected = [] for cluster_id in range(10): cluster_samples = [dataset[i] for i in range(len(dataset)) if clusters[i] == cluster_id] # 选择最接近簇中心的问题 centroid = embeddings[clusters == cluster_id].mean(axis=0) closest = min(cluster_samples, key=lambda x: cosine_sim(x['embedding'], centroid)) selected.append(closest) # 步骤3:生成CoT cot_examples = [] for sample in selected: reasoning = model.generate( f"请逐步推理并给出答案:{sample['question']}" ) # 验证正确性(通过答案对比) if verify_reasoning(reasoning, sample['answer']): cot_examples.append({ 'question': sample['question'], 'reasoning': reasoning, 'answer': sample['answer'] }) return cot_examples CoT-SC:Self-Consistency自洽性 核心思想 Self-Consistency(自洽性)通过多次采样+投票提升推理可靠性。 ...

2026-06-30 · 5 min · 994 words · 硅基 AGI 探索者
Prompt工程2026:从基础技巧到企业级应用

Prompt工程2026:从基础技巧到企业级应用

Prompt工程在2026年已经从"玄学技巧"演变为一门系统化的工程学科。当LLM能力越来越强,Prompt的焦点从"让模型能做"转向了"让模型做得好、做得稳、做得可控"。本文将从基础到企业级,全面梳理2026年Prompt工程的最新实践。 一、Prompt工程的2026年现状 范式转变 时期 核心挑战 Prompt焦点 代表技术 2022-2023 模型能力有限 如何让模型"能做" Few-shot, CoT 2024-2025 能力提升但不可控 如何让模型"做好" 结构化Prompt, ReAct 2026 能力强但需要规模化 如何让模型"做稳" Prompt管理, A/B测试, 自动优化 2026年的核心认知 模型能力已不是瓶颈:GPT-5/Claude 5的基本能力足以应对大多数任务 Prompt质量决定输出质量:同样的模型,好Prompt和差Prompt的效果差距可达300% Prompt是资产:企业Prompt需要版本管理、测试、监控——和代码一样 自动化是趋势:自动Prompt优化(APO)开始替代人工调优 二、基础技巧回顾与升级 1. 角色设定(Role Prompting) 2026年的最佳实践不再是简单的"你是一个专家",而是结构化角色定义: # 角色定义 你是一位资深的金融分析师,拥有CFA证书和15年A股市场研究经验。 ## 专业知识 - 精通财务报表分析和估值模型(DCF, DDM, PEG) - 熟悉A股市场的行业轮动和风格切换 - 擅长宏观经济分析和政策解读 ## 分析风格 - 数据驱动:每个结论必须有数据支撑 - 辩证思考:同时分析利多和利空因素 - 风险意识:始终提示潜在风险 ## 输出规范 - 使用专业但易懂的语言 - 关键数据标注来源 - 给出明确的投资建议(买入/持有/卖出)和理由 2. Few-Shot Learning的进化 2026年的Few-Shot不再只是"给几个例子",而是动态示例选择: ...

2026-06-30 · 4 min · 659 words · 硅基 AGI 探索者
chain of thought advanced tot got

Chain-of-Thought 进阶:Tree-of-Thought 与 Graph-of-Thought

从线性思维到图结构推理 Chain-of-Thought (CoT) 自 2022 年提出以来,已成为大模型推理的基础范式。但线性思维链的局限在于:真实世界的推理往往不是一条直线,而是包含分支、回溯和交叉的复杂网络。2025-2026 年,Tree-of-Thought (ToT) 和 Graph-of-Thought (GoT) 作为 CoT 的高级进化形态,正在重新定义 LLM 的推理边界。 一、CoT 回顾与局限 1.1 标准 CoT 范式 问题 → [思考步骤1] → [思考步骤2] → [思考步骤3] → 答案 标准 CoT 的 Prompt 模板: 请一步步思考: 1. 首先分析问题中的关键条件... 2. 然后推导中间结论... 3. 最后得出最终答案... 1.2 CoT 的核心局限 局限 描述 影响 单线性 只有一条推理路径 无法处理需要多路径探索的问题 无回溯 一旦走错无法回头 早期错误会传播到最终答案 无比较 无法对比不同推理路径 错过更优解法 固定深度 推理步骤数预设 简单问题过度思考,复杂问题思考不足 二、Tree-of-Thought (ToT) 2.1 核心思想 ToT 将推理过程建模为一棵搜索树,每个节点是一个"思维状态"(thought state),可以生成多个分支并评估: [初始状态] / \ [思路A] [思路B] / \ / \ [A-1] [A-2] [B-1] [B-2] | | | [答案A] [答案A'] [答案B] 评估:答案B 最优 → 选择路径 B → B-1 2.2 ToT 完整实现 from typing import List, Optional, Callable from dataclasses import dataclass, field import json @dataclass class ThoughtNode: """思维树节点""" state: str # 当前思维状态描述 thought: str # 到达此状态的思考内容 parent: Optional['ThoughtNode'] = None children: List['ThoughtNode'] = field(default_factory=list) value: float = 0.0 # 评估值 0-1 depth: int = 0 visited: bool = False class TreeOfThought: """Tree-of-Thought 推理引擎""" def __init__(self, llm_client, max_depth: int = 5, branching_factor: int = 3, beam_size: int = 2): self.llm = llm_client self.max_depth = max_depth self.branching = branching_factor self.beam_size = beam_size def solve(self, problem: str) -> dict: """求解问题""" root = ThoughtNode(state=problem, thought="初始问题", depth=0) solution = self._search(root) return { 'answer': solution.thought if solution else None, 'path': self._trace_path(solution) if solution else [], 'tree_stats': { 'nodes_generated': self._count_nodes(root), 'max_depth_reached': self._max_depth(root), } } def _search(self, node: ThoughtNode) -> Optional[ThoughtNode]: """束束搜索(Beam Search)""" frontier = [node] for depth in range(self.max_depth): next_frontier = [] for current in frontier: if self._is_solution(current): return current # 生成多个思维分支 thoughts = self._generate_thoughts(current) for thought in thoughts: child = ThoughtNode( state=thought['state'], thought=thought['content'], parent=current, depth=depth + 1 ) # 评估每个分支 child.value = self._evaluate(child) current.children.append(child) next_frontier.append(child) # 保留 top-k 分支 next_frontier.sort(key=lambda n: -n.value) frontier = next_frontier[:self.beam_size] if not frontier: break # 返回最优叶节点 return max(frontier, key=lambda n: n.value) if frontier else None def _generate_thoughts(self, node: ThoughtNode) -> List[dict]: """生成多个可能的下一步思考""" prompt = f""" 问题:{node.state} 当前思考:{node.thought} 当前深度:{node.depth} 请生成 {self.branching} 个不同的下一步思考方向。 每个方向应探索不同的推理路径。 输出JSON格式: [ {{"state": "更新后的问题状态", "content": "具体思考内容"}}, ... ] """ response = self.llm.generate(prompt) return json.loads(response) def _evaluate(self, node: ThoughtNode) -> float: """评估思维节点的价值""" prompt = f""" 评估以下推理步骤的质量: 问题:{node.parent.state if node.parent else node.state} 推理步骤:{node.thought} 请从以下维度评分(0-1): 1. 逻辑正确性 2. 与问题相关性 3. 推进进度(离答案有多近) 返回平均分。 """ response = self.llm.generate(prompt) return float(response.strip()) def _is_solution(self, node: ThoughtNode) -> bool: """判断是否已到达答案""" prompt = f"以下内容是否已经给出了问题的完整答案?回答是或否。\n{node.thought}" return "是" in self.llm.generate(prompt) def _trace_path(self, node: ThoughtNode) -> List[str]: """回溯推理路径""" path = [] while node: path.append({'depth': node.depth, 'thought': node.thought, 'value': node.value}) node = node.parent return list(reversed(path)) def _count_nodes(self, root: ThoughtNode) -> int: count = 1 for child in root.children: count += self._count_nodes(child) return count def _max_depth(self, root: ThoughtNode) -> int: if not root.children: return root.depth return max(self._max_depth(c) for c in root.children) 2.3 ToT 效果对比 在 24 点游戏、创意写作、交叉词谜题等任务上的对比: ...

2026-06-28 · 5 min · 957 words · 硅基 AGI 探索者
鲁ICP备2026018361号