11 月 18 日前從 MiniMax M2.5/M2.7 遷移:修正 M3.1 Flash 的「requires adaptive thinking」400 錯誤

推理時代閱讀約 9 分鐘
11 月 18 日前從 MiniMax M2.5/M2.7 遷移:修正 M3.1 Flash 的「requires adaptive thinking」400 錯誤

MiniMax 將於 2026 年 11 月 18 日淘汰 M2.5 和 M2.7,轉換已經開始。自 10 月 19 日起,這兩個舊系列已不再開放新使用者使用,而指定這兩款模型的方案請求會由 M3.1 Flash 處理。如果你使用隨用隨付方案,還有四週時間自行變更模型 ID。

大多數 M2.7 程式碼在 M3.1 Flash 上都能原樣執行。問題出在一項設計選擇:M3.1 Flash 一定會進行思考,而且除非你另有指定,否則會以最深層級思考。這會造成一個明顯錯誤、一些不易察覺的成本增加,以及幾項如今完全不起作用的設定。

AIHubMix 在 2026 年 10 月 19 日透過其閘道,使用 minimax-m3.1-flash 執行了本文中的每項請求。錯誤文字均直接引用自這些回應。MiniMax 的規則則引用自其 API 文件。

哪些人會受到影響,以及會如何受影響

你透過以下管道使用 M2.5/M2.7 會發生什麼事 期限
MiniMax M Plan / Token Plan 請求會以舊名稱交由 M3.1 Flash 處理 已於 10 月 19 日發生
MiniMax 隨用隨付方案 舊 ID 會繼續運作,之後停止 2026 年 11 月 18 日
新的 MiniMax 帳戶 無法使用 M2.5/M2.7 2026 年 10 月 19 日

MiniMax 的模型頁面如此說明方案使用者的情況:「這些方案中對 M2.5 和 M2.7 模型的所有請求都會自動轉送至 M3.1 Flash Preview」,而且「現有的模型名稱仍可使用」。對於隨用隨付使用者,公告則表示:「淘汰後,對這些模型的 API 請求將無法繼續使用。」公告並未提到隨用隨付方案會自動重新導向,因此請預期會收到錯誤,而非改用備援模型。

方案使用者應留意「轉送」的含義。你的記錄仍會顯示 M2.7,但模型權重已不同、上下文長度增加了 5×,而且思考深度預設為 max。請將它視為模型變更,並重新執行評測。

會明確報錯的情況

400:「requires adaptive thinking」

你會看到的情況。停用思考的請求會遭到拒絕:

{"error": {"message": "invalid params, model \"MiniMax-M3.1-Flash\" requires adaptive thinking; thinking.type=\"disabled\" (including reasoning.effort=none) is not allowed (2013) (tid: …)", "type": "bad_request_error", "param": "", "code": null}}

原因。MiniMax 的Messages API 參考文件指出,模型「一定會思考」:如果傳送了 thinking.type,其值必須是 adaptive,而 disabled 會回傳 HTTP 400。為 M3 撰寫的程式碼也可能遇到這個問題,因為 M3 允許關閉思考。將模型標記為非推理模型,並預設傳送「關閉思考」的框架,每次呼叫都會遇到此錯誤;kodus-ai 和 9router-go 專案都回報過類似案例。

會觸發錯誤的最精簡請求(AIHubMix 上的 Chat Completions):

curl https://aihubmix.com/v1/chat/completions \
  -H "Authorization: Bearer $AIHUBMIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "minimax-m3.1-flash",
       "messages": [{"role": "user", "content": "hi"}],
       "thinking": {"type": "disabled"}}'

修正方式。刪除 thinking 欄位,或將其設為 {"type": "adaptive"}。如果你原本是為了節省時間而停用思考,請改用 "reasoning_effort": "low"。

圖片 URL 也會回傳相同代碼 2013 的 400 錯誤

你會看到的情況。 invalid param: remote returned status 400 (2013)。我們在使用由 upload.wikimedia.org 託管的圖片 URL 時遇到此錯誤。同一個請求改用 base64 圖片,或改用其他主機的圖片 URL,則會回傳 200。

原因。代碼 2013 是 MiniMax 通用的「參數無效」代碼,並非思考功能專屬錯誤。在此案例中,上游服務似乎無法擷取遠端圖片。這是我們對錯誤訊息的解讀;MiniMax 並未說明此案例。

修正方式。以 base64 傳送圖片(data:image/png;base64,…),或將圖片託管在可處理一般 HTTP 請求的位置。搜尋記錄中的 2013 時,請先閱讀完整訊息,再判斷它是思考功能錯誤。

11 月 18 日之後:已淘汰的模型 ID

當天起,透過 MiniMax API 使用 MiniMax-M2.5、MiniMax-M2.5-highspeed、MiniMax-M2.7 和 MiniMax-M2.7-highspeed 的隨用隨付請求將停止運作。公告未提及 M2.1 和 M2。請在此之前變更模型 ID。在 AIHubMix 上,新 ID 是 minimax-m3.1-flash。

不會明確報錯的情況

以下請求都會回傳 200。差異會反映在帳單、延遲或輸出內容上。

1. 如今不起作用的「關閉思考」開關

透過 AIHubMix,有三種要求模型不進行思考的方式都會在不報錯的情況下被接受,但模型仍然會思考:

請求 AIHubMix 上的結果
Messages API,thinking 設為 disabled 200;簡短謎題產生 469–622 個思考 token
Chat,reasoning_effort 設為 none 200;同一謎題產生 265–372 個推理 token
Chat,reasoning_effort 設為 minimal 200;模型仍會思考

前兩列的結果來自同一道三盒邏輯謎題,各執行三次;設定為 low 時使用了 173–251 個推理 token。minimal 的測試則是以一行算術提示執行一次。

只有使用 thinking: {"type": "disabled"} 的 Chat Completions 會產生上述 400 錯誤。如果你的 M2.x 或 M3 程式碼依賴上述任一開關來加快呼叫速度,現在這些呼叫都會在不知不覺中進行思考。唯一真正有效的調整方式是設定 effort,而最低層級是 low。

2. 預設 effort 是 max

M2.7 沒有思考層級。M3.1 Flash 有五個層級,而 MiniMax 文件指出,省略此欄位時會使用 max。在一個 Python 函式中修正兩個小錯誤的測試裡,AIHubMix 測得:

設定 平均推理 token 數 平均耗時 每次修正的平均成本
省略 effort 設定 6,364 56 s $0.0045
Effort 設為 low 591 9.5 s $0.0006

兩種設定下的每次執行都通過了全部 215 項隱藏測試。成本採用 AIHubMix 每百萬個 token 輸入 $0.165、輸出 $0.66 的價格,每種設定各執行三次。如果遷移時沒有新增 effort 設定,同一項工作大約會耗時 6×。完整的五級測量結果請見本系列的 effort 文章。

3. 思考會占用 max_tokens

思考 token 會計入 max_tokens。M2.x 程式碼通常會為簡短回答設定較小的上限。將 max_tokens: 64 用於一道兩句話的問題時,模型把 token 額度都花在思考上,接著回傳 finish_reason: "length",回答則是「陽光包含許多顏色,」並在句中遭到截斷。MiniMax 建議設定 131,072,最高則允許 524,288。請提高較小的上限,或在信任文字內容前先檢查 finish_reason。

4. 快取與服務層級已變更

  • 根據 MiniMax 的 API 參考文件,M3.1 Flash(或 M3)不支援 cache_control。M2.7 的明確快取寫入費用為每百萬次 $0.375。M3.1 Flash 則會自動快取。AIHubMix 的快取讀取費用為每百萬次 $0.0165,而且我們傳送的每項請求中,約有 175–195 個提示 token 由快取提供,即使是第一次請求也一樣。這似乎是 MiniMax 端固定加上的前置內容;以這個價格計算,每千次請求的成本約為三分之一美分。請移除 cache_control 區塊;在此處它們不起作用。
  • 不支援 service_tier。如果你曾使用 M3 的 Priority 層級來降低延遲,Flash 沒有對應選項。

5. 名稱相同,取樣方式不同

MiniMax 的預設 top_p 從 M2.x 的 0.9 改為 M3.1 Flash 的 0.95,而上下文視窗則從 204,800 擴大到 1,000,000 個 token。針對 M2.7 調整的提示詞可能會產生更長或更鬆散的輸出。即使模型名稱沒有改變,它仍是新模型:請重新執行評測。

容易忽略的計費規則

  • 思考會按輸出計費。在 AIHubMix 上,費用為每百萬個 token $0.66。在預設 effort 下,我們的修正錯誤測試中,思考 token 占輸出的 95%(共 6,673 個 token 中有 6,364 個)。
  • MiniMax 尚未公布官方的每 token 價格。其定價頁列出 M3 和 M2.x,並未列出 M3.1 Flash。AIHubMix 的收費為 $0.165 / $0.66 / $0.0165(輸入 / 輸出 / 快取讀取)。
  • 輸入 token 超過 512K 時,M3 的官方價格會加倍。AIHubMix 為 M3.1 Flash 列出單一價格。如果你傳送非常長的提示詞,請核對第一張帳單與自行估算的金額是否相符。

降低帳單的做法:

  1. 將 reasoning_effort: "low"(Chat)、output_config.effort: "low"(Messages)或 reasoning.effort: "low"(Responses)設為預設值,並依任務需求調高。
  2. 將固定不變的指令放在提示詞開頭,讓自動快取能夠提供這些內容。
  3. 將 max_tokens 設得足夠高,避免思考導致答案遭到截斷;因為必須重試的截斷答案,成本會高於額外預留的 token 額度。

具備實際權限的代理程式

當模型可以執行命令或編輯檔案時,有三種行為值得注意:

  • 模型採取行動前一定會先推理,即使 effort 設為 low 也一樣。這有助於選擇工具,但也代表每個工具步驟都會增加思考延遲;在我們的簡短工具呼叫中,使用 low 時,每個步驟耗時約 2 到 7 秒。
  • 模型只會照你說的做,不會多做。一位早期測試者稱它「快得驚人,但需要清楚且具體的指令,否則會太懶惰」。請為代理程式提供明確的停止條件和驗證步驟(例如「執行測試並貼上輸出結果」),不要只給它開放式目標。
  • 官方只支援 tool_choice 設為 auto。AIHubMix 接受了 "required"(Chat)和 {"type": "any"}(Messages),而且模型確實呼叫了工具,但 MiniMax 並未說明強制呼叫是否有效。請勿將它用作安全檢查的依據。

MiniMax 指出,在後續回合中應原樣傳回思考區塊(Messages),並保留 reasoning_content 完整內容(Chat)。在我們的測試中,即使移除思考區塊,簡短的工具往返仍可正常運作;但在較長的代理程式循環中,請遵循文件規定。

程式設計工具

AIHubMix 透過常見程式設計工具所需的三種協定,提供 minimax-m3.1-flash。我們於 10 月 19 日分別測試了每種工具,包含文字、工具呼叫,以及工具結果往返。

工具 所需協定 透過 AIHubMix 可正常運作 Effort 欄位
Claude Code Anthropic Messages 是 output_config.effort
Codex CLI OpenAI Responses 是 reasoning.effort
OpenCode OpenAI-compatible 是 reasoning_effort

MiniMax API 的上下文視窗為 1,000,000。根據 magpie 專案中一位維護者引用 MiniMax 文件的說法,MiniMax Code 本身將用戶端預設為 512K,「以平衡使用體驗與成本」;API 沒有可設定視窗的參數。

Claude Code。依照AIHubMix Claude Code 指南的說明,將它指向 AIHubMix,並將模型設為 minimax-m3.1-flash:

export ANTHROPIC_BASE_URL="https://aihubmix.com"
export ANTHROPIC_AUTH_TOKEN="$AIHUBMIX_API_KEY"
export ANTHROPIC_MODEL="minimax-m3.1-flash"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="minimax-m3.1-flash"   # background tasks too

我們測試了 Anthropic 風格用戶端傳送的兩種 thinking 設定:帶有預算的 enabled 和 adaptive,兩者都回傳 200,因此你不會遇到 400。已知問題:目前文件未說明 Claude Code 的 effort 設定是否會以 output_config.effort 傳給非 Claude 模型。如果沒有,模型就會以預設的 max 運作,每回合都會比使用 M2.7 時慢。下方的冒煙測試會說明如何確認。

Codex CLI。Codex 使用 Responses API,而此模型支援該 API:函式呼叫會以 function_call 項目傳回。依照 AIHubMix Codex 指南設定自訂 provider,加入 wire_api = "responses",再設定 model = "minimax-m3.1-flash" 和 model_reasoning_effort。xhigh 和 minimal 都可接受;minimal 並非 MiniMax 的其中一個等級,而且模型仍會進行思考。

OpenCode。OpenCode issue #54801(在 v2.0.27 上重現)指出,OpenCode 不會為此模型解析出任何 effort 變體,因此按下 ctrl+t 不會有作用。該 issue 提供的因應方式是在 opencode.json 中自行宣告五種變體。使用 AIHubMix 的 OpenAI 相容 provider 時,各變體應設定的請求欄位是 reasoning_effort(low … max),而不是 issue 中的 output_config.effort。不要加入 none 變體。

以下是適用於這三種工具的15 分鐘冒煙測試:

  1. 建立一個暫存資料夾,裡面放一個含有已知錯誤的函式,以及一個會因該錯誤而失敗的測試檔。
  2. 請代理程式:「執行測試、修正錯誤、再次執行測試,並向我顯示輸出。」
  3. 成功的判斷方式如下:代理程式在修正前後都執行測試,最後一次測試通過,在幾個回合內完成,而且沒有任何回合回傳 400。
  4. 查看 AIHubMix 使用記錄。你應該會看到帶有 reasoning tokens 的 minimax-m3.1-flash 請求。如果每回合耗時接近一分鐘,表示你的 effort 設定沒有傳到模型,模型正以 max 運作。

遷移檢查清單

  • 在 11 月 18 日前,將 MiniMax-M2.5 / M2.7 ID 換成 minimax-m3.1-flash(於 AIHubMix 上)。
  • 從請求中移除停用 thinking、effort none 和 effort minimal 的設定。
  • 為每個請求明確指定 effort 等級;先從 low 開始。
  • 提高 max_tokens,避免 thinking 截斷回答;並檢查 finish_reason。
  • 移除 cache_control 和 service_tier 欄位。
  • 以 base64 傳送圖片,或使用上游可取得的主機來提供圖片。
  • 在工具回合之間,保留 thinking 區塊和 reasoning_content,不要修改。
  • 重新執行評估:名稱相同,但模型已變更,取樣預設值也不同。
  • 使用程式碼工具時,確認 effort 設定有傳到模型(回合所需時間是快速判斷方法)。

常見問題

為什麼我會收到「requires adaptive thinking」?
你的請求停用了 thinking,通常是因為在 Chat Completions 端點將 thinking type 設為 disabled。M3.1 Flash 一律會進行思考。移除該欄位,或將它設為 adaptive;若想加快速度,請使用 effort low。

我的 M2.7 請求沒有變,但回答變了。為什麼?
如果你使用 MiniMax M Plan 或 Token Plan,自 2026 年 10 月 19 日起,指定 M2.5 或 M2.7 的請求就會以舊名稱轉由 M3.1 Flash 提供服務。

隨用隨付用戶的期限是什麼時候?
2026 年 11 月 18 日。此日期之後,對 M2.5 和 M2.7 的 MiniMax API 請求將停止運作。

reasoning_effort none 在 AIHubMix 上有效嗎?
它會回傳 200,但模型仍會進行思考。實際生效的最低等級是 low。

我還需要 cache_control 嗎?
不需要。MiniMax 的 M3.1 Flash 不支援這個欄位。快取會自動處理,而 AIHubMix 對快取輸入的費用為每百萬 tokens $0.0165。

我可以在 Claude Code 和 Codex 中使用 M3.1 Flash 嗎?
可以。AIHubMix 透過 Anthropic Messages API 為 Claude Code 提供此模型,並透過 Responses API 為 Codex 提供此模型。在 2026 年 10 月 19 日,兩者都通過了文字、工具呼叫和工具結果測試。

為什麼我的回答被截斷?
Thinking tokens 會計入 max_tokens。如果 finish_reason 是 length,請提高 max_tokens。MiniMax 建議設為 131,072。

繼續閱讀:MiniMax M3.1 Flash 系列

資料來源