大多数迁移都从更改模型名称开始。DeepSeek V4.1 Flash 1017 却反其道而行之:2026 年 10 月 17 日,DeepSeek 保留了模型名称 deepseek-flash,却更换了它背后的模型。在 DeepSeek API 上调用 deepseek-flash、deepseek-v4-flash 或 deepseek-v4-flash-vision-exp 的用户,无需修改任何一行代码就被迁移过去了。
在 AIHubMix 上,新版本模型拥有自己的 ID deepseek-v4.1-flash-1017,因此你可以自行决定何时迁移。无论采用哪种方式,都需要检查以下问题:
| 问题 | 故障表现 | 发现途径 |
|---|---|---|
| 未回传 reasoning_content | 明显报错 | 第一次工具调用后出现 400 |
| 同名模型被替换 | 悄无声息 | 输出长度、格式、评测分数 |
| 高峰时段定价 | 悄无声息 | 工作日高峰时段账单翻倍 |
| 默认将 effort 设为 max | 悄无声息 | Agent 运行时间延长 1.6–1.8 倍 |
| 思考内容计入 max_tokens | 两者皆有 | 回答被截断 |
| Search 与 Fetch 计费 | 悄无声息 | 自 10 月 31 日 16:00 UTC 起 |
AIHubMix 于 2026 年 10 月 19 日(03:02 UTC)对 deepseek-v4.1-flash-1017 运行了一组简短的测试请求。下文中标注的结果均来自该次运行。
1. 导致工具调用循环中断的 400 错误
表现形式。工具调用后的第二次请求会失败,返回 HTTP 400 及以下信息。这是 10 月 15 日有人在 GitHub 上针对 V4.1 Flash 向 opencodex 提交的 issue 中报告的:
[invalid_request_error] The `reasoning_content` in the thinking mode must be passed back to the API.
在针对 V4 Pro 和 V4 Flash 的更早报告中,opencode、LangChain 和 claude-code-router 也出现过同样的文本。
原因。DeepSeek 的思考模式指南指出,当请求包含 tools 时,之前每一轮 assistant 的 reasoning_content 都必须回传,"即使是模型未执行工具调用的轮次"也不例外。如果未回传,"API 将返回 400 错误"。在没有 tools 的情况下,回传该字段是可选的,且会被忽略。客户端之所以常常踩坑,是因为其消息序列化器保留了 content 和 tool_calls,却丢掉了这个额外字段。
触发该错误的请求。工具循环的第二轮,assistant 消息中已去掉 reasoning_content:
curl -s https://aihubmix.com/v1/chat/completions \
-H "Authorization: Bearer $AIHUBMIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash-1017",
"tools": [{"type": "function", "function": {"name": "get_weather",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]}}}],
"messages": [
{"role": "user", "content": "What is the temperature in Hangzhou? Use the tool."},
{"role": "assistant", "content": null, "tool_calls": [{"id": "call_00_example", "type": "function",
"function": {"name": "get_weather", "arguments": "{\"city\": \"Hangzhou\"}"}}]},
{"role": "tool", "tool_call_id": "call_00_example", "content": "{\"celsius\": 18}"}
]
}'
在 DeepSeek 自身的 API 上,这种请求结构正是公开报告中返回 400 的情形。通过 AIHubMix 发送同样的结构时,在 10 月 19 日的测试运行中返回了 HTTP 200 和正常回答。这只是一次运行的结果,不应将其视为保证。
解决方法。无论使用哪种途径,都要保留该字段:
msg = resp.choices[0].message
messages.append(msg) # carries content, reasoning_content, and tool_calls over
- 在你自己的代码中,应追加完整的 assistant 消息,而不是手动构造的副本。
- 在框架中,请升级版本:opencode 已在后续版本中修复了往返传递的问题,opencodex 则于 10 月 16 日合并了其修复。
- 作为最后的手段,可为工具循环设置
{"thinking": {"type": "disabled"}}。这样可以避免报错,但也会放弃让模型在 agent 任务中表现出色的推理能力。
2. 同一名称,不同模型
DeepSeek 在 10 月 17 日的更新日志中直言:"API 调用方式与定价保持不变,只需使用 deepseek-flash 即可访问最新模型。"9 月版本没有固定的名称,两个旧的 Flash 名称现在也都指向 1017 版本。
不会报错,但有三方面可能发生变化:
- 输出长度。1017 经过训练,输出更为简短。那些依赖 9 月模型长篇解释的解析器、UI 布局和提示词,可能会得到比以前更少的文本。
- 评测基准。你在 9 月版本上记录的分数和成本,已无法反映
deepseek-flash当前返回的结果。 - 行为表现。DeepSeek 针对端到端的项目工作重新训练了 1017。Agent 可能会以不同路径得到相同结果。
应采取的措施。每次评测运行都应记录模型和日期,并立即重新运行你的回归测试集。响应会告诉你是哪个版本作答:在 10 月 19 日的测试中,经由 AIHubMix 的每个响应都带有 "model": "deepseek-v4-1-flash-261017"。记录该字段,未经公告的切换就会在发生当天被发现。
3. 容易被忽视的计费规则
高峰与非高峰时段。DeepSeek 在工作日 UTC 时间 01:00–04:00 和 06:00–10:00 按全价计费,其余时段、整个周末以及中国法定节假日按半价计费。AIHubMix 沿用相同的时段划分,并按请求提交时的时间计价,因此一个在非高峰时段开始的长时间流式请求,全程都按非高峰价格计费。
| 项目 | 高峰 | 非高峰 |
|---|---|---|
| 输入,缓存未命中 | $0.3098 | $0.155 |
| 输入,缓存命中 | $0.0062 | $0.0031 |
| 输出 | $1.2392 | $0.62 |
以下为 deepseek-v4.1-flash-1017 在 AIHubMix 上的标价(每 100 万 token),目前叠加了限时 30% 折扣。
缓存命中的价格比未命中便宜 50 倍。Agent 每次调用都会重复发送相同的系统提示词、工具定义和历史记录。保持这一前缀稳定,将每次调用都会变化的内容放在末尾,这样大部分请求都会按缓存命中价格计费。
思考内容按输出计费。思考功能默认开启,且推理 token 既计入账单,也计入 max_tokens。
Search 与 Fetch。DeepSeek 于 10 月 17 日推出了全新的 Search 和 Fetch API,每 1,000 次成功调用分别收费 0.75 美元。通过 DeepSeek Harness、Claude Code 或 Codex 在 DeepSeek API 上发起的服务端调用,在 2026 年 10 月 31 日 16:00 UTC 之前免费。此后,若 agent 每轮都进行搜索,除 token 费用外还会额外产生按次计费的成本。
综合成本。在既定假设下(40 次调用、120 万输入 token 且缓存命中率 90%、6 万输出 token),按 AIHubMix 标价计算,一次 agent 会话在高峰时段成本为 0.118 美元,非高峰时段为 0.059 美元。将批量任务转移到非高峰时段,是最大的一项节省。
4. 得不偿失的设置
Effort。API 提供 low、high(默认)和 max。DeepSeek V4.1 Flash 论文将它们分别映射为内部 effort 值 50、75 和 100,并指出提升至 max 会"使 agent 轨迹延长 1.6–1.8 倍,而性能提升微乎其微"。DeepSeek 自家的 Claude Code 配置指南仍设置 CLAUDE_CODE_EFFORT_LEVEL=max。对于日常的 agent 工作,high 是更好的默认值。
DeepSeek 还会将其他 effort 名称映射到自己的三档设置上:minimal 变为 low,而 medium 和 xhigh 都变为 high。一个提供五档选项的工具,实际上只有两到三档可用。在 10 月 19 日的测试中,AIHubMix 的 Chat Completions 接口接受了 low、high 和 max。
max_tokens。模型卡建议长时间运行的 agent 至少设为 256K,因为思考内容与输出共享预算。若上限较小,一个困难的步骤可能会把整个预算都耗在思考上。请检查是否出现 finish_reason: "length"。
采样参数。在思考模式下,temperature、presence_penalty 和 frequency_penalty 会被接受而不报错,但不产生任何效果。top_p 会被限制在 0.95–1.0 之间。如果某个流水线依赖低 temperature 来获得确定性输出,那么它将不再获得这种效果。
5. 拥有真实权限的 Agent
1017 是通过对整个项目进行强化学习训练的,因此它倾向于一直工作,直到任务看起来已经完成。它的回答也更简短,这意味着它对所做改动的说明会更少。以下两个习惯会有所帮助:
- 应审查 diff 和命令日志,而不是只看模型对其的总结。
- 在沙箱中运行,并使用命令白名单;对任何具有破坏性的操作(删除、强制推送、迁移、对外网络调用)都要求人工批准。
DeepSeek 自己也指出了 Flash 系列在安全任务上的优势;在 DeepSeek 自家的表格中,9 月版本在 CyberGym 上得分为 88.1。这对防御性工作很有用,也是严格限定其权限的另一个理由。
6. 编程工具
AIHubMix 为 deepseek-v4.1-flash-1017 提供了编程工具所需的全部三种协议。在 10 月 19 日的测试中,Chat Completions、Anthropic Messages(包括两轮工具调用)以及 Responses API 均返回了 200。
Claude Code(Anthropic Messages)。按照 Claude Code 指南将其指向 AIHubMix,并设置模型:
export ANTHROPIC_BASE_URL="https://aihubmix.com"
export ANTHROPIC_AUTH_TOKEN="$AIHUBMIX_API_KEY"
export ANTHROPIC_MODEL="deepseek-v4.1-flash-1017"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4.1-flash-1017"
export CLAUDE_CODE_SUBAGENT_MODEL="deepseek-v4.1-flash-1017"
export CLAUDE_CODE_EFFORT_LEVEL="high"
- 思考:在测试中,未设置 effort 的 Messages 请求返回中没有 thinking 块,而设置了
output_config.effort的请求则返回了 thinking。请保持设置某个 effort 级别,以确保 1017 进行推理,并检查请求日志。 - 上下文:DeepSeek 指南会在模型名称后添加
[1m]后缀,用于其自身的端点;该后缀未通过 AIHubMix 进行测试。 - 已知问题:经过某些路由器时,Claude Code 会丢失 thinking 内容,并触发上述 400 错误(claude-code-router issue 1378)。通过 AIHubMix 的 Messages 端点进行的两轮工具调用测试未出现该问题。
Codex(Responses API)。请遵循 Codex CLI 指南:配置一个 aihubmix 提供方,其中 base_url = "https://aihubmix.com/v1"、wire_api = "responses",并设置 model = "deepseek-v4.1-flash-1017"。若要在 /model 中选择它,请将其添加到 model_catalog_json 文件中,并将 context_window 设为 1,000,000。
- Effort:指南的目录脚本提供
low、medium和high。按照 DeepSeek 的映射,medium和high都会落到 DeepSeek 的high上,因此实际只有两个有效档位。 - 已知问题:较新版本的 Codex 若缺少某个必需字段,会丢弃整个目录。指南中的脚本可以避免这一问题。
DeepSeek Harness(Chat Completions)。DeepSeek 表示,1017 与 Harness 0.2.1-rc.1 或更高版本配合时效果最佳。请按照 DeepSeek Harness 指南将 AIHubMix 添加为 OpenAI 兼容提供方,并将 deepseek-v4.1-flash-1017 添加为模型。该指南是针对较早的 Harness 版本编写的,如果界面已有变化,请检查字段名称。
15 分钟冒烟测试。创建一个只包含一个失败测试的小型代码仓库:
mkdir flash-smoke && cd flash-smoke && git init -q
printf 'def mean(xs):\n return sum(xs) / len(xs)\n' > stats.py
printf 'from stats import mean\n\ndef test_mean():\n assert mean([1, 2, 3]) == 2\n\ndef test_empty():\n assert mean([]) == 0\n' > test_stats.py
在该文件夹中启动你的工具,并提出要求:"运行 pytest,仅通过修改 stats.py 来修复失败的测试,然后再次运行 pytest。"若满足以下条件则视为通过:
- agent 至少进行两次工具调用(运行测试、编辑文件),且没有出现 400 错误;
- 最终两个测试均通过;
- AIHubMix 的请求日志显示
deepseek-v4.1-flash-1017,整个会话的费用最多只有几分钱。
迁移清单
- 确定模型 ID:在 AIHubMix 上使用 deepseek-v4.1-flash-1017。
- 在工具调用循环中,每一轮都完整追加 assistant 消息,以确保 reasoning_content 每轮都被回传。
- 重新运行回归测试和评估集;记录模型、日期以及 response model 字段。
- 检查解析器和界面是否能处理更短的输出。
- 默认将 effort 设为 high;max 只保留给最难的任务。
- 为智能体轮次提高 max_tokens,并对 finish_reason 为 length 的情况设置告警。
- 在思考模式下,去掉基于 temperature 的确定性假设。
- 将批量任务和夜间智能体运行安排在非高峰时段。
- 保持提示词前缀稳定,以命中缓存。
- 如果你使用 DeepSeek 的服务端工具,请从 10 月 31 日起为 Search 和 Fetch 调用做好预算。
- 让智能体在具备真实权限的沙箱中运行,并审查代码差异,而不是只看摘要。
- 在你使用的每个编程工具中运行 15 分钟的冒烟测试。
常见问题
使用 DeepSeek V4.1 Flash 1017 需要修改代码吗?
在 DeepSeek 的 API 上不需要:deepseek-flash 已经指向 1017。在 AIHubMix 上,把模型名称改为 deepseek-v4.1-flash-1017 即可。
为什么会收到关于 reasoning_content 的 400 错误?
DeepSeek 要求:当请求包含工具时,之前每一轮 assistant 消息的 reasoning_content 都必须回传。丢弃该字段的客户端会在第一次工具调用之后的那次调用中失败。
通过 AIHubMix 调用时会出现 reasoning_content 400 错误吗?
在 AIHubMix 于 2026 年 10 月 19 日的测试中没有出现:不带 reasoning_content 的轮次返回了 200。不过仍应继续回传该字段,因为这是 DeepSeek 文档中明确规定的要求。
还能在 DeepSeek 的 API 上使用 9 月版的 V4.1 Flash 吗?
不能。DeepSeek 已将 deepseek-flash 及旧的 Flash 名称全部指向 1017,且没有提供可固定到 9 月检查点的名称。
DeepSeek V4.1 Flash 在什么时候更便宜?
工作日的 UTC 01:00 至 04:00 以及 06:00 至 10:00 之外的时段。其他所有时段、周末和中国法定节假日都按半price计费。
编程智能体应使用哪个 effort 等级?
使用 high,即默认值。DeepSeek 自己的论文指出,max 会使智能体运行时间延长 1.6 到 1.8 倍,而收益却很小。
1017 能否通过 AIHubMix 在 Claude Code 和 Codex 中使用?
可以。AIHubMix 通过这些工具所使用的 Anthropic Messages 和 Responses 协议提供服务,并且两者都在 2026 年 10 月 19 日通过了基础测试。
继续阅读:DeepSeek V4.1 Flash 1017 系列
- 还不确定是否值得迁移?升级文章介绍了 1017 相比 9 月检查点的改进,以及一次会话的成本:DeepSeek V4.1 Flash 1017:价格不变,输出更短。要不要切换?
- 无论如何都打算设置 Claude Code?请看 1017 与 Claude Code 自身子智能体所用模型的对比:DeepSeek V4.1 Flash 1017 对比 Claude Haiku 5.5:终端编程智能体该选哪款便宜模型?
- 从 V4 Pro 迁移,而不是从旧版 Flash 迁移?本文将检验你是否仍然需要 Pro:DeepSeek V4.1 Flash 1017 对比 V4 Pro:现在 Flash 是否已经够用?
来源
- 思考模式(DeepSeek)
- 更新日志(DeepSeek)
- 与 AI 工具集成(DeepSeek)
- AIHubMix 上的 DeepSeek V4.1 Flash 1017(AIHubMix)
- DeepSeek V4.1 Flash 在工具调用后返回 reasoning_content 400 错误,issue 7118(GitHub)



