LLM 推理增强技术
本页讲解 LLM 应用生态概览中”提示工程”层的进阶能力——LLM 推理增强技术:通过更聪明的 Prompt 结构,让模型在数学、逻辑、规划等复杂任务上表现大幅提升。这些方法是 提示工程的延伸,也是理解 推理模型 o1 与 R1的基础——推理模型正是把这些”逐步思考”的能力训练进了模型内部。
推理增强 = 给模型一张”草稿纸”和一套”解题套路”。
- 标准 Prompting(直接问):像问一个学生”答案是多少”,他得心算,复杂题容易算错。
- CoT(思维链):递给他草稿纸,让他”把过程写出来”——过程对了,答案自然对。
- Self-Consistency(自洽性):让他把同一道题做很多遍、写很多种解法,最后少数服从多数,比单次更稳。
- Tree of Thoughts(思维树):像下棋一样每步想多个分支、评估打分、回头换路,能解需要”试错和回溯”的难题。
- ReAct(推理加行动):边想边查资料/调工具——“想到需要查个数据,就去查;查完接着推理”。
- Plan-and-Solve(先规划后执行):先列出解题计划,再按计划逐步实施,治”一头扎进去乱算”。
- Least-to-Most(从简到难):把大问题拆成一系列小问题,从最简单的开始,逐步逼近最终答案。
为什么 LLM 需要推理增强
Section titled “为什么 LLM 需要推理增强”Transformer 架构的 LLM 本质上是自回归模型(Autoregressive Model)——逐 token(即逐词元)预测下一个最可能出现的文本片段。它没有传统程序中的”变量”或”循环”,也没有人类”心算”那样的隐式工作记忆。面对一道需要 5 步推理的数学题,如果直接要求输出答案,模型必须把全部推理过程压缩进单次前向传播(forward pass,即模型对输入做一次完整的计算),这远远超出了其能力边界。
推理增强的本质是在输出空间中为模型预留更多的”思考 token”,让中间推理步骤显式地出现在上下文中,从而引导模型逐步逼近正确答案。这正是 test-time compute(测试时计算,指模型在推理阶段通过生成更多 token 来换取更高准确率的策略)的核心理念——2024-2025 年的研究表明,在推理阶段投入更多计算资源(让模型”想更久”),其收益可媲美扩大模型规模本身。
标准 Prompting 的局限
Section titled “标准 Prompting 的局限”直接给模型一个问题(或仅给少量问答示例),让它输出答案。对简单事实题有效,但在多步推理任务上——如数学应用题、逻辑谜题——模型往往”一步算错、全盘皆错”。原因在于:模型是逐 token 生成的,没有显式的”思考过程”可依赖,复杂的中间推理被迫压缩进单次前向,出错率高。
具体来说,当模型面对复杂推理时,它需要在一个 token 的生成中同时完成:(1) 理解问题结构;(2) 规划推理路径;(3) 执行中间计算;(4) 生成最终答案。这四件事的信息量远超一个 token 所能承载。结果就是模型倾向于”跳步”——直接输出一个看起来合理的答案,而中间的推理过程全靠”猜”。
CoT:思维链
Section titled “CoT:思维链”CoT(Chain-of-Thought)的核心洞察是:让模型生成中间推理步骤,最终答案会更准确。
- Zero-shot CoT:在问题末尾加一句魔法咒语”Let’s think step by step”(让我们一步步思考),模型就会自动展开推理过程。零成本、效果显著。这种方法的妙处在于它利用了 LLM 的指令遵循能力(Instruction Following,模型理解和执行自然语言指令的能力)——这四个英文单词在训练数据中与详尽解答高度相关,激活了模型的”详细推理”行为模式。
- Few-shot CoT:在 Prompt 里给几个”问题 → 详细推理过程 → 答案”的示例,教会模型用这种格式思考,效果通常优于 Zero-shot。Few-shot 示例起到”模板锚定”作用——模型学会在回答前先输出”推理:“标记,然后展开步骤。
为什么有效——从信息论角度理解:
想象一个 3 位数乘法:347 × 89 = ?。人类心算极易出错,但列竖式逐步计算就很可靠。CoT 的原理与此类似——它把一个高复杂度的单步推理分解为多个低复杂度的逐步推理。每一步只需处理局部信息,前一步的结论作为后一步的上下文(context,即模型在生成时能”看到”的之前所有 token),大幅降低了每一步的认知负荷。
形式化地说:设任务总复杂度为 C,分为 n 步,每步复杂度约 C/n。由于每步的中间结论已写入上下文,后续步骤不需要重新推导,只需在已有结论上推进。这种”分而治之”的效果使得总体错误率从”单步错误概率 p”降为”n 步都正确的联合概率”——虽然步骤多了,但每步准确率提升的收益远超步骤增加带来的累积风险。
CoT 在大模型(参数量 > 60B)上效果尤其显著。研究表明,小模型(< 10B)加了 CoT 反而可能降低性能——它们没有足够的”推理能力”来生成有用的中间步骤。这被称为 CoT 的涌现现象(Emergent Ability,指模型在达到一定规模后才显现的能力)。
2025 年最新进展——CoT 与推理模型的融合:OpenAI 的 o1/o3 系列和 DeepSeek R1 等推理模型将 CoT 直接训练进了模型内部。它们使用 RL(Reinforcement Learning,强化学习)训练模型自动生成隐式思维链——模型在 <think> 标签内进行长篇自我推演(可能长达数万 token),无需用户提示就能逐步推理。详见 推理模型。这意味着对于标准 LLM(GPT-4o、Claude Sonnet、Llama 等),CoT 提示仍然是激发推理能力的最有效手段。
Self-Consistency(自洽性)
Section titled “Self-Consistency(自洽性)”CoT 单次采样仍可能跑偏。Self-Consistency 的做法:对同一问题用较高温度多次采样不同的思维链(如 20-40 条),各自得到一个最终答案,最后取多数票作为结果。它的假设是:正确的推理路径有多种、彼此收敛到同一答案;错误路径五花八门、各不相同。投票能滤掉偶发错误,显著提升准确率,代价是采样多次、推理成本成倍上升。
数学直觉——大数定律的运用:
假设某题 CoT 单次正确率为 70%。若采样 20 条思维链,每条独立判断,最终答案取多数票。由二项分布近似,多数票正确(≥11/20 正确)的概率约为 91.2%——大幅提升。但这个提升有个前提:各次采样之间要有足够的多样性(diversity),否则如果 20 次都犯同一种系统性错误,投票也无济于事。因此实践中通常把 temperature(温度,控制模型输出随机性的参数)设为 0.5-0.8 以增加多样性。
Self-Consistency 的适用边界:
- ✅ 有标准答案的任务:数学题、多选题、逻辑判断——最终答案可以精确比较,投票有效。
- ❌ 开放式生成任务:写作、翻译、摘要——没有唯一正确答案,无法投票。
- ⚠️ 成本权衡:采样 20 次意味着 20 倍的推理成本和延迟,适合离线批量处理或高价值场景。
Tree of Thoughts(ToT,思维树)
Section titled “Tree of Thoughts(ToT,思维树)”CoT 是一条直线,ToT 把推理组织成一棵搜索树:在每个推理节点让模型生成多个候选”下一步思路”,用一个评估函数(通常也是模型自己打分)评估每个候选的前景,再用搜索算法(广度优先/深度优先/束搜索)探索。走到死路可以回溯换分支。它适合需要规划、搜索、回溯的难题(如 24 点游戏、填字、创意写作),效果强但调用次数多、成本高。
ToT 的四个核心组件:
- 思维分解(Thought Decomposition):将推理过程拆分为离散的”思维节点”。比如解 24 点,每步是一个数学运算(如 “3 + 5 = 8”)。粒度要根据任务调整——太粗则搜索空间不够灵活,太细则搜索成本爆炸。
- 思维生成(Thought Generator):在当前节点,让 LLM 生成 k 个候选的下一步思路。用 Prompt “请给出 3 种不同的下一步推理”来获取多样性。
- 状态评估器(State Evaluator):对每个候选状态打分。有两种方式:(a) 数值打分——让 LLM 评估”这个方向有多大可能导向正确答案?“(如 1-10 分);(b) 投票选择——给 LLM 所有候选,让它”投票”选出最有前景的。
- 搜索算法(Search Algorithm):BFS(广度优先,保留每层最优 b 个)、DFS(深度优先,走到底再回溯)、Beam Search(束搜索,维持固定宽度的最优路径)。选择取决于树的深度和分支因子。
与 CoT 的关键区别:CoT 是线性推理,一条路走到底;ToT 是树形搜索,允许回溯(backtracking,发现当前路径走不通时退回上一个节点换路)。这让 ToT 能处理需要”试错”的复杂规划任务,但代价是 LLM 调用次数呈指数增长——一棵深度为 3、每层分支为 3 的搜索树需要约 40 次模型调用。
ReAct:推理加行动
Section titled “ReAct:推理加行动”ReAct(Reasoning + Acting)让模型在”思考”和”行动”之间交替:
- Thought(思考):模型分析当前状况、决定下一步做什么。
- Action(行动):调用一个外部工具(搜索、计算器、数据库查询、API)。
- Observation(观察):把工具返回的结果拼回上下文。
- 循环,直到得出最终答案。
它把模型的”推理”与外部世界的”事实/计算”结合,是 智能体与工具调用的基础范式——模型不必全靠记忆,可以现查现算。例如解”今天某股票收盘价乘以 3”,模型先思考需要查价、调用搜索、拿到价格后再算。
ReAct 解决的核心问题——幻觉与过时知识:
纯 CoT 推理依赖模型内部记忆(训练数据中的知识),有两个致命弱点:(1) 幻觉(Hallucination,模型生成看似合理但实际错误的信息);(2) 知识截止(Knowledge Cutoff,模型只知道训练数据截止日期之前的信息)。ReAct 通过”行动”把外部世界的实时事实注入推理链——模型遇到不确定的信息时,不是靠猜,而是调用搜索引擎或数据库去查,得到准确结果后继续推理。
一个完整的 ReAct 示例:
问题:2024 年诺贝尔文学奖得主写过多少本小说?
Thought 1: 我需要知道 2024 年诺贝尔文学奖得主是谁。Action 1: Search["2024 诺贝尔文学奖得主"]Observation 1: 2024 年诺贝尔文学奖授予韩国作家韩江。Thought 2: 韩江是韩国作家,我需要查她写过多少本小说。Action 2: Search["韩江 小说作品列表"]Observation 2: 韩江的主要小说包括《素食者》《 Humans Act 》等约 10 部长篇小说和中短篇小说集。Thought 3: 我得到答案了,可以总结。Action 3: Finish["韩江大约写过 10 部小说作品"]2025 年发展——从 ReAct 到 Agentic Framework:
ReAct 是最早的推理-行动范式(2022 年提出),到 2025 年它已演化为现代 Agent(智能体)框架的基础。LangGraph、CrewAI、AutoGen 等框架在此基础上增加了:多 Agent 协作、状态管理、工具编排(orchestration,协调多个工具和步骤的执行流程)、错误恢复等能力。但核心循环”思考 → 行动 → 观察”始终未变。详见 智能体。
Plan-and-Solve
Section titled “Plan-and-Solve”Plan-and-Solve 是 Zero-shot CoT 的改进:把”让我们一步步思考”换成两段式指令——“先制定一个解题计划,再把计划拆成步骤逐步执行”。它治的是 Zero-shot CoT 常见的”计算错误”和”遗漏步骤”:先有全局计划再执行,减少中途跑偏。实现简单(纯 Prompt),对算术与多步推理提升明显。
Plan-and-Solve 的 Prompt 模板:
让我们先制定一个计划。(识别问题中的关键变量和约束条件,列出解决步骤的框架)然后再按计划逐步执行。(严格按照计划的步骤逐一计算,每步都写出中间结果)为什么比 Zero-shot CoT 更好:
Zero-shot CoT 让模型”边想边写”,容易在中途遗漏关键步骤或跑偏方向——比如一道需要先算面积再算体积的题,模型可能直接跳到体积公式。Plan-and-Solve 先让模型在”计划阶段”审视全局,把所有必要步骤列出来,再在”执行阶段”严格按计划走。这种”先规划后执行”的模式减少了”中间计算错误”和”步骤遗漏”两类问题。研究表明,在多步算术推理上,Plan-and-Solve 比 Zero-shot CoT 的准确率提升约 5-8%。
Least-to-Most Prompting
Section titled “Least-to-Most Prompting”Least-to-Most 把复杂问题分解为从简单到困难的子问题序列:先让模型解最简单的子问题,把答案作为后续子问题的输入,逐步推进到原问题。例如”John 比 Amy 高,Amy 比 Tom 高 10cm,Tom 165cm,John 多高?“先解”Tom 多高”,再解”Amy 多高”,再解”John 多高”。它教会模型把难题化简,对需要组合推理的任务尤其有效。
与 CoT/Plan-and-Solve 的本质区别:
CoT 是让模型”一次性地”展开推理链;Least-to-Most 则是显式地拆成多轮对话——每轮解一个子问题,把子问题的答案固定下来,再在下一轮中使用。这种做法减少了模型的”中间推理出错导致后续全错”的风险,因为每个子问题的答案在确认后才进入下一步。
推理增强的进阶策略(2024-2025 前沿)
Section titled “推理增强的进阶策略(2024-2025 前沿)”除了上述经典方法,2024-2025 年还涌现了多种推理增强策略:
Self-Refine(自我修正):让模型生成答案后,再自我审查——“请检查上面的回答,指出错误并修正”。利用 LLM 的自我反思能力发现和修复错误。简单有效,成本仅为两次推理调用。
Chain-of-Verification (CoVe,验证链):在 CoT 推理后,让模型针对自己的推理步骤生成验证问题,逐一验证,再据此修正最终答案。比 Self-Refine 更结构化——每一步都有专门的验证环节。
Reflexion(反思):模型完成任务后获得反馈(外部反馈或自我评估),将反馈写入”反思记忆”,在下一次尝试时参考之前的反思。它引入了”试错学习”机制,让模型在多轮尝试中逐步改进,适合代码生成、决策优化等任务。
Multi-Agent Debate(多智能体辩论):让多个 LLM 实例扮演不同角色,对同一问题各自推理后互相辩论、质疑对方的推理过程。研究表明辩论能暴露单视角的盲点,提升推理质量——类似于”同行评审”的效果。
这些策略的共同模式:都是通过增加 test-time compute(在推理阶段消耗更多计算)来换取准确率——多次调用、自我审查、多视角验证。在推理模型(o1/R1)时代,其中部分能力已被内化进模型,但它们的核心思想仍然适用于标准 LLM。
与推理模型的关系
Section titled “与推理模型的关系”上述方法都是Prompt 层面的技巧——靠提示引导已有模型表现出推理能力。推理模型 o1 与 R1则是把这些”逐步思考”内化进训练:模型天生就会生成超长思维链,无需用户加 CoT 提示。两者互补:在不使用推理模型时,这些技巧是提升复杂推理的必备手段;理解它们也能帮你更好地理解推理模型的输出风格。
Test-Time Compute Scaling(测试时计算缩放定律):2024 年 OpenAI 的研究表明,推理阶段增加计算量(让模型”想更久”)的收益可媲美扩大模型参数——这催生了推理模型这一新品类。其本质就是:与其让一个大模型”一次猜对”,不如让它”多想几步”。这与 CoT、Self-Consistency、ToT 的思想一脉相承,只是从”用户通过 Prompt 引导”变成了”模型自身内化了这一能力”。
各推理策略思路对比
Section titled “各推理策略思路对比”ReAct 循环
Section titled “ReAct 循环”推理策略复杂度与收益矩阵
Section titled “推理策略复杂度与收益矩阵”Few-shot CoT 引导模型分步推理
Section titled “Few-shot CoT 引导模型分步推理”# 用 Few-shot CoT 引导模型分步推理from openai import OpenAIclient = OpenAI()
# CoT 示例 + 待解问题,引导模型展开推理过程prompt = """请仿照示例一步步推理后给出答案。示例1: 商店有23个苹果,卖出17个,又进了12个,现在有几个?推理: 23-17=6,6+12=18。答案: 18问题: 一本书240页,已读3天每天30页,还剩多少页?推理:"""
resp = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": prompt}], temperature=0.0, # CoT 用低温度保证推理稳定)print(resp.choices[0].message.content) # 输出分步推理与最终答案Self-Consistency 多次采样投票
Section titled “Self-Consistency 多次采样投票”import collectionsfrom openai import OpenAIclient = OpenAI()
question = "一个水池有两个进水管,A 管单独注满需要 6 小时,B 管单独注满需要 4 小时。"question += "两管同时打开,几小时能注满?"
# 采样多条思维链(温度调高以增加多样性)responses = []for _ in range(10): resp = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": question + "\n请一步步推理并给出最终答案。"}], temperature=0.7, # 较高温度 → 多样化推理路径 ) responses.append(resp.choices[0].message.content)
# 简单提取最终答案(实际应用中需更鲁棒的答案抽取)# 此处仅做演示:找每个回答中最后一个数字import reanswers = []for r in responses: nums = re.findall(r"[\d.]+", r) if nums: answers.append(nums[-1])
# 多数票决定最终答案final = collections.Counter(answers).most_common(1)[0]print(f"投票结果: {final[0]}({final[1]}/10 票)")# 正确答案应为 2.4 小时(1/(1/6+1/4) = 1/(5/12) = 12/5 = 2.4)ReAct 智能体示例(简化版)
Section titled “ReAct 智能体示例(简化版)”from openai import OpenAIimport json
client = OpenAI()
# 定义可用工具tools = [ { "type": "function", "function": { "name": "calculator", "description": "进行四则运算", "parameters": { "type": "object", "properties": {"expression": {"type": "string", "description": "数学表达式,如 3*5+2"}}, "required": ["expression"], }, }, },]
def run_tool(name, args): """简化版工具执行器""" if name == "calculator": try: return str(eval(args["expression"])) except Exception as e: return f"计算错误: {e}" return "未知工具"
# ReAct 循环messages = [{"role": "user", "content": "一个长方形长 12cm 宽 8cm,它的面积和周长分别是多少?"}]for step in range(5): # 最多循环 5 轮 resp = client.chat.completions.create( model="gpt-4o-mini", messages=messages, tools=tools, temperature=0.0 ) msg = resp.choices[0].message messages.append(msg) if msg.tool_calls: for tc in msg.tool_calls: args = json.loads(tc.function.arguments) result = run_tool(tc.function.name, args) # 执行 Action messages.append({"role": "tool", "tool_call_id": tc.id, "content": result}) # Observation else: print(f"最终答案: {msg.content}") # Thought 完成,输出答案 break- 从 Zero-shot CoT 开始:加一句”让我们一步步思考”是性价比最高的改进,几乎所有复杂任务都受益,零成本、立竿见影。
- Self-Consistency 用在”有标准答案”的任务:数学、逻辑题投票效果最好;开放式生成(写作)没有标准答案,投票无意义。采样数取 10-40 平衡成本与收益。
- ToT/ReAct 慎用:它们调用次数多、成本高且延迟大,只在 CoT 解决不了、确实需要搜索或工具时才用,并配合智能体框架。
- ReAct 要选对工具:工具的输入输出描述越清晰,模型调用越准确;工具太多会迷惑模型,遵循 MCP 与工具的精简原则。
- Plan-and-Solve 治”算错”:若 CoT 模型总是中间计算出错,加”先制定计划再执行”往往有效,且无需多采样。
- 推理模型可以省掉这些技巧:用 o1/R1 类模型时,它内置长 CoT,再加 CoT 提示反而冗余;这些技巧主要服务 GPT-4o/Llama 等标准模型。
- Self-Refine 是低成本升级:在已有答案基础上追加一轮”请检查并修正”,只需两次推理调用,常能捕获简单错误,是 Self-Consistency 的低成本替代。
- 注意上下文窗口限制:ToT、Self-Consistency 的多条思维链会占用大量上下文(context window,模型一次能处理的 token 上限)。超长推理链需要及时裁剪或总结,否则可能超出窗口导致截断。
- 数学与逻辑题:CoT + Self-Consistency 让通用模型在 GSM8K(一个小学数学应用题基准测试集)等数学基准上准确率大幅提升,是教学辅导、智能做题的核心手段。
- 复杂问答与规划:旅行规划、项目分解等需要多步推导的任务,用 Least-to-Most 或 Plan-and-Solve 把大目标拆成可执行步骤。
- 智能体与工具调用:ReAct 是 智能体的推理骨架,让模型边想边查边操作,支撑浏览器自动化、数据分析助手等。
- 代码调试与求解:Tree of Thoughts 让模型在多种修复思路中搜索评估,处理需要回溯的复杂 bug。Reflexion 让模型在多轮试错中逐步修复编译错误。
- 科学研究辅助:多步推理策略用于文献分析、假设生成、实验设计等需要复杂逻辑推演的场景。
典型类库与工具
Section titled “典型类库与工具”| 类库 | 语言 | 说明 |
|---|---|---|
| LangChain | Python | 提供 CoT / Self-Consistency / ReAct / ToT 的提示模板与智能体抽象 |
| LlamaIndex | Python | 内置推理与工具调用工作流,常用于 RAG + 推理增强 |
| DSPy | Python | 以编程方式优化提示(含 CoT),自动搜索最佳提示策略 |
| guidance | Python | Microsoft 出品,结构化控制模型生成(含分步推理流程) |
| OpenAI Function Calling | API | 原生工具调用接口,ReAct 类智能体的底层支撑 |
| LangGraph | Python | LangChain 出品,支持有状态的循环推理图(ReAct/Reflexion 的高级实现) |
| AutoGen | Python | Microsoft 出品,支持 Multi-Agent Debate 等多智能体协作推理 |
| 术语 | 英文 | 解释 |
|---|---|---|
| 思维链 | CoT, Chain-of-Thought | 让模型生成中间推理步骤再给答案的提示方法 |
| 自洽性 | Self-Consistency | 多次采样 CoT 后对最终答案取多数票 |
| 思维树 | ToT, Tree of Thoughts | 把推理组织成搜索树,支持分支评估与回溯 |
| 推理加行动 | ReAct | 思考与工具调用交替进行的智能体范式 |
| 先规划后执行 | Plan-and-Solve | 先制定计划再逐步执行的 CoT 改进 |
| 从简到难 | Least-to-Most | 把复杂问题拆成由易到难的子问题序列 |
| 提示工程 | Prompt Engineering | 通过设计输入提示引导模型输出的技术总称 |
| 测试时计算 | Test-Time Compute | 推理阶段通过生成更多 token 来提升准确率的策略 |
| 自我修正 | Self-Refine | 模型生成答案后自我审查并修正错误的策略 |
| 验证链 | Chain-of-Verification (CoVe) | 对 CoT 推理的每一步生成验证问题并逐一核查的策略 |
| 反思 | Reflexion | 将反馈写入记忆,在后续尝试中参考的迭代改进策略 |
| 回溯 | Backtracking | 在搜索过程中发现当前路径无效时退回上一个决策点 |
| 幻觉 | Hallucination | 模型生成看似合理但实际错误或虚构的信息 |
| 自回归模型 | Autoregressive Model | 逐 token 预测下一个 token 的生成模型 |
| 涌现现象 | Emergent Ability | 模型在达到一定规模后才显现的能力 |
- Wei et al.,「Chain-of-Thought Prompting Elicits Reasoning in Large Language Models」(NeurIPS 2022):CoT 奠基论文,证明思维链在大模型上激发推理能力。
- Wang et al.,「Self-Consistency Improves Chain of Thought Reasoning」(ICLR 2023):多次采样投票提升 CoT 准确率。
- Yao et al.,「Tree of Thoughts: Deliberate Problem Solving with Large Language Models」(NeurIPS 2023):把推理组织为搜索树的通用框架。
- Yao et al.,「ReAct: Synergizing Reasoning and Acting in Language Models」(ICLR 2023):推理与行动交替的智能体范式。
- Khot et al.,「Decomposed Prompting」(2023) / Zhou et al.,「Least-to-Most Prompting」(2022):问题分解与从简到难的提示策略。
- Shinn et al.,「Reflexion: Language Agents with Verbal Reinforcement Learning」(NeurIPS 2023):反思机制,让智能体从错误中学习。
- Wei et al.,「Chain-of-Verification Reduces Hallucination in LLMs」(2023):验证链减少推理幻觉的结构化方法。
- Snell et al.,「Scaling LLM Test-Time Compute Optimally」(OpenAI, 2024):系统分析测试时计算缩放规律,推理模型的理论基础。
- Prompt 基础见提示工程,内化推理见推理模型,工具调用见MCP 与工具。