参数名称、默认值截至2026年7月核对。思考控制机制这半年迭代较快,如果你按本文操作,建议先去对应模型的官方文档确认一遍当前版本的参数是否还是这个名字。
上一篇讲token价格梯队时,提过一句“看不见的思考token也在计费”。
一、一个真实的踩坑现场
2026年4月,OpenAI开发者社区里有人发帖求助。发帖者在调用GPT-5.4时,传了reasoning_effort: "none",想关掉思考模式——单独测试时这个参数确实有效,思考token归零。但当他在同一个请求里加上max_completion_tokens这个参数后,reasoning_effort的设置被API整体忽略,模型照常进入思考模式,把整段预算全部花在了看不见的推理过程上,最后返回一个空字符串,finish_reason标记为length`。
翻译一下这意味着什么:你以为自己关掉了思考模式,账单却按开着算;你以为请求会给你一个答案,实际上连答案都没能生成,钱已经被思考过程花光了。
这是社区里真实的bug反馈帖[1]。之所以拿它开头,是因为它把这篇文章要讲的核心问题,用一次意外浓缩到了极致:思考token的计费,和你看到的可见文本,从来不是一回事。
二、先把机制讲清楚:你看不见,不代表没生成

推理模型(OpenAI的o系列和开启reasoning_effort的GPT-5.x、Google Gemini的Thinking系列、Claude开启thinking参数后的模型)在给出你看到的那句回答之前,会先生成一段内部的“草稿”——业内把这部分叫reasoning tokens或thinking tokens。
关键在于三点:
第一,这段草稿本身也是token,一个一个生成出来的。 它不是模型“想了一下”这么抽象的说法,而是实打实占用计算、实打实计入用量的一段文本,只是大多数平台默认不把它完整展示给你。
第二,计费按的是完整生成量,不是你看到的展示量。 Claude的官方文档写得很直白:即使思考内容被折叠、不返回给用户,依然要按内部实际生成的thinking token数计费——你在响应里看到的字数,和账单上算的输出token数,本来就不是同一个数字[2]。
第三,思考token和最终答案,被算进同一个“输出token池”,按输出价计费。 这意味着模型越贵,“多想一会儿”的每一秒都是按这个模型最高的单价计时——这也是“思考税”这个说法的字面来源。
举个例子方便理解(注意,这是一个用来说明比例关系的示意性推算,不是某次真实调用的实测数据):假设一次问答,你看到的可见回复只有300个字左右,但模型在给出这句话之前,内部生成了3000个思考token,那么这次调用真正被计费的输出量,大概是3300个token左右——你以为自己在为300字付钱,实际上在为3300字付钱,多出来的十倍,你一个字都没看见。
三、四种翻车方式:钱是怎么被“偷偷”吃掉的

思考税不是一种统一的坑,至少有四种不同的发生机制,前三种都能找到具体的真实案例。
机制一:预算耗尽型——思考吃光配额,答案直接消失
有开发者用GPT-5-mini搭配web_search_preview工具,把max_output_tokens设成了8000,结果依然频繁收到“不完整”的响应。原因是模型把大部分预算花在了思考和搜索调用这两件事上,留给最终JSON输出的token所剩无几[3]。
这暴露的问题很实际:工具调用和思考模式叠加时,预算消耗的速度比单独用思考模式快得多,如果还按“平时够用”的老经验设预算,很容易在这种组合场景里翻车。
机制二:开关失灵型——你以为关了,其实没关
Qwen3.6-35B-A3B有开发者在Hugging Face反馈,设置thinking_budget试图限制思考长度,但实际不起作用[4];另一份GitHub issue里,有人本地部署Qwen3-14B,同样遇到无法关闭思考模式的问题[5]。
这里有个更容易被忽略的细节:Qwen的开源版模型,enable_thinking参数默认是True;只有部分商业版模型默认是False。也就是说,自己部署开源模型时,如果没有显式传参把思考模式关掉,它很可能一直是开着的——这和你调用商业API时的默认体验,可能完全相反。
机制三:习惯性无感型——两周后才发现的账本
有人在一篇复盘文章里提到,自己跑了两周的代码审查流水线,直到某天去查用量明细里的output_tokens_details.reasoning_tokens字段,才发现每次审查平均生成了约8000个推理token,只为了产出一段大约300字的可见结果[6]。
这类翻车最普遍,也最值得普通用户警惕——不是被平台坑了,是从来没有专门去看过那个隐藏字段,任务一直在跑,账单一直在涨,直到某次心血来潮翻明细才发现。
机制四:累加型——Agent的每一步都在重新“动脑子”
前三种机制,都是单次调用里的问题。Agent场景不一样:读一份文件要判断一下,调一次工具要判断一下,看到工具返回结果要再判断一下,写完代码要判断能不能跑,测试失败还要判断怎么改。
如果每一步都开着思考模式,隐藏token就在跟着每一次决策不断累加。单次调用看着不大,循环几十次之后,滚成的费用就很可观了——Agent的成本,不只来自上下文变长,还来自每一轮决策都在重新计费的“动脑子”。
四、什么样的问题特别容易变贵
拆开看,容易在思考token上多花钱的,通常是这四类:
判断题伪装成简单题。 “这是不是高风险客户”“这段代码有没有安全漏洞”,问题看着是个是非题,但判断过程可能要在内部比对好几条规则、排除好几种歧义,答案短,思考不短。
开放任务。 “帮我优化这篇文章”“重构一下这个模块”,模型不知道优化到什么程度算够,容易在内部反复权衡,多想一轮又一轮。
长上下文任务。 合同、代码库、财报,输入本身就长,模型除了要读完,还要在里面定位关键线索,这个过程本身会拉长思考。
带工具的任务。 每次工具结果返回,模型都要重新判断下一步该怎么走,思考token跟着工具调用次数一起叠加。
落到判断上:这些任务不是不能用推理模型,而是不能默认开最高档去处理。

五、六家怎么设上限:一张对比表
各家的参数名不一样,但机制是相通的:都有一个字段控制思考深度,都建议按任务复杂度显式设置,而不是用默认值糊弄过去。
| 厂商/生态 | 控制参数 | 默认行为 | 能否完全关闭思考 |
|---|---|---|---|
| OpenAI(GPT-5.x / o系列) | reasoning.effort(none / low / medium / high / xhigh,具体档位视模型而定) | GPT-5.1起默认none,需显式开启 | 部分模型可以,但max_completion_tokens同传时曾出现开关被忽略的bug |
| Anthropic(Claude) | thinking.budget_tokens(旧)→ 新模型迁移为自适应effort | 默认关闭,需显式启用 | 可以,不传thinking参数即可 |
| Google Gemini | 2.5系列用thinkingBudget(0关闭,-1动态);3/3.1系列改用thinkingLevel(low/medium/high) | 不显式指定thinkingLevel时,Gemini 3/3.1 Pro默认走high,也就是最贵的一档[7] | 2.5系列可以关闭;3系列不可完全关闭,最低只到low |
| 阿里Qwen(DashScope/开源) | enable_thinking + thinking_budget | 开源版默认True,部分商业模型默认False | 可以,但需按版本核实默认值 |
| 智谱GLM | thinking: {type: "enabled"}(原生API)/ enable_thinking(兼容接口) | 需显式启用 | 可以;官方文档明确写着“思考模式下,思维链按照输出Token计费”[8] |
| DeepSeek | 随模型别名路由(如推理专用别名) | 思考模式绑定模型别名,非逐次开关 | 需换用非推理模型别名 |
这张表里最值得单独说一句的,是Gemini这一条。Gemini 3.1 Pro相比上一代,把思考档位从两档(low/high)扩成了三档(low/medium/high),控制粒度确实变细了;但如果你没有显式传thinking_level,API默认会走high,也就是最贵的那一档。这意味着很多什么参数都没改、只是升级了模型版本的老代码,可能在悄悄地多花钱——这条比“能不能关闭”更值得写进你的检查清单。
另外,这张表里的具体数值(比如Gemini各代际thinking_budget的取值上限)没有写死,因为不同版本文档给出的数字并不完全一致,而且还在随版本更新变化。设置之前,建议直接去查当前调用模型对应的官方文档,不要照抄网上任何一篇文章(包括这篇)里的具体数字。
六、怎么设置上限:实操清单
分厂商:
- OpenAI:简单任务用低档
effort或直接设为none;max_output_tokens要留出思考+答案的双重空间,经验值是可见输出预期长度的3到4倍起;每次调用后检查output_tokens_details.reasoning_tokens,别只看最终文本长度。 - Claude:用
budget_tokens(或迁移后的effort)控制思考深度;不要以为思考内容被折叠不显示就不计费,usage里的thinking_tokens才是真实账本。 - Gemini:能不思考的任务,2.5系列把
thinkingBudget设成0,3/3.1系列显式传thinking_level: "low";不管要不要思考,都建议显式传这个参数,不传就是默认最贵档。 - 自部署开源模型(Qwen等):先查默认值,不要假设“没设参数=没开思考”。
通用做法:
- 检查
finish_reason/stop_reason:如果返回length或incomplete,但可见文本是空的,说明预算全喂给了思考过程——不是任务复杂,是设置错了。 - 给不同任务分模型分级:分类、抽取、改格式这类,用便宜模型或直接关闭思考;复杂推理、代码诊断、合同财务分析这类,再上推理模型。
- 给Agent设最大轮数、最大工具调用次数、总token预算上限,防止累加型翻车。
- 一条可以直接抄的硬规则:如果某个接口的隐藏推理token连续几天超过可见输出token的5倍,就该复盘一下任务拆分、模型选择和提示词边界了。
七、一个可以直接落地的三档护栏

把AI调用按复杂度分成三档,比逐次判断更省心:
轻任务:分类、提取字段、改写标题、命中规则判断——默认不开深度思考,限制输出长度。
中任务:摘要、简单代码解释、工单判断——用低到中等思考强度,记录reasoning tokens。
重任务:代码修复、复杂合同审查、多步骤Agent——允许思考,但必须设总预算、轮数上限、失败退出条件。
写在最后
回到开头那个GPT-5.4的案例:那位开发者不是被平台坑了,是没料到reasoning_effort和max_completion_tokens同传时会打架。多数思考税的翻车,本质都是这样——不是被多收了钱,是自己没设上限,或者设错了地方。
推理模型确实更擅长处理复杂问题,但它不是免费的慢思考。以后看AI成本,不能只问“这个模型每百万token多少钱”,还要多问一句:这个任务,会不会让模型在背后偷偷想很久。
你在用推理模型时踩过哪种坑?评论区聊聊。
资料边界说明
- 各厂商参数名称、默认值截至2026年7月核对,思考控制机制迭代较快(尤其Claude的
budget_tokens向自适应effort迁移、Gemini 3系列的thinkingLevel),发布前建议再核对一次官方文档最新版本。 - 文中四个案例,均来自公开开发者论坛或社区反馈帖,属于个案,不代表所有用户在所有场景下都会遇到,也不代表官方承认这是系统性问题。
- 第二节里“300字可见/3000思考/3300计费”这组数字是用来说明比例关系的示意性推算,不是某次真实调用的实测数据。
参考资料
- Gpt-5.4 ignores reasoning_effort=“none” when max_completion_tokens is used - OpenAI Developer Community
- Building with extended thinking - Claude Docs
- GPT-5 mini returns incomplete response when using web_search_preview due to max_output_tokens limit - OpenAI Developer Community
- Qwen/Qwen3.6-35B-A3B · Regarding Qwen 3.6 35B-A3B reasoning/thinking mode - Hugging Face
- 本地部署Qwen3-14B无法关闭思考模式/thinking_budget无效 · Issue #1622 · QwenLM/Qwen3
- Thinking Tokens Explained: What Reasoning Models Cost You
- Gemini 3 / 3.1 Pro thinking_level相关官方与社区文档,包括Google Cloud Vertex AI Gemini Thinking文档及多个第三方实测记录
- GLM系列混合推理模型调用 - 阿里云百炼帮助中心