Claude 3.7 Sonnet 的 Extended Thinking 不是自动挡:什么时候该开,什么时候关

我第一次认真用 thinking,心里想的是:这下稳了,复杂问题交给模型“多想一会儿”,答案应该更漂亮。

结果很打脸。

一个本来一句话就能回答的简单问答,它先沉默了好几秒,像是在认真做数学题,最后给我吐出一段绕来绕去的解释。那一刻我才意识到:混合推理不是“更聪明的自动挡”,而是一把需要你主动选择时机的工具。

它能救你,也能拖你后腿。

---

先把概念说清楚

很多人对 Claude 3.7 Sonnet 的 Extended Thinking 有个误解:以为只要打开“思考模式”,模型就会自动在所有任务上变强。

不是。

更准确地说,它通常需要你在 API 层,或者在支持该能力的客户端里显式开启。开启以后,模型会在正式输出前先生成一段对用户不可见的内部草稿。这部分“想”的过程不会直接展示给你看,但它会真实消耗算力:延迟会上升,token 消耗也会增加

所以,thinking 本质上不是“免费加智商”,而是用更多等待时间,换更高概率的严谨答案

一句话记住:它不是默认更好,而是更适合“值得多想”的任务。

---

测试怎么设计,才不容易被直觉骗

为了判断它到底值不值得开,我把任务分成四类:

1. 数学 / 逻辑推理

看模型能不能稳住链路,避免中途漏条件、跳步骤。

2. 开放式创意写作

看它会不会变得更严谨,但同时失去一点灵气。

3. 代码调试

看它能不能更准确地定位 bug,而不是只会“猜一个可能”。

4. 信息检索与摘要

看它是否真的提高提炼能力,还是只是在做无意义的“过度思考”。

对照组与实验组

  • 对照组:关闭 thinking
  • 实验组:开启 thinkingbudget_tokens = 8000

评分标准

我主要看三件事:

  • 准确率:有没有答对
  • 一致性:同类问题多次问,答案稳不稳
  • 输出可用度:能不能直接拿去用,而不是还得重写

为了避免把个人体感包装成 benchmark,下面的延迟和 token 消耗我会用示意性估算来写,方便你理解参数含义;你自己跑的时候,记得替换成真实观测值。

---

四类任务,结论其实很不一样

1)数学 / 逻辑推理:收益最明显

Prompt 示例:
有 3 个盒子,A 盒子写着“苹果”,B 盒子写着“香蕉”,C 盒子写着“混合”。三句话中只有一句是真的,问:每个盒子里分别是什么?

#### thinking-off 示例输出

可能需要重新检查标签逻辑,A 不一定是苹果……
结论:A=香蕉,B=混合,C=苹果。

#### thinking-on 示例输出

先假设 A 标签为真,会导致 B、C 的标签真假冲突,违背“只有一句真话”。
再分别排除其他情况后,唯一满足条件的是:A=混合,B=苹果,C=香蕉。
一句结论:

这类题开 thinking 很值,原因不是它“更会猜”,而是它更擅长把条件一条条锁住,少犯那种看起来聪明、其实漏条件的错。

---

2)开放式创意写作:有提升,但有限

Prompt 示例:
写一段 200 字的产品介绍,语气像少数派,主题是“AI 备忘录”。

#### thinking-off 示例输出

AI 备忘录不是替你记住一切,而是帮你把碎片化信息重新整理成可执行的下一步。它像一个不会打断你的秘书,悄悄把会议纪要、灵感和待办串起来……

#### thinking-on 示例输出

AI 备忘录的价值,不在“记得更多”,而在“更快回到上下文”。它把你散落在聊天、网页、会议里的信息,压缩成一条可追溯的线索……
一句结论:

创意写作开 thinking 不会明显变“更有才华”,但会更克制、稳定、结构化。如果你想要的是爆发力,它未必更好;如果你想要的是不跑偏,它会更可靠。

---

3)代码调试:这是它最像“认真同事”的地方

Prompt 示例:
Python 代码报错:TypeError: 'NoneType' object is not subscriptable,请定位原因并修复。

>

> user = get_user(uid)
name = user["profile"]["name"]
print(name)

#### thinking-off 示例输出

get_user(uid) 可能返回了 None。请先判断 user 是否为空,再访问 profile

#### thinking-on 示例输出

错误的根因不是 profile 本身,而是 get_user(uid) 在部分 uid 下返回 None
修复方式:先判空,再逐层访问;如果业务允许,还要给出兜底提示,避免异常传播到上层。
一句结论:

代码调试里,thinking 常常不是在“多算”,而是在更严格地追因果链。它对“报错来自哪里”这件事,通常比关闭时更稳。

---

4)信息检索与摘要:几乎没差别,甚至有点浪费

Prompt 示例:
请把下面这段 500 字新闻摘要成 3 句话,保留核心事实。

#### thinking-off 示例输出

新闻核心是……
第二句是……
第三句总结影响……

#### thinking-on 示例输出

这段内容的关键在于……
从信息密度看,应优先保留……
最后可归纳为……
一句结论:

这种任务开 thinking 往往收益很小,因为它本身就是“压缩信息”,不是“求解难题”。简单的事情开 thinking,会让模型过度谨慎,反而变啰嗦。

---

一个你大概率会踩的坑

我最不建议拿 thinking 干的事,就是简单问答

比如你只是问:

“北京今天适合穿外套吗?”

不开 thinking 时,它可能直接给你一个简洁判断。

开了以后,它可能开始分析季节、气温波动、体感差异、出门时长、室内外温差……最后给出一段像天气播报稿一样的回答。

这不是“更周到”,很多时候只是把一句话问题,硬升级成一场小型论文答辩

---

什么时候该开:一个 2×2 决策矩阵

把任务分成两个维度:

  • 横轴:答案是否唯一 / 可验证
  • 纵轴:容错成本高低
| | 容错成本低 | 容错成本高 | | 答案不可唯一验证 | 默认关,例如文案润色、灵感发散 | 视情况开,但别期待稳定提升 | | 答案可唯一验证 | 可开可不开,例如普通计算 | 优先开,例如数学题、代码排错、复杂决策 |

记住这三句话就够了

1. 能验证、且答错代价高,就开。

2. 不能验证、或者只是为了更顺口,就先别开。

3. 越简单的任务,越容易被 thinking 拖慢。

---

实操:最小可用代码

下面是一个最小化的 Python 示例,核心就是把 thinking 显式打开,并设置 budget_tokens

from anthropic import Anthropic

client = Anthropic(api_key="YOUR_API_KEY")

resp = client.messages.create(

model="claude-3-7-sonnet-latest",

max_tokens=1200,

thinking={

"type": "enabled",

"budget_tokens": 8000

},

messages=[

{

"role": "user",

"content": "请帮我排查下面这段 Python 代码的报错原因,并给出修复版。"

}

]

)

print(resp.content[0].text)

budget_tokens 怎么调

  • 先从小预算开始:别一上来就拉满 8000
  • 题越难,预算越值得给:数学、代码、复杂逻辑更适合
  • 摘要、改写、闲聊:预算可以非常保守,甚至直接关掉

你可以把它理解成:budget_tokens 不是“越大越聪明”,而是给模型留多少时间把事情想透

如果题本来就不难,留太多时间,只会让它开始自我表演。

如果你还没有 Claude API 的访问权限,或者想在正式接入前先低成本地跑通这套测试逻辑,可以通过 api.884819.xyz 直接调用兼容接口,参数格式与本文示例完全一致,不需要额外改代码。新用户注册即送体验token。

---

结语:别把它当自动驾驶,把它当“临时加班的专家”

测完 Claude 3.7 Sonnet 的 Extended Thinking,我最大的收获不是“它更强”,而是终于搞明白了:它强在你把它放在对的位置。

当任务是可验证的、容错成本又高,thinking 很像一个会认真复盘的资深同事。

但当任务很简单、很开放、或者只是需要快速给个答案时,它反而可能因为“太认真”而变慢、变长、变啰嗦。

所以别再问“要不要永远开 thinking”,真正该问的是:

这道题,值不值得让模型多想几秒?

下一篇我会继续往前走一步:如果把 thinking 里那段看不见的内部草稿拿出来,二次喂回 prompt,会发生什么?

这个玩法目前中文资料很少,但有些场景里,效果比你想的更有意思。

本文由8848AI原创,转载请注明出处。

#AI教程 #Claude #ExtendedThinking #Prompt技巧 #人工智能 #8848AI #API调用 #AI学习