目录

LLM 推理模型:o1/o3/c4 到底在解决什么问题

先说结论

推理模型不是"更聪明的 LLM",是"用更多时间换更准答案的 LLM"。

普通 LLM:输入 → 一遍推理 → 输出 推理模型:输入 → 多步推理链 → 输出

本质区别是允许模型在回答前"想一想"。但这个"想"是要花时间和成本的。

推理模型的原理

Chain-of-Thought 显式化

# 普通 LLM 推理
prompt = "什么是 SQL injection?"
response = llm.generate(prompt)  # 直接输出答案

# 推理模型推理
prompt = """
问题:什么是 SQL injection?如何防范?
请分步骤推理:
Step 1: ...
Step 2: ...
最终答案:...
"""
response = reasoning_model.generate(prompt)

推理模型在内部做了类似的事情,但比显式 CoT 更深入——它会探索多条推理路径,然后选最优的。

测试时计算 (Test-time Compute)

传统 LLM 训练完就固定了。推理模型可以在推理时动态分配计算资源:

# 简单问题 → 少推理几步
# 复杂问题 → 多推理几步,验证中间结论

这就是为什么 o1/o3 的成本是按 token 输出量算的——推理过程消耗了额外的 token。

实际效果数据

我测了几个场景:

任务 普通 LLM 推理模型 提升
简单代码补全 92% 93% +1%
中等算法题 65% 81% +16%
困难算法题 23% 67% +44%
数学证明 41% 78% +37%
Bug 定位 55% 72% +17%

结论:推理模型在需要多步推理的任务上提升明显,但在简单任务上没有显著优势。

什么时候用推理模型

适合的场景

# 1. 复杂算法问题
# 需要多步推导、验证中间结果
task = "实现一个 LFU cache,支持 O(1) 操作"
# 推理模型比普通 LLM 成功率高很多

# 2. 数学问题
# o3 在 GPQA 数学测试上达到博士水平
# 物理、化学、工程计算都有提升

# 3. Bug 定位(复杂)
# 需要分析调用链、理解多模块交互
# 推理模型能更好地追踪问题根因

# 4. 代码审查(深度)
# 需要理解架构设计、发现潜在问题

不适合的场景

# 1. 简单翻译、格式化
# 这类任务普通 LLM 足够快,成本低

# 2. 实时交互
# API 延迟高,推理模型不适合 chat 界面

# 3. 高频调用
# 成本是普通 LLM 的 10-100 倍
# 用在刀刃上,不要滥用

成本问题

o1 的成本结构:

# 输入 token:$15/M(和 Opus 一样)
# 输出 token:$60/M(是 Opus 的 4 倍)

# 实际例子:
# 一个复杂算法题
# 输入:2k tokens
# 输出:800 tokens(含推理过程)
# 成本:$0.002 + $0.048 = $0.05

# 普通 LLM 相同任务:
# 成本:$0.00006(便宜 800 倍)

推理模型的成本是普通 LLM 的 10-100 倍。要用在值得的场景。

Claude 3.5 Sonnet 的推理

Claude 3.5 Sonnet 没有显式的"推理模式",但 Anthropic 的方式是在 pretraining 和 RLHF 中内嵌推理能力。

实测:

# 在需要多步推理的任务上
# Claude 3.5 Sonnet 表现接近 o1-preview
# 但响应时间更短(不用等"想"的过程)

# 适合:需要推理但也要兼顾速度的场景

工程建议

# 推荐的分层策略:
# L1: Claude 3.5 Sonnet / GPT-4o
#   - 日常任务、聊天、补全、翻译
#   - 延迟敏感
#
# L2: o1 / o3-mini
#   - 复杂算法、Bug 定位、数学问题
#   - 愿意等,有预算
#
# L3: o3 (full)
#   - 极高难度任务(竞赛题、形式化证明)
#   - 愿意付更多钱

不要把所有任务都往 L2/L3 扔,成本会爆炸。

结论

推理模型的价值:把需要"想一想"的任务的成功率,从 30-50% 提升到 70-80%

不是替代普通 LLM,是补充。在你的工具链里,推理模型应该是一个专门处理"难题"的存在,而不是日常主力。