正文

如果你的 Agent、脚本或网关还在发送 deepseek-chatdeepseek-reasoner,现在要迁移到 deepseek-v4-prodeepseek-v4-flash。DeepSeek 已在 2026 年 7 月 24 日 15:59 UTC 退役旧模型名;中国标准时间对应 2026 年 7 月 24 日 23:59。旧名称不再是一个稳定的兼容别名。

这次迁移的重点不只是替换一个字符串。先确认实际发出的模型名,再用同一条小请求验证模型路由、Thinking 行为和你使用的 OpenAI / Anthropic 兼容入口。这样可以避免 SDK、环境变量和网关配置各自保留一个旧名字。

先确定该换成哪个 V4 模型

V4-Pro 与 V4-Flash 都提供 1M context,并支持 Thinking / Non-Thinking 双模式。旧 deepseek-chatdeepseek-reasoner 在退役前分别路由到 V4-Flash 的非 Thinking 与 Thinking 行为;退役后,不能再依赖这层隐式映射。

高频问答、提取、分类、日常 Agent 子任务deepseek-v4-flash
复杂排错、长链路 Agent、代码审查deepseek-v4-pro
无法判断当前旧名承担什么工作先用 Flash 做隔离回归

先搜索所有写死的旧模型名

从仓库、部署脚本和密钥管理的非敏感配置开始。不要只改一个 .env 文件,CI、任务队列和第三方 Agent 的模型配置经常在不同位置。

重点检查这些入口:

搜索结果为空时,也要检查平台控制台、Kubernetes Secret、云函数环境变量和代码外的网关路由规则。它们通常不在 Git 仓库中。

  • OPENAI_MODELMODELDEEPSEEK_MODEL 等环境变量。
  • OpenAI SDK 的 model 参数和 Anthropic-compatible 网关的模型映射。
  • CI、定时任务、Worker、批处理脚本和 Agent 框架配置。
  • 提示词模板、团队文档和运行手册中的示例模型名。
Bash
rg -n "deepseek-chat|deepseek-reasoner" . --glob "!node_modules/**" --glob "!.git/**"

OpenAI ChatCompletions 只替换 model 参数

DeepSeek 官方说明中,V4 迁移保持原有 base_url,调用 OpenAI ChatCompletions 时将 model 改为新名称即可。先用无敏感上下文的小请求验证 Flash:

响应里应能看到请求成功,并且记录的模型名是 deepseek-v4-flash。不要把真实 API Key 粘贴到终端录屏、CI 输出或提交到仓库。

需要 Pro 时,只替换模型名:

Bash
curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [{"role": "user", "content": "只回复 OK"}]
  }'
JSON
{
  "model": "deepseek-v4-pro",
  "messages": [{"role": "user", "content": "分析这个任务的失败原因"}]
}

Anthropic-compatible Agent 先更新模型映射

Claude Code、代理网关或其它 Anthropic Messages 客户端仍可以使用 DeepSeek 的 Anthropic 接口,但模型名必须由旧名换为 V4。入口、Key 与模型名必须来自同一家服务:不要把 DeepSeek 的模型名填进另一个网关,或用旧的模型映射覆盖环境变量。

PowerShell 中先在当前会话完成最小替换:

长期配置、项目 settings 或网关管理页中也要将旧名一并替换。变更后新开一个会话,让 Agent 完成一次只读任务,例如列出仓库根目录的主要模块;这样能验证客户端实际读取的是新配置,而不是旧终端进程中的缓存值。

PowerShell
$env:ANTHROPIC_MODEL="deepseek-v4-flash"

Thinking 行为必须单独回归

旧模型名把“是否 Thinking”隐含在名称里。迁移 V4 后,模型选择与 Thinking 选择需要分开验证。先用一个固定的小任务分别测试非 Thinking 与 Thinking 配置,记录:

不要把推理内容、完整生产日志或用户数据作为回归样本。选择一个没有密钥、客户信息和私有代码的确定性任务,才能比较迁移前后的延迟、输出格式和工具调用次数。

YAML
deepseek_v4_migration_check:
  model: "deepseek-v4-flash"
  client: "agent-gateway"
  thinking_mode: "configured value"
  task: "解释一段固定错误日志,不调用工具"
  result: "success or failure"
  response_model: "recorded model name"
  latency_ms: "observed value"

迁移后如何确认没有旧请求

一次成功迁移至少要同时满足:

  • 仓库、部署配置和网关映射不再引用旧模型名。
  • OpenAI 和 Anthropic-compatible 两类实际调用都返回成功。
  • 日志、追踪或响应元数据能确认 deepseek-v4-flashdeepseek-v4-pro 被实际路由。
  • Thinking 配置已在一个固定任务上单独验证,不再通过旧模型名间接控制。
  • 关键 Agent 有明确 fallback,并且 fallback 同样使用已验证的新模型名。

model not found、输出变化和上下文异常怎么处理

model not found 或 404

先检查运行进程实际读取的模型变量,再检查网关是否允许 V4 模型。不要只修改本地 .env 后立刻判断服务故障:容器、CI 和远程 Worker 可能仍保留旧的 Secret 版本。

模型切换后输出格式变化

先缩小到一条无工具调用的小请求,比较 role、JSON 字段和流式事件。通过后再恢复工具调用、结构化输出和长上下文。这样能区分模型行为变化与客户端协议兼容问题。

长任务成本或延迟上升

1M context 是最大容量,不是每个 Agent 都应该持续保留的会话长度。限制读取目录、裁剪工具输出、在阶段结束时写摘要,并为高风险任务准备一个已验证的模型 fallback。长任务的上下文治理比单纯改模型名更能决定迁移后的稳定性。

结论

DeepSeek V4 迁移可以从“保持入口不变、替换 model 参数”开始,但不能止步于一次字符串替换。把旧名清理干净,分别验证模型路由和 Thinking 行为,再用真实但不敏感的 Agent 任务完成回归,旧模型名退役就不会演变成线上运行时事故。

参考来源

DeepSeek V4 Preview ReleaseDeepSeek API DocsDeepSeek API change logDeepSeek API DocsThinking modeDeepSeek API Docs

相关文章

Claude Code 接入 DeepSeek API:配置方法和报错处理智能编程 / 约 24 分钟DeepSeek Anthropic API 404 错误排查步骤错误日志 / 约 12 分钟Claude Code unsupported parameter / unknown field 怎么排查错误日志 / 约 12 分钟Claude Code model not found 怎么排查:入口、Key 和模型映射错误日志 / 约 12 分钟

作者信息