Skip to content

LLM 推理增强技术

本页讲解 LLM 应用生态概览中”提示工程”层的进阶能力——LLM 推理增强技术:通过更聪明的 Prompt 结构,让模型在数学、逻辑、规划等复杂任务上表现大幅提升。这些方法是 提示工程的延伸,也是理解 推理模型 o1 与 R1的基础——推理模型正是把这些”逐步思考”的能力训练进了模型内部。

推理增强 = 给模型一张”草稿纸”和一套”解题套路”。

  • 标准 Prompting(直接问):像问一个学生”答案是多少”,他得心算,复杂题容易算错。
  • CoT(思维链):递给他草稿纸,让他”把过程写出来”——过程对了,答案自然对。
  • Self-Consistency(自洽性):让他把同一道题做很多遍、写很多种解法,最后少数服从多数,比单次更稳。
  • Tree of Thoughts(思维树):像下棋一样每步想多个分支、评估打分、回头换路,能解需要”试错和回溯”的难题。
  • ReAct(推理加行动):边想边查资料/调工具——“想到需要查个数据,就去查;查完接着推理”。
  • Plan-and-Solve(先规划后执行):先列出解题计划,再按计划逐步实施,治”一头扎进去乱算”。
  • Least-to-Most(从简到难):把大问题拆成一系列小问题,从最简单的开始,逐步逼近最终答案。

Transformer 架构的 LLM 本质上是自回归模型(Autoregressive Model)——逐 token(即逐词元)预测下一个最可能出现的文本片段。它没有传统程序中的”变量”或”循环”,也没有人类”心算”那样的隐式工作记忆。面对一道需要 5 步推理的数学题,如果直接要求输出答案,模型必须把全部推理过程压缩进单次前向传播(forward pass,即模型对输入做一次完整的计算),这远远超出了其能力边界。

推理增强的本质是在输出空间中为模型预留更多的”思考 token”,让中间推理步骤显式地出现在上下文中,从而引导模型逐步逼近正确答案。这正是 test-time compute(测试时计算,指模型在推理阶段通过生成更多 token 来换取更高准确率的策略)的核心理念——2024-2025 年的研究表明,在推理阶段投入更多计算资源(让模型”想更久”),其收益可媲美扩大模型规模本身。

直接给模型一个问题(或仅给少量问答示例),让它输出答案。对简单事实题有效,但在多步推理任务上——如数学应用题、逻辑谜题——模型往往”一步算错、全盘皆错”。原因在于:模型是逐 token 生成的,没有显式的”思考过程”可依赖,复杂的中间推理被迫压缩进单次前向,出错率高。

具体来说,当模型面对复杂推理时,它需要在一个 token 的生成中同时完成:(1) 理解问题结构;(2) 规划推理路径;(3) 执行中间计算;(4) 生成最终答案。这四件事的信息量远超一个 token 所能承载。结果就是模型倾向于”跳步”——直接输出一个看起来合理的答案,而中间的推理过程全靠”猜”。

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 提示仍然是激发推理能力的最有效手段。

CoT 单次采样仍可能跑偏。Self-Consistency 的做法:对同一问题用较高温度多次采样不同的思维链(如 20-40 条),各自得到一个最终答案,最后取多数票作为结果。它的假设是:正确的推理路径有多种、彼此收敛到同一答案;错误路径五花八门、各不相同。投票能滤掉偶发错误,显著提升准确率,代价是采样多次、推理成本成倍上升。

数学直觉——大数定律的运用:

假设某题 CoT 单次正确率为 70%。若采样 20 条思维链,每条独立判断,最终答案取多数票。由二项分布近似,多数票正确(≥11/20 正确)的概率约为 91.2%——大幅提升。但这个提升有个前提:各次采样之间要有足够的多样性(diversity),否则如果 20 次都犯同一种系统性错误,投票也无济于事。因此实践中通常把 temperature(温度,控制模型输出随机性的参数)设为 0.5-0.8 以增加多样性。

Self-Consistency 的适用边界:

  • ✅ 有标准答案的任务:数学题、多选题、逻辑判断——最终答案可以精确比较,投票有效。
  • ❌ 开放式生成任务:写作、翻译、摘要——没有唯一正确答案,无法投票。
  • ⚠️ 成本权衡:采样 20 次意味着 20 倍的推理成本和延迟,适合离线批量处理或高价值场景。

CoT 是一条直线,ToT 把推理组织成一棵搜索树:在每个推理节点让模型生成多个候选”下一步思路”,用一个评估函数(通常也是模型自己打分)评估每个候选的前景,再用搜索算法(广度优先/深度优先/束搜索)探索。走到死路可以回溯换分支。它适合需要规划、搜索、回溯的难题(如 24 点游戏、填字、创意写作),效果强但调用次数多、成本高。

ToT 的四个核心组件:

  1. 思维分解(Thought Decomposition):将推理过程拆分为离散的”思维节点”。比如解 24 点,每步是一个数学运算(如 “3 + 5 = 8”)。粒度要根据任务调整——太粗则搜索空间不够灵活,太细则搜索成本爆炸。
  2. 思维生成(Thought Generator):在当前节点,让 LLM 生成 k 个候选的下一步思路。用 Prompt “请给出 3 种不同的下一步推理”来获取多样性。
  3. 状态评估器(State Evaluator):对每个候选状态打分。有两种方式:(a) 数值打分——让 LLM 评估”这个方向有多大可能导向正确答案?“(如 1-10 分);(b) 投票选择——给 LLM 所有候选,让它”投票”选出最有前景的。
  4. 搜索算法(Search Algorithm):BFS(广度优先,保留每层最优 b 个)、DFS(深度优先,走到底再回溯)、Beam Search(束搜索,维持固定宽度的最优路径)。选择取决于树的深度和分支因子。

与 CoT 的关键区别:CoT 是线性推理,一条路走到底;ToT 是树形搜索,允许回溯(backtracking,发现当前路径走不通时退回上一个节点换路)。这让 ToT 能处理需要”试错”的复杂规划任务,但代价是 LLM 调用次数呈指数增长——一棵深度为 3、每层分支为 3 的搜索树需要约 40 次模型调用。

ReAct(Reasoning + Acting)让模型在”思考”和”行动”之间交替:

  1. Thought(思考):模型分析当前状况、决定下一步做什么。
  2. Action(行动):调用一个外部工具(搜索、计算器、数据库查询、API)。
  3. Observation(观察):把工具返回的结果拼回上下文。
  4. 循环,直到得出最终答案。

它把模型的”推理”与外部世界的”事实/计算”结合,是 智能体与工具调用的基础范式——模型不必全靠记忆,可以现查现算。例如解”今天某股票收盘价乘以 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 是 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 把复杂问题分解为从简单到困难的子问题序列:先让模型解最简单的子问题,把答案作为后续子问题的输入,逐步推进到原问题。例如”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。

上述方法都是Prompt 层面的技巧——靠提示引导已有模型表现出推理能力。推理模型 o1 与 R1则是把这些”逐步思考”内化进训练:模型天生就会生成超长思维链,无需用户加 CoT 提示。两者互补:在不使用推理模型时,这些技巧是提升复杂推理的必备手段;理解它们也能帮你更好地理解推理模型的输出风格。

Test-Time Compute Scaling(测试时计算缩放定律):2024 年 OpenAI 的研究表明,推理阶段增加计算量(让模型”想更久”)的收益可媲美扩大模型参数——这催生了推理模型这一新品类。其本质就是:与其让一个大模型”一次猜对”,不如让它”多想几步”。这与 CoT、Self-Consistency、ToT 的思想一脉相承,只是从”用户通过 Prompt 引导”变成了”模型自身内化了这一能力”。

# 用 Few-shot CoT 引导模型分步推理
from openai import OpenAI
client = 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) # 输出分步推理与最终答案
import collections
from openai import OpenAI
client = 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 re
answers = []
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)
from openai import OpenAI
import 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 让模型在多轮试错中逐步修复编译错误。
  • 科学研究辅助:多步推理策略用于文献分析、假设生成、实验设计等需要复杂逻辑推演的场景。
类库语言说明
LangChainPython提供 CoT / Self-Consistency / ReAct / ToT 的提示模板与智能体抽象
LlamaIndexPython内置推理与工具调用工作流,常用于 RAG + 推理增强
DSPyPython以编程方式优化提示(含 CoT),自动搜索最佳提示策略
guidancePythonMicrosoft 出品,结构化控制模型生成(含分步推理流程)
OpenAI Function CallingAPI原生工具调用接口,ReAct 类智能体的底层支撑
LangGraphPythonLangChain 出品,支持有状态的循环推理图(ReAct/Reflexion 的高级实现)
AutoGenPythonMicrosoft 出品,支持 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 与工具。