# 推理强度与思考预算：怎样设置，要花多少

> 推理强度告诉模型回答之前要想多用力。OpenAI 用 reasoning.effort 设置，Claude 用 output_config.effort，Gemini 用 thinking_level。级别越高，用的 token 和时间越多，而且思考会占用输出上限。先用默认值，把上限留宽，再用你自己的任务比较更低和更高的级别。

Mindket 编辑部 · 发布于 2026-11-06 · 更新于 2026-11-06 · https://mindket.com/cn/learn/reasoning-models/reasoning-effort

## 要点

- 找到你所用服务商的强度参数，发出请求之前先确认你的模型接受哪些值。
- 每次调用都设一个同时容得下思考和答案的 token 上限。
- 用你自己的任务在每个级别上各跑几遍，保留仍能给出可用答案的最低级别。
- 换模型之后重新做一次比较，不要沿用旧的级别。

## 开始之前

你需要 Python 3，以及三家服务商中至少一家的 API 密钥。步骤用的是 Claude 的 Messages API，因为 Anthropic 的 cookbook 里有现成的循环，每一步也会写出 OpenAI 和 Gemini 上对应的设置。

有两个词要先说清楚。强度是一个有名字的级别，比如 low 或 high，告诉模型要想多用力。思考预算是给思考的 token 额度。较早的 Claude 模型用 `budget_tokens` 以数字接收它，Gemini 旧的 `thinking_budget` 参数也是数字。本课里最新的模型改用级别。

## 各家服务商把设置放在哪里

在三家服务商那里，一次请求需要多少思考仍由模型自己决定，这个设置只是引导它。OpenAI 说它的模型会在不同强度下自适应地推理，简单任务用更少的 token。Google 说 `high` 是让模型按提示词需要想得尽可能深，并不等于总是用到最大。

| 服务商与 API | 参数 | 可选值 | 默认值与陷阱 |
| --- | --- | --- | --- |
| OpenAI，Responses API | `reasoning.effort` | none、minimal、low、medium、high、xhigh 和 max，因模型而异 | gpt-5.5、GPT-5.6、GPT-6.1 Sol、GPT-6 Sol 和 GPT-6 Luna 默认 medium。GPT-6 Astra 对 none 返回 HTTP 400，GPT-6.1 Sol 不接受 none 和 minimal |
| Claude Sonnet 5.5，Messages API | `output_config.effort`，同时把 `thinking` 设为 adaptive | low、medium、high、xhigh 和 max | high。旧的 `budget_tokens` 写法在这个模型上返回 400 错误 |
| Gemini 4 Argon，Interactions API | `generation_config.thinking_level` | low、medium 和 high | medium。它对 `thinking_budget` 返回 400 错误，也不支持 minimal |

## 同一个任务在每个级别上各跑一遍

cookbook 里的循环把同一条提示词发四次，只改强度。它会为每个级别打印输出 token 数和思考摘要的长度。想看一个级别对你自己的任务有什么影响，这是个省事的办法。

````python
import anthropic

client = anthropic.Anthropic()
max_tokens = 16000
base_messages = [{"role": "user", "content": "<a task from your own work>"}]

for effort in ["low", "medium", "high", "xhigh"]:
    response = client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=max_tokens,
        thinking={"type": "adaptive", "display": "summarized"},
        output_config={"effort": effort},
        messages=base_messages,
    )
    summary_chars = sum(len(b.thinking) for b in response.content if b.type == "thinking")
    answer = " ".join(b.text for b in response.content if b.type == "text")
    print(f"\nWith effort={effort!r}:")
    print(f"Output tokens (thinking + answer): {response.usage.output_tokens}")
    print(f"Thinking summary length: {summary_chars} characters")
    print(f"Final answer preview: {answer[:120]}...")
````

1. 从你的工作里挑一个答案能核对的任务，放进 `base_messages`。
2. 运行循环。`usage.output_tokens` 统计的是完整的思考加上答案，尽管返回给你的摘要更短。
3. 把每个答案和你信得过的那份对照，记下第一个够用的级别。
4. 至少再运行两遍循环。一次运行是有噪声的，下面的图表就是例子。
5. 在 OpenAI 上，调用 `client.responses.create` 并传入 `reasoning={"effort": effort}`，读取 `usage.output_tokens_details.reasoning_tokens`。在 Gemini 上，传入 `generation_config={"thinking_level": level}`，读取 `usage.total_thought_tokens`。

## 给思考留出空间，否则得不到答案

容得下答案的上限，可能不够它前面的思考用。OpenAI 的指南说，生成的 token 在出现任何可见输出之前就触到上限时，响应会带着 `incomplete` 状态和 `max_output_tokens` 原因返回。输入和推理照样计费，你却拿不到任何可见文字。下面是指南自己的示例，它把上限设成 300 个 token 来演示这项检查。

````python
from openai import OpenAI

client = OpenAI()

prompt = """
Write a bash script that takes a matrix represented as a string with
format '[1,2],[3,4],[5,6]' and prints the transpose in the same format.
"""

response = client.responses.create(
    model="gpt-6-astra",
    reasoning={"effort": "medium"},
    input=[{"role": "user", "content": prompt}],
    max_output_tokens=300,
)

if (
    response.status == "incomplete"
    and response.incomplete_details.reason == "max_output_tokens"
):
    print("Ran out of tokens")
    if response.output_text:
        print("Partial output:", response.output_text)
    else:
        print("Ran out of tokens during reasoning")
````

- OpenAI：`max_output_tokens` 把推理、可见输出和格式 token 合在一起限制。OpenAI 建议刚开始时至少预留 25,000 个 token。
- Claude：思考 token 计入 `max_tokens`，cookbook 用的是 16,000，并注释说思考需要留出余量。
- Gemini 4 Argon：`max_output_tokens` 把思考和输出合在一起限制。Google 建议保持在 32,768 或更高。

## 一个级别对 token 数有什么影响

cookbook 保存了它的循环在一道五场讲座排期题上的输出。Claude Sonnet 5.5 在 low 级别产生 1,043 个输出 token，medium 是 794，high 是 1,150，xhigh 是 1,332。同一个笔记本里更早的一次 xhigh 调用用了 1,595。low 和 medium 级别下，思考摘要是空的，cookbook 说 Claude 可能判断某条提示词不需要思考，最可能出现在简单的提示词和较低的强度上。

把它当作一次运行来读。medium 比 low 还少，两次 xhigh 调用相差 263 个 token。强度是在引导一个自适应的模型，并不固定一个数量，所以比较需要重复运行，任务也要难到值得一比。

**每个强度级别的输出 token，Claude Sonnet 5.5** 思考加答案，取自 cookbook 为它的循环保存的输出，每个级别一次运行。金色柱是四个里最低的。

- low: 1,043 个 token
- medium: **794 个 token**
- high: 1,150 个 token
- xhigh: 1,332 个 token

来源：[Anthropic on GitHub: Claude cookbooks, Extended Thinking](https://github.com/anthropics/claude-cookbooks/blob/main/extended_thinking/extended_thinking.ipynb) (2026-11-06 查阅)

## 选一个级别

OpenAI 的表格说明了每个级别适合什么。它把 `medium` 当作大多数工作的默认值，把 `xhigh` 当作要有证据才用的级别。先从默认值开始。

- Anthropic 在 claude-api 技能里的成本指南，描述了 Anthropic 自己在研究和知识类工作上的测试。low 少了几个点，换来每个任务成本减少三分之一到一半，而 high 相比 medium 没有带来可测量的提升。
- 在长周期编码上，同一份指南报告了真实的取舍。每降一档，通过率少几个点，是个位数，而最高的几档用成倍的成本换来很少的提升。
- 它还建议全部先用低档运行，只把失败的用高档重跑。在 Anthropic 的编码测试里，只要有测试或检查器标出失败项，这样做以略多于一半的成本，达到了全部用高档运行的通过率。
- Claude 在简单任务上想得太多时，Anthropic 的 Opus 4.6 发布文章说要把强度从 high 调到 medium。

| OpenAI 级别 | 指南建议用在什么地方 |
| --- | --- |
| none | 对延迟极其敏感、推理帮不上忙的工作，比如语音、快速的信息检索和分类 |
| low | 速度和成本重要的工具调用、规划、搜索和多步决策：数据分析、起草、偏执行的编码和客户支持 |
| medium | 大多数工作：智能体编码、研究、电子表格和幻灯片，以及长周期任务 |
| high | 难度高的推理、复杂的调试和深入的规划，质量比延迟更重要。比较 medium 和 high |
| xhigh | 深度研究、长时间的异步运行，以及安全或代码审查。只有评测显示明显收益时才用 |
| max | 你最复杂的任务。如果你在用 xhigh，看看 max 是否更强 |

## 最低强度下，提示词要写足

OpenAI 的 GPT-5 指南说，GPT-5 的 minimal 推理强度，也就是它最低的级别，比更高级别更依赖提示词。推理 token 少了，内部规划就少了，提示词要多承担一些。这份指南已经归档，是为 GPT-5 写的，所以把下面四点当作你的模型所接受的最低强度下的起步清单，并用自己的任务核对。基础的提示词写法见[上一课](https://mindket.com/cn/learn/reasoning-models/prompt-reasoning-models)。

- 要求在最终答案的开头用简短的话说明思考过程。指南说这能提高需要更多智力的任务的表现。
- 要求写详尽的工具调用前言，让用户随时知道进展，指南说这对智能体类工作有帮助。
- 把工具说明写得没有歧义，并加一条提醒：一直做下去，直到请求完全解决。
- 在智能体任务的开头放一段规划。

## 常见错误

- 给拒绝 `none` 的模型发送 `none`。GPT-6 Astra 返回 HTTP 400，GPT-6.1 Sol 既不接受 none 也不接受 minimal。
- 把一个级别沿用到新模型上。Anthropic 的指南说默认强度因模型而异，每个级别背后的 token 也可能变化，所以要从新模型的默认值开始重新比较。
- 凭一次运行就判断一个级别。Anthropic 的指南认为，单次运行里一两个任务的差别在噪声范围内。
- 用提高强度来弥补含糊的提示词。OpenAI 把强度称作微调旋钮，而不是挽回质量的主要手段。
- 在拒绝旧 `budget_tokens` 调用的模型上继续用它。

## 自己试一试

- 把你自己的比较运行三次，画出每个级别的输出 token。每次的顺序都一样吗？
- 在 OpenAI 的调用上，把 medium 强度下的 `max_output_tokens` 设为 300，看检查代码会打印出三种结果中的哪一种。
- 选出答案你仍然愿意发出去的最低级别，再在你最难的例子上提高一档，看答案有没有变好。

## 下一课：判断哪些任务根本需要它

强度是在调一个你已经选好的推理模型。[最后一课](https://mindket.com/cn/learn/reasoning-models/when-to-use-reasoning-models)问的是更早的问题：一个任务到底需不需要推理模型，附上各厂商的建议和两方面的证据。

## 自测一下

1. 对 GPT-6 Astra 的调用把推理强度设为 none。OpenAI 的指南说会怎样？

   A. 跳过思考，调用成功
   B. 模型退回到 minimal
   C. API 返回 HTTP 400
   D. 模型按 medium 思考

   答案：C。 指南说 GPT-6 Astra 不支持 none，设置它会返回 HTTP 400。

2. 发给 Gemini 4 Argon 的请求带上哪个设置，会返回 400 错误？

   A. 把 thinking_level 设为 high
   B. 把 thinking_summaries 设为 auto
   C. 把 max_output_tokens 设为 65536
   D. thinking_budget

   答案：D。 Gemini cookbook 说 Gemini 4 Argon 不支持 thinking_budget，对它返回 400 错误。

3. OpenAI 的响应是 incomplete，原因是 max_output_tokens，也没有返回可见文字。你要为什么付费？

   A. 什么都不用付，因为没有答案
   B. 输入和推理 token
   C. 只付输入 token
   D. 只付可见输出

   答案：B。 指南说上限可能在出现任何可见输出之前就触到，所以你可能为输入和推理付了费，却没有得到响应。

4. 在 Anthropic cookbook 保存的 Claude Sonnet 5.5 运行结果里，哪个级别的输出 token 最少？

   A. medium
   B. low
   C. high
   D. xhigh

   答案：A。 保存的输出里 medium 是 794 个 token，low 是 1,043，这说明单次运行不能当作规律。

## 常见问题

### 推理强度和回复的详略是一回事吗？

不是。OpenAI 的 GPT-5 指南介绍了另一个 `verbosity` 参数，它影响的是最终答案的长度，而不是思考的长度。强度控制模型想得多用力，不控制回复有多长。

### 还需要设置思考预算吗？

最新的模型上不需要。本课里的 Claude 和 Gemini 模型拒绝预算写法，改用级别。较早的 Claude 模型用 `budget_tokens`，Anthropic 的 SDK 把它记作至少 1,024，并计入 `max_tokens`。

### 推理强度越高，答案一定越好吗？

不一定。OpenAI 说只有评测显示明显收益、足以抵消额外延迟和成本时，才用 xhigh，Anthropic 的测试也在某些工作负载上发现曲线是平的。上面的比较能告诉你手头的任务属于哪一种。

### 为什么我的推理模型没有返回文字？

多半是 token 上限在思考阶段就用完了。在 OpenAI 上，响应的状态会是 incomplete，把 `max_output_tokens` 调高就能解决。Gemini 和 Claude 也是同样把思考算进上限。

### 能在对话进行到一半时改变强度吗？

可以，但要小心。OpenAI 说在 GPT-6 及之后的模型上，要在两次响应之间加一个 `configuration_update` 项，因为这样能保住缓存的提示词前缀。Anthropic 的成本指南说，在两次 Claude 请求之间改变顶层强度，会让消息缓存失效。

## 资料来源

- [OpenAI Docs: Reasoning models](https://developers.openai.com/api/docs/guides/reasoning) (2026-11-06 查阅)
- [OpenAI Docs: Using GPT-6](https://developers.openai.com/api/docs/guides/latest-model) (2026-11-06 查阅)
- [OpenAI Cookbook: GPT-5 prompting guide (archived)](https://developers.openai.com/cookbook/examples/gpt-5/gpt-5_prompting_guide) (2026-11-06 查阅)
- [Anthropic on GitHub: Claude cookbooks, Extended Thinking](https://github.com/anthropics/claude-cookbooks/blob/main/extended_thinking/extended_thinking.ipynb) (2026-11-06 查阅)
- [Anthropic on GitHub: claude-api skill, cost optimization guide](https://github.com/anthropics/skills/blob/main/skills/claude-api/shared/cost-optimization.md) (2026-11-06 查阅)
- [Anthropic: Introducing Claude Opus 4.6](https://www.anthropic.com/news/claude-opus-4-6) (2026-11-06 查阅)
- [Anthropic on GitHub: Python SDK, Messages resource](https://github.com/anthropics/anthropic-sdk-python/blob/main/src/anthropic/resources/messages/messages.py) (2026-11-06 查阅)
- [Google Gemini on GitHub: Get started with thinking](https://github.com/google-gemini/cookbook/blob/main/quickstarts/Get_started_thinking.ipynb) (2026-11-06 查阅)

[浏览 MCP 服务器](https://mindket.com/cn/mcp-servers)
