Python 控制 deepseek-flash 思考模式:thinking 开关与 reasoning_effort 参数实战
deepseek-flash(现由 DeepSeek-V4.1-Flash-1017 提供服务)有一个容易被忽略的默认行为:思考模式默认开启。官方对其的描述是"同时支持非思考与思考(默认)模式"。这意味着如果你直接发起一次普通调用,模型会先思考再作答——质量通常更好,但延迟和输出 token 也随之上涨。本文整理官方文档中的切换方法,并给出什么时候关、什么时候开的判断清单。
参数怎么写:官方示例的原文
官方 Quick Start 的 curl 示例中,请求体包含这样两个字段:
{
"model": "deepseek-flash",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
"thinking": {"type": "enabled"},
"reasoning_effort": "high",
"stream": false
}
翻译成 OpenAI SDK 的 Python 写法,就是把这两个键原样放进参数:
from openai import OpenAI
import os
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://api.deepseek.com",
)
resp = client.chat.completions.create(
model="deepseek-flash",
messages=[{"role": "user", "content": "用三句话解释冯诺依曼架构"}],
extra_body={
"thinking": {"type": "enabled"},
"reasoning_effort": "high",
},
)
print(resp.choices[0].message.content)
把 thinking 的 type 换成 "disabled" 即进入非思考模式。官方文档另有 Thinking Mode 专页说明切换细节;reasoning_effort 的合法取值以官方文档为准——公开示例中出现了 "high",其余档位本站不臆测。
什么时候关掉思考
三类场景建议直接用非思考模式:格式化任务——改写、摘要、分类、抽取这类模式固定的活,思考带来的增益有限;FIM 补全——官方功能表明确标注 FIM Completion(Beta)仅支持非思考模式,做代码补全时没得选;高频短调用——对话机器人里的寒暄、路由分发、关键词提取,每秒几十次调用时,思考的延迟代价会压垮体验。判断标准可以参考本站提示词频道的"简单任务要不要开深度思考"一文。
什么时候保持开启
多步推理、数学、代码调试、智能体规划(DeepSeek 自己的 Harness 编码智能体就跑在这套模型上)——这些任务的错误代价远高于几秒钟延迟,保持思考开启,必要时配合 reasoning_effort 调高投入。V4.1-Flash-1017 版本对智能体编码场景做过专项强化(技术细节见本站技术报告解读),思考模式正是这些训练成果生效的通道。
成本账:开关只影响 token 数量
官方价格表未对思考模式单列计价项——计费仍按输入/输出 token 总量走。差别在于:思考开启时,推理过程消耗的 token 计入输出,输出单价错峰 0.6 美元/百万 tokens(峰时 1.2 美元);关掉思考,同样的任务输出 token 通常明显更少。跑批任务建议把可关思考的请求安排在错峰时段(UTC 周一至周五 01:00–04:00 与 06:00–10:00 以外),叠加上下文缓存能省得更多。动手前若还没有 Key,先看Python 快速开始。
一句话总结:思考模式是 deepseek-flash 的默认武器而不是默认负担——按任务性质拨开关,而不是全局一刀切。
大模型网摘