Mindket

推理强度与思考预算:怎样设置,要花多少

黑色横幅,标题是“推理模型”,下面是“何时让模型多想,以及怎样提示它”。

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

本节内容

  • 找到你所用服务商的强度参数,发出请求之前先确认你的模型接受哪些值。
  • 每次调用都设一个同时容得下思考和答案的 token 上限。
  • 用你自己的任务在每个级别上各跑几遍,保留仍能给出可用答案的最低级别。
  • 换模型之后重新做一次比较,不要沿用旧的级别。
全部课程
本页目录
  1. 开始之前
  2. 各家服务商把设置放在哪里
  3. 同一个任务在每个级别上各跑一遍
  4. 给思考留出空间,否则得不到答案
  5. 一个级别对 token 数有什么影响
  6. 选一个级别
  7. 最低强度下,提示词要写足
  8. 常见错误
  9. 自己试一试
  10. 下一课:判断哪些任务根本需要它
  11. 自测一下
  12. 常见问题
  13. 资料来源

开始之前

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

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

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

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

出自 OpenAI 的推理指南、Anthropic 的扩展思考 cookbook 和 Gemini 的思考 cookbook,均在 2026 年 11 月 6 日阅读。各家都说支持的取值因模型而异,所以要去读具体模型的页面。
服务商与 API参数可选值默认值与陷阱
OpenAI,Responses APIreasoning.effortnone、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 APIoutput_config.effort,同时把 thinking 设为 adaptivelow、medium、high、xhigh 和 maxhigh。旧的 budget_tokens 写法在这个模型上返回 400 错误
Gemini 4 Argon,Interactions APIgeneration_config.thinking_levellow、medium 和 highmedium。它对 thinking_budget 返回 400 错误,也不支持 minimal

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

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

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 来演示这项检查。

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 为它的循环保存的输出,每个级别一次运行。金色柱是四个里最低的。
  • low1,043 个 token
  • medium794 个 token
  • high1,150 个 token
  • xhigh1,332 个 token

来源:Anthropic on GitHub: Claude cookbooks, Extended Thinking (2026年11月6日 查阅)

选一个级别

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

  • Anthropic 在 claude-api 技能里的成本指南,描述了 Anthropic 自己在研究和知识类工作上的测试。low 少了几个点,换来每个任务成本减少三分之一到一半,而 high 相比 medium 没有带来可测量的提升。
  • 在长周期编码上,同一份指南报告了真实的取舍。每降一档,通过率少几个点,是个位数,而最高的几档用成倍的成本换来很少的提升。
  • 它还建议全部先用低档运行,只把失败的用高档重跑。在 Anthropic 的编码测试里,只要有测试或检查器标出失败项,这样做以略多于一半的成本,达到了全部用高档运行的通过率。
  • Claude 在简单任务上想得太多时,Anthropic 的 Opus 4.6 发布文章说要把强度从 high 调到 medium。
出自 OpenAI 推理指南里的强度表,2026 年 11 月 6 日阅读。指南说有些模型只支持这些值中的一部分。
OpenAI 级别指南建议用在什么地方
none对延迟极其敏感、推理帮不上忙的工作,比如语音、快速的信息检索和分类
low速度和成本重要的工具调用、规划、搜索和多步决策:数据分析、起草、偏执行的编码和客户支持
medium大多数工作:智能体编码、研究、电子表格和幻灯片,以及长周期任务
high难度高的推理、复杂的调试和深入的规划,质量比延迟更重要。比较 medium 和 high
xhigh深度研究、长时间的异步运行,以及安全或代码审查。只有评测显示明显收益时才用
max你最复杂的任务。如果你在用 xhigh,看看 max 是否更强

最低强度下,提示词要写足

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

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

常见错误

  • 给拒绝 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,看检查代码会打印出三种结果中的哪一种。
  • 选出答案你仍然愿意发出去的最低级别,再在你最难的例子上提高一档,看答案有没有变好。

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

强度是在调一个你已经选好的推理模型。最后一课问的是更早的问题:一个任务到底需不需要推理模型,附上各厂商的建议和两方面的证据。

自测一下

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

    查看答案

    C. API 返回 HTTP 400 指南说 GPT-6 Astra 不支持 none,设置它会返回 HTTP 400。

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

    查看答案

    D. thinking_budget Gemini cookbook 说 Gemini 4 Argon 不支持 thinking_budget,对它返回 400 错误。

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

    查看答案

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

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

    查看答案

    A. medium 保存的输出里 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 请求之间改变顶层强度,会让消息缓存失效。

资料来源

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

分享本节课

看看智能体怎样设置自己的限制

Mindket 列出了 MCP 服务器和智能体技能,以及它们的安装说明。打开一个,找找它让你选择的模型设置和 token 限制。

浏览 MCP 服务器

本节课的 Markdown 版本 · 推理模型:什么时候用,以及怎样写提示词 · 全部课程