Claude 3.7 Sonnet 的 Extended Thinking 不是自动挡
Claude 3.7 Sonnet 的 Extended Thinking 不是自动挡:什么时候该开,什么时候关
我第一次认真用 thinking,心里想的是:这下稳了,复杂问题交给模型“多想一会儿”,答案应该更漂亮。
结果很打脸。
一个本来一句话就能回答的简单问答,它先沉默了好几秒,像是在认真做数学题,最后给我吐出一段绕来绕去的解释。那一刻我才意识到:混合推理不是“更聪明的自动挡”,而是一把需要你主动选择时机的工具。
它能救你,也能拖你后腿。
---
先把概念说清楚
很多人对 Claude 3.7 Sonnet 的 Extended Thinking 有个误解:以为只要打开“思考模式”,模型就会自动在所有任务上变强。
不是。
更准确地说,它通常需要你在 API 层,或者在支持该能力的客户端里显式开启。开启以后,模型会在正式输出前先生成一段对用户不可见的内部草稿。这部分“想”的过程不会直接展示给你看,但它会真实消耗算力:延迟会上升,token 消耗也会增加。
所以,thinking 本质上不是“免费加智商”,而是用更多等待时间,换更高概率的严谨答案。
一句话记住:它不是默认更好,而是更适合“值得多想”的任务。
---
测试怎么设计,才不容易被直觉骗
为了判断它到底值不值得开,我把任务分成四类:
1. 数学 / 逻辑推理
看模型能不能稳住链路,避免中途漏条件、跳步骤。
2. 开放式创意写作
看它会不会变得更严谨,但同时失去一点灵气。
3. 代码调试
看它能不能更准确地定位 bug,而不是只会“猜一个可能”。
4. 信息检索与摘要
看它是否真的提高提炼能力,还是只是在做无意义的“过度思考”。
对照组与实验组
- 对照组:关闭
thinking - 实验组:开启
thinking,budget_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学习