遷移至 DeepSeek V4.1 Flash 1017:reasoning_content 400 錯誤、靜默別名切換與尖峰時段計費

推理時代閱讀約 9 分鐘
遷移至 DeepSeek V4.1 Flash 1017:reasoning_content 400 錯誤、靜默別名切換與尖峰時段計費

大多數遷移都從更改模型名稱開始。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 日在 opencodex 的 GitHub issue 中針對 V4.1 Flash 所回報的內容:

[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 即可存取最新模型。」九月檢查點沒有固定名稱,而兩個較舊的 Flash 名稱現在也會執行 1017。

不會出現錯誤,但有三件事可能改變:

  • 輸出長度。 1017 經過訓練,輸出會較短。原本預期九月模型會給出長篇說明的解析器、UI 版面與提示詞,可能會拿到比以前少的文字。
  • 評測基準。 你在九月檢查點上記錄的分數與成本,已無法代表 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

AIHubMix 針對 deepseek-v4.1-flash-1017 的每 1M tokens 標價。目前另有限時 30% 折扣疊加其上。

快取命中比未命中便宜 50 倍。 Agent 每次呼叫都會重送相同的系統提示詞、工具定義與歷史紀錄。保持該前綴穩定,將每次呼叫都會變動的內容放在最後,大部分請求便會以快取命中價格計費。

思考內容以輸出計費。 思考功能預設開啟,推理 tokens 同時計入帳單與 max_tokens。

Search 與 Fetch。 DeepSeek 於 10 月 17 日開放全新的 Search 與 Fetch API,每 1,000 次成功呼叫各收 $0.75。在 DeepSeek API 上透過 DeepSeek Harness、Claude Code 或 Codex 進行的伺服器端呼叫,於 2026 年 10 月 31 日 16:00 UTC 前免費。之後,若 agent 每回合都進行搜尋,除 tokens 外還會再加上每次呼叫的費用。

總計成本。 在既定假設下(40 次呼叫、120 萬輸入 tokens 且快取命中率 90%、6 萬輸出 tokens),以 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 自己的表格中,九月檢查點在 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 請求回傳時沒有思考區塊,而帶有 output_config.effort 的請求則會回傳思考內容。請保持設定某個 effort 等級,讓 1017 進行推理,並檢查請求記錄。
  • 上下文:DeepSeek 的指南會在模型名稱後為其自家端點加上 [1m] 後綴;該後綴並未透過 AIHubMix 測試。
  • 已知問題:透過某些路由器時,Claude Code 會丟失思考內容,並遇到上述的 400 錯誤(claude-code-router issue 1378)。透過 AIHubMix 的 Messages 端點進行的兩回合工具測試並未遇到此問題。

Codex(Responses API)。依循 Codex CLI 指南:設定一個 aihubmix provider,其中 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 相容的 provider,並新增 deepseek-v4.1-flash-1017 作為模型。該指南是針對較早的 Harness 版本撰寫的,若介面已有變動,請檢查欄位名稱。

15 分鐘的冒煙測試。 建立一個只含一個失敗測試的小型 repo:

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 只保留給最困難的任務。
  • 為 agent 的回合調高 max_tokens,並對 finish_reason 為 length 的情況設置警示。
  • 在思考模式下,移除基於 temperature 而來的確定性假設。
  • 將批次與夜間 agent 任務排在離峰時段執行。
  • 保持提示詞前綴穩定,以便命中快取。
  • 如果你使用 DeepSeek 的伺服器端工具,從 10 月 31 日起就要為 Search 與 Fetch 呼叫編列預算。
  • 讓 agent 在真實權限下於沙箱中運行,並審查差異內容,而不是只看摘要。
  • 在你使用的每個程式碼工具中,執行 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 以外的時段。其他時段、週末及中國公眾假期均享半價。

程式碼 agent 應該使用哪個 effort 等級?
使用預設的 high。DeepSeek 自己的論文指出,max 會使 agent 的執行時間延長 1.6 到 1.8 倍,但效能提升很小。

1017 能透過 AIHubMix 在 Claude Code 與 Codex 中使用嗎?
可以。AIHubMix 在這些工具所使用的 Anthropic Messages 與 Responses 協議上提供此模型,兩者在 2026 年 10 月 19 日的基本測試中都通過了。

延伸閱讀:DeepSeek V4.1 Flash 1017 系列

資料來源