DeepSeek V4 推理模式(Thinking Mode)API 教程:CoT 链式思考实战(2026)
TL;DR — DeepSeek V4 支持 thinking mode(推理模式),通过 Chain-of-Thought(链式思考)输出完整推理过程,在数学、代码、逻辑推理等任务上表现优异。本文介绍如何通过 API 启用 thinking mode,并给出实战场景和成本优化建议。
DeepSeek V4 的 Thinking Mode 是什么?
DeepSeek V4 支持两种工作模式:
| 维度 | Thinking Mode(推理模式) | 普通模式 |
|---|---|---|
| 核心能力 | 深度推理、多步思考 | 通用对话、代码生成 |
| 输出方式 | 显式 CoT 思考过程 + 最终答案 | 直接给出答案 |
| 适用场景 | 数学证明、算法设计、复杂 debug | 日常对话、文档生成、简单编程 |
| 响应速度 | 较慢(需要推理时间) | 快 |
| 价格 | 输出 token 更贵(包含推理过程) | 相对便宜 |
| 启用方式 | extra_body={'thinking': {'type': 'enabled'}} | 默认模式 |
Chain-of-Thought(CoT)是什么?
CoT 是一种让 AI 模型”展示思考过程”的技术。传统模型直接给答案,CoT 模型会先输出推理步骤,再给结论。
示例对比:
问题:一个数列 2, 6, 12, 20, 30… 第 10 项是多少?
通用模型(普通模式):
第 10 项是 110。
Thinking Mode(推理模式):
<thinking>
观察数列规律:
- 2 = 1×2
- 6 = 2×3
- 12 = 3×4
- 20 = 4×5
- 30 = 5×6
发现规律:第 n 项 = n × (n+1)
验证:
- n=1: 1×2=2 ✓
- n=2: 2×3=6 ✓
- n=3: 3×4=12 ✓
所以第 10 项 = 10 × 11 = 110
</thinking>
第 10 项是 110。
CoT 的价值在于:
- 可验证性:能看到推理过程,发现错误更容易
- 可调试性:如果答案错了,能定位是哪一步推理出错
- 可信度:有推理依据的答案比”黑盒输出”更可信
如何调用 DeepSeek V4 的 Thinking Mode?
DeepSeek V4 通过官方 API 提供服务,使用 OpenAI 兼容接口。
DeepSeek 官方 API
Python 示例:
from openai import OpenAI
client = OpenAI(
api_key="your-deepseek-api-key",
base_url="https://api.deepseek.com"
)
response = client.chat.completions.create(
model="deepseek-v4-flash", # 或 deepseek-v4-pro
messages=[
{
"role": "user",
"content": "证明:对于任意正整数 n,n^3 - n 能被 6 整除。"
}
],
extra_body={
"thinking": {
"type": "enabled" # 启用 thinking mode
}
}
)
print(response.choices[0].message.content)
cURL 示例:
curl https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-deepseek-api-key" \
-d '{
"model": "deepseek-v4-flash",
"messages": [
{
"role": "user",
"content": "写一个算法:找出数组中和为目标值的两个数的索引。要求时间复杂度 O(n)。"
}
],
"thinking": {
"type": "enabled"
}
}'
Node.js 示例:
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env.DEEPSEEK_API_KEY,
baseURL: 'https://api.deepseek.com'
});
const response = await client.chat.completions.create({
model: 'deepseek-v4-flash',
messages: [
{
role: 'user',
content: '分析这段代码的时间复杂度,并给出优化建议:\n\nfor i in range(n):\n for j in range(n):\n if arr[i] + arr[j] == target:\n return [i, j]'
}
],
extra_body: {
thinking: {
type: 'enabled'
}
}
});
console.log(response.choices[0].message.content);
重要说明:
- Thinking mode 默认启用,但建议显式声明
extra_body参数以确保明确性 - Thinking mode 不支持
temperature、top_p、presence_penalty、frequency_penalty参数 - 可选模型:
deepseek-v4-flash(更快更便宜)或deepseek-v4-pro(更强推理能力)
获取 API Key
- 访问 DeepSeek 官网
- 注册账号并完成认证
- 在控制台创建 API Key
- 充值后即可使用(支持国际信用卡)
注意事项:
- DeepSeek 官方 API 可能需要科学上网访问
- 支付方式为国际信用卡
- 建议设置使用额度上限,避免超支
实战场景:什么时候用 Thinking Mode?
✅ 适合用 Thinking Mode 的场景
1. 复杂数学问题
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{
"role": "user",
"content": "一个圆柱体的体积是 100π cm³,高是 4 cm。如果将这个圆柱体熔化后铸成一个球,求球的半径。"
}],
extra_body={"thinking": {"type": "enabled"}}
)
Thinking mode 会输出完整的推导过程:求圆柱底面积 → 求半径 → 计算球体积公式 → 求球半径。
2. 算法设计与优化
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{
"role": "user",
"content": "设计一个数据结构,支持以下操作,所有操作时间复杂度 O(1):\n1. insert(val): 插入元素\n2. remove(val): 删除元素\n3. getRandom(): 随机返回一个元素"
}],
extra_body={"thinking": {"type": "enabled"}}
)
Thinking mode 会分析每种数据结构的优缺点,推导出最优方案(数组 + 哈希表组合)。
3. 代码 Bug 定位
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{
"role": "user",
"content": """这段代码有 bug,找出问题并解释原因:
def binary_search(arr, target):
left, right = 0, len(arr)
while left < right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid
else:
right = mid
return -1
"""
}],
extra_body={"thinking": {"type": "enabled"}}
)
Thinking mode 会逐步分析:循环条件 → 边界更新 → 发现死循环问题 → 给出修复方案。
4. 逻辑推理题
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{
"role": "user",
"content": "有 3 个开关和 3 盏灯在不同房间。你只能进入灯的房间一次。如何确定每个开关控制哪盏灯?"
}],
extra_body={"thinking": {"type": "enabled"}}
)
❌ 不适合用 Thinking Mode 的场景
1. 简单问答(用普通模式更快更便宜)
# 不要用 thinking mode
"Python 怎么读取文件?"
"什么是 REST API?"
2. 创意写作(推理模式不擅长创意)
# 不要用 thinking mode
"写一篇关于春天的散文"
"帮我起 10 个产品名字"
3. 闲聊对话(推理过程是浪费)
# 不要用 thinking mode
"今天天气怎么样?"
"推荐几部电影"
成本优化策略
1. 按场景选模式
| 任务类型 | 推荐配置 | 原因 |
|---|---|---|
| 复杂推理 | V4 + thinking mode | 需要 CoT |
| 简单编程 | V4 普通模式 | 快且便宜 |
| 文档生成 | V4 普通模式 | 通用能力强 |
| 多模态任务 | V4 普通模式 | 支持图片/视频 |
示例:智能路由
def route_model(question):
# 简单问答 → 普通模式
if is_simple_qa(question):
return {
"model": "deepseek-v4-flash",
"extra_body": {} # 不启用 thinking
}
# 复杂推理 → thinking mode
elif requires_reasoning(question):
return {
"model": "deepseek-v4-flash",
"extra_body": {"thinking": {"type": "enabled"}}
}
# 默认普通模式
else:
return {
"model": "deepseek-v4-flash",
"extra_body": {}
}
# 使用示例
config = route_model(user_question)
response = client.chat.completions.create(
model=config["model"],
messages=[{"role": "user", "content": user_question}],
**config
)
2. 控制输出长度
Thinking mode 的 CoT 输出很长,可以通过 max_tokens 限制:
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "..."}],
extra_body={"thinking": {"type": "enabled"}},
max_tokens=1000 # 限制输出长度
)
3. 缓存推理结果
对于重复的推理问题,缓存结果避免重复调用:
import hashlib
import json
cache = {}
def cached_reasoning(question):
key = hashlib.md5(question.encode()).hexdigest()
if key in cache:
return cache[key]
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": question}],
extra_body={"thinking": {"type": "enabled"}}
)
result = response.choices[0].message.content
cache[key] = result
return result
模式选择指南
根据任务特点选择合适的模式:
| 场景 | 推荐配置 | 理由 |
|---|---|---|
| 复杂数学题 | V4 + thinking mode | CoT 推理最强 |
| 日常编程 | V4 普通模式 | 快且便宜 |
| 多模态(图片/视频) | V4 普通模式 | 原生多模态 |
| 超长上下文(1M+) | V4 普通模式 | 支持百万 token |
| 简单问答 | V4 普通模式 | 最快最便宜 |
决策树:
需要推理过程?
├─ 是 → V4 + thinking mode
└─ 否 → V4 普通模式
常见问题排查
1. 响应很慢
原因:Thinking mode 需要推理时间,比普通模式慢 2-5 倍。
解决:
- 确认场景真的需要推理(简单问题用普通模式)
- 使用 streaming 模式实时返回思考过程
- 设置合理的
timeout
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "..."}],
extra_body={"thinking": {"type": "enabled"}},
stream=True # 流式返回
)
for chunk in response:
print(chunk.choices[0].delta.content, end='')
2. 输出 token 消耗很大
原因:CoT 会输出完整推理过程,token 数是普通回答的 3-10 倍。
解决:
- 用
max_tokens限制输出长度 - 在 prompt 中要求”简洁推理”
- 对于不需要看推理过程的场景,用普通模式
messages=[{
"role": "user",
"content": "用最简洁的推理步骤回答:..." # 提示简洁
}]
3. 推理过程不准确
原因:复杂问题可能推理出错。
解决:
- 在 prompt 中给出示例推理过程
- 多次调用取一致结果
- 注意:thinking mode 不支持
temperature、top_p等参数
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "..."}],
extra_body={"thinking": {"type": "enabled"}}
# 注意:不要设置 temperature 等参数
)
总结
DeepSeek V4 的 thinking mode 是专注于推理任务的强大功能:
- ✅ 适合场景:数学、算法、代码 debug、逻辑推理
- ✅ 推理能力:通过 CoT 输出完整思考过程
- ✅ API 接入:OpenAI 兼容接口,易于集成
- ⚠️ 注意:不适合简单问答、创意写作、闲聊
快速开始:
- 访问 DeepSeek 官网 获取 API Key
- 安装 OpenAI SDK:
pip install openai - 使用
deepseek-v4-flash或deepseek-v4-pro模型 - 添加
extra_body={'thinking': {'type': 'enabled'}}启用推理模式
相关阅读:


