Skip to content

推理模型

OpenAI 的 o 系列推理模型(o3、o4-mini)代表了大语言模型的一个重要进化方向——先思考,再回答。与传统 GPT 模型直接生成回答不同,推理模型会在内部进行逐步的逻辑推理,然后才输出最终结论。

这种"慢思考"机制让推理模型在数学证明、代码调试、多步逻辑推理、科学分析等需要深度思考的任务上表现卓越。当然,这也意味着更多的 token 消耗和更长的响应时间。理解推理模型的工作原理和适用场景,是高效使用 OpenAI API 的关键能力。

推理模型如何"思考"

ℹ️推理模型的核心机制

推理模型与 GPT 模型的根本区别在于:它们在生成最终回答之前,会产生大量的"推理 Token"(Reasoning Tokens)

这些推理 Token 是模型内部的思考过程——分析问题、列举可能性、逐步推导、自我纠错。用户通常看不到完整的推理过程(出于安全和知识产权考虑),但可以通过 API 获取推理摘要(summary)。

打个比方:如果 GPT-4o 是"脱口秀演员"——快速、流畅、直接给出回答;那么 o3 就是"数学家"——先在草稿纸上演算一番,确认无误后才写出最终答案。

推理 Token 不会出现在模型的输出中,但它们会占用上下文窗口并产生费用。这就是为什么推理模型的成本通常高于 GPT 模型。

思维链(Chain of Thought)流程

当你向推理模型发送一个问题时,模型内部会经历以下几个阶段:

推理模型的思维链(Chain of Thought)
接收问题
用户输入
内部推理
逐步分析问题
生成推理 Token
隐藏的思考过程
输出答案
最终结论

接收问题:模型接收用户输入和系统指令(如果有的话)。

内部推理:这是推理模型的核心环节。模型会像人类一样逐步拆解问题——识别已知条件、确定解题思路、排除错误方向。对于数学题,它可能会尝试多种解法然后选择最优的;对于代码问题,它会在脑中"运行"代码来追踪 bug。

生成推理 Token:推理过程会产生大量的中间 Token。这些 Token 是模型的"思考草稿",不会直接展示给用户,但会消耗上下文窗口和 API 费用。对于复杂问题,推理 Token 可能是最终输出的 5-10 倍。

输出答案:推理完成后,模型将结论整理成清晰的回答输出。由于经过了深入思考,最终答案的准确率通常高于直接回答。

Reasoning Effort:控制思考深度

并非所有问题都需要深度思考。OpenAI 提供了 reasoning.effort 参数,让你控制模型的推理强度。这是一个在响应质量和成本/速度之间取得平衡的关键参数。

不同的 Reasoning Effort 设置会显著影响推理 Token 的数量和总成本:

不同 Reasoning Effort 下的 Token 分布
High Effort(复杂数学题)25,000 tokens
Input
Reasoning
Output
Medium Effort(一般分析)8,000 tokens
Input
Reasoning
Output
Low Effort(简单分类)2,000 tokens
Input
Reasoning
Output
Input
Reasoning
Output

从上面的 Token 分布可以直观看出:推理 Token 是成本的主要来源。在 High Effort 模式下,推理 Token 占了总量的 80%。选择合适的 Reasoning Effort 是控制成本的关键。

Reasoning Effort 对比

Reasoning Effort 适用场景 成本影响
Highhigh复杂数学、多步逻辑推理、代码生成最高,大量推理 Token
Mediummedium一般分析、文本理解中等
Lowlow简单分类、格式转换最低,快速响应

选择建议

  • 默认使用 medium,对大多数任务来说已经足够
  • 遇到数学证明、复杂代码逻辑、多步推理题时,切换到 high
  • 对于简单的分类、提取、格式化任务,使用 low 可以节省大量成本
  • 可以通过实验找到每类任务的最佳 Effort 级别

代码示例:使用推理模型

以下示例展示如何调用 o3 模型并设置 Reasoning Effort:

python
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="o3",
    reasoning={"effort": "high"},
    input="证明 √2 是无理数"
)

# 查看推理摘要
for item in response.output:
    if item.type == "reasoning":
        for summary in item.summary:
            print(f"推理过程: {summary.text}")
    elif item.type == "message":
        print(f"最终答案: {item.content[0].text}")
javascript
import OpenAI from "openai";

const client = new OpenAI();

const response = await client.responses.create({
  model: "o3",
  reasoning: { effort: "high" },
  input: "证明 √2 是无理数",
});

// 查看推理摘要
for (const item of response.output) {
  if (item.type === "reasoning") {
    for (const summary of item.summary) {
      console.log(`推理过程: ${summary.text}`);
    }
  } else if (item.type === "message") {
    console.log(`最终答案: ${item.content[0].text}`);
  }
}
bash
curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "o3",
    "reasoning": {"effort": "high"},
    "input": "证明 √2 是无理数"
  }'

关键要点

  • reasoning.effort 接受 "low""medium""high" 三个值
  • 响应中的 reasoning 类型输出包含推理摘要(summary),帮助你了解模型的思考过程
  • 推理摘要不是完整的推理过程,而是经过精简的关键步骤概述

获取推理摘要

默认情况下,API 返回的结果中包含推理摘要。你可以通过 reasoning.summary 参数来控制:

python
response = client.responses.create(
    model="o3",
    reasoning={
        "effort": "high",
        "summary": "auto"  # "auto"(默认)| "concise" | "detailed"
    },
    input="分析这段代码的时间复杂度并优化它:..."
)
  • "auto":模型自行决定摘要详细程度
  • "concise":简短摘要,只包含关键结论
  • "detailed":详细摘要,包含更多推理步骤

o3 vs o4-mini 模型对比

OpenAI 目前提供两个主要的推理模型,它们各有侧重:

特性 o3 o4-mini
上下文窗口200K tokens200K tokens
最大输出100K tokens100K tokens
推理能力最强优秀(STEM 偏向)
速度较慢更快
成本较高更低
适合场景最难的推理任务日常 STEM 与编程任务
支持工具
支持 Structured Outputs

o3 是 OpenAI 最强的推理模型,适合处理最有挑战性的任务:复杂的数学证明、高难度的编程竞赛题、需要长链条推理的分析任务。如果任务的正确性比响应速度和成本更重要,选 o3。

o4-mini 是一个优秀的性价比选择。它在 STEM(科学、技术、工程、数学)领域和编程任务上表现优异,同时成本更低、速度更快。对于大多数日常开发和分析任务,o4-mini 是更实用的选择。

两个模型都支持 Function Calling 和 Structured Outputs,这意味着你可以像使用 GPT 模型一样将它们集成到你的应用中——只不过回答会更深思熟虑。

推理模型与 GPT 模型的关键差异

⚠️使用推理模型时的重要注意事项

推理模型与 GPT 模型在 API 使用上有几个关键差异,迁移时务必注意:

1. 没有 Temperature / Top_p 参数

推理模型不支持 temperaturetop_p 参数。模型的推理过程需要确定性,随机采样会破坏逻辑链条的连贯性。如果你从 GPT 模型迁移到推理模型,需要移除这些参数。

2. System Message 使用 developer 角色

在 GPT 模型中,系统指令使用 system 角色。在推理模型中,应使用 developer 角色:

python
# GPT 模型
input=[{"role": "system", "content": "你是一个数学老师"}]

# 推理模型
input=[{"role": "developer", "content": "你是一个数学老师"}]

这不只是命名变化——developer 消息在推理模型中有更高的指令优先级。

3. 推理 Token 消耗上下文窗口

虽然推理 Token 不出现在输出中,但它们会占用上下文窗口。一个 200K 窗口的模型,如果推理消耗了 50K Token,剩余可用窗口就只有 150K。在处理长文本时需要特别注意这一点。

4. 不支持部分传统参数

推理模型不支持 presence_penaltyfrequency_penaltylogprobs 等参数。简化参数是为了让模型专注于推理本身。

什么时候用推理模型?

选择推理模型还是 GPT 模型,取决于你的具体任务。下面的指南可以帮助你做出决策:

💡推理模型 vs GPT 模型选型指南

选择推理模型(o3 / o4-mini)的场景:

  • 数学计算与证明(尤其是多步推导)
  • 代码调试与复杂算法设计
  • 科学分析与逻辑推理
  • 需要"深度思考"的决策分析
  • 竞赛级编程题
  • 法律或金融领域的复杂条款分析

选择 GPT 模型(GPT-4o / GPT-4o-mini)的场景:

  • 日常对话与问答
  • 文本翻译与摘要
  • 创意写作与内容生成
  • 简单的分类与提取
  • 需要低延迟的实时交互
  • 需要精确控制 Temperature 的创意任务
  • 成本敏感的大批量处理

混合使用策略:

在实际项目中,最佳实践是混合使用两类模型。例如:

  1. 用 GPT-4o-mini 做初步的意图识别和信息提取(成本低、速度快)
  2. 当检测到复杂推理需求时,路由到 o4-mini 或 o3 处理
  3. 用 GPT-4o 做最终的结果润色和格式化

这种"分级路由"策略可以在保证质量的同时大幅降低整体成本。

实战建议

1. 从 Medium Effort 开始

不要一上来就用 high。先用 medium 测试,观察结果质量。只有当 medium 的结果不够准确时,才升级到 high。很多任务在 medium 下已经能得到正确答案。

2. 善用推理摘要

推理摘要不仅是调试工具,也可以用来向用户展示"模型是如何得出结论的"。在需要可解释性的场景(如医疗辅助、金融分析),推理摘要可以增加用户对结果的信任。

3. 注意成本控制

推理模型的成本主要来自推理 Token。一个复杂问题可能产生数万个推理 Token。建议:

  • 设置 max_output_tokens 来限制总输出
  • reasoning.effort 精确控制推理深度
  • 对于批量任务,先用小样本测试成本,再决定是否大规模使用

4. Prompt 风格调整

推理模型对 Prompt 的要求与 GPT 模型不同:

  • 少用"一步一步思考"——推理模型本身就会逐步思考,重复要求反而浪费 Token
  • 直接描述任务即可——推理模型擅长自行拆解问题
  • 可以给更难的任务——推理模型的能力上限远高于 GPT 模型,不需要把任务拆得太细