MiniMaxは2026年11月18日にM2.5とM2.7の提供を終了します。切り替えはすでに始まっています。10月19日以降、この2つの旧モデルファミリーは新規ユーザー向けに提供されなくなり、これらを指定したプランのリクエストはM3.1 Flashで処理されます。従量課金をご利用の場合は、モデルIDを自分で変更するまであと4週間です。
M2.7向けコードの大半は、変更なしでM3.1 Flash上で動作します。問題の原因は、ある設計上の選択です。M3.1 Flashは常に思考し、指示がなければ最も深いレベルで思考します。その結果、目立つエラーが1つ、気付きにくいコスト増がいくつか、そしてまったく機能しなくなった設定が2つほど生じます。
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向けに書かれたコードでもこのエラーが発生することがあります。モデルを非推論モデルとして扱い、デフォルトで「thinking off」を送信するフレームワークでは、すべての呼び出しで発生します。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経由では、思考を無効にする3つの指定方法がエラーなしで受け付けられますが、モデルはそれでも思考します。
| リクエスト | AIHubMixでの結果 |
|---|---|
| Messages API、thinking disabled | 200。短いパズルで思考トークン469~622 |
| Chat、reasoning_effort none | 200。同じパズルで推論トークン265~372 |
| Chat、reasoning_effort minimal | 200。モデルは依然として思考する |
最初の2行は、3箱の論理パズルをそれぞれ3回実行した結果です。lowでは推論トークンが173~251でした。minimalの確認は、1行の算術プロンプトで1回実行しました。
上記の400エラーが発生するのは、Chat Completionsでthinking: {"type": "disabled"}を指定した場合だけです。M2.xまたはM3のコードで、これらのスイッチを使って呼び出しを高速化していた場合、呼び出しは気付かないうちに思考するようになります。実際に調整できるのはeffortだけで、最も低いレベルはlowです。
2. デフォルトのeffortはmax
M2.7には思考レベルがありませんでした。M3.1 Flashには5段階あり、MiniMaxのドキュメントによると、フィールドを省略した場合はmaxが指定されます。Python関数1つにある2つのバグを修正する小規模なタスクで、AIHubMixが測定した結果は次のとおりです。
| 設定 | 推論トークンの平均 | 平均時間 | 修正1件あたりの平均コスト |
|---|---|---|---|
| effortを省略 | 6,364 | 56 s | $0.0045 |
| effort low | 591 | 9.5 s | $0.0006 |
どちらの設定でも、すべての実行で215件の非公開テストすべてに合格しました。コストはAIHubMixの料金(入力$0.165、出力100万トークンあたり$0.66)に基づき、各3回の実行で算出しています。effortの設定を追加せずに移行すると、同じ作業に約6倍の時間がかかります。5段階すべての測定結果は、このシリーズのeffortに関する記事をご覧ください。
3. 思考トークンがmax_tokensを消費する
思考トークンはmax_tokensに含まれます。M2.x向けのコードでは、短い回答に対して小さな上限を設定していることがよくあります。max_tokens: 64で2文の質問をしたところ、モデルは思考に予算を使い切り、finish_reason: "length"を返しました。回答は「Sunlight contains many colors,」で、文の途中で切れていました。MiniMaxは131,072を推奨し、最大524,288まで設定できます。小さな上限は引き上げるか、テキストをそのまま信頼する前にfinish_reasonを確認してください。
4. キャッシュとサービスティアの変更
- MiniMaxのAPIリファレンスによると、M3.1 Flash(およびM3)では
cache_controlはサポートされていません。M2.7では明示的なキャッシュ書き込みに100万トークンあたり$0.375が請求されていました。M3.1 Flashではキャッシュが自動化されています。AIHubMixではキャッシュ読み取りに100万トークンあたり$0.0165が請求され、最初のリクエストも含め、送信したすべてのリクエストでプロンプトの約175~195トークンがキャッシュから提供されました。これはMiniMax側で固定のプレアンブルが使われているようです。この料金なら、リクエスト1,000件あたり約1セントの3分の1ほどです。cache_controlブロックは削除してください。ここでは機能しません。 service_tierはサポートされていません。レイテンシ対策としてM3のPriorityティアを利用していた場合、Flashに相当するものはありません。
5. 同じ名前でもサンプリング設定は異なる
MiniMaxのデフォルト値は、M2.xのtop_p 0.9からM3.1 Flashの0.95に変わり、コンテキストウィンドウは204,800トークンから1,000,000トークンに拡大しました。M2.7向けに調整したプロンプトでは、より長い、またはまとまりの弱い出力が生成される可能性があります。名前が変わっていなくても、モデル自体は新しいモデルです。評価を再実行してください。
見落としやすい課金ルール
- 思考は出力として課金されます。AIHubMixでは100万トークンあたり$0.66です。デフォルトのeffortでは、バグ修正タスクの出力の95%が思考トークンでした(6,673トークン中6,364トークン)。
- MiniMaxから公式のトークン単価はまだ発表されていません。同社の料金ページにはM3とM2.xが掲載されていますが、M3.1 Flashは掲載されていません。AIHubMixの料金は$0.165 / $0.66 / $0.0165(入力 / 出力 / キャッシュ読み取り)です。
- M3の公式料金は、入力トークンが512Kを超えると2倍になります。AIHubMixではM3.1 Flashに単一の料金を設定しています。非常に長いプロンプトを送る場合は、最初の請求額を自分の見積もりと照合してください。
コストを抑える方法:
reasoning_effort: "low"(Chat)、output_config.effort: "low"(Messages)、またはreasoning.effort: "low"(Responses)をデフォルトに設定し、タスクごとに引き上げてください。- 自動キャッシュが利用できるよう、変わらない指示はプロンプトの先頭に置いてください。
max_tokensは、思考によって回答が途中で切れないだけの大きさに設定してください。回答が切れて再試行するコストは、余裕を持たせた分のコストを上回るためです。
実際の権限を持つエージェント
モデルがコマンドを実行したりファイルを編集したりできる場合、重要なのは次の3つの挙動です。
- 行動する前に必ず推論します。
lowでも同様です。ツールの選択には役立ちますが、ツールを使うたびに思考によるレイテンシが発生します。短いツール呼び出しでは、lowでも1ステップに約2~7秒かかりました。 - 指示されたことだけを、限定的に実行します。初期のテスターの1人は「信じられないほど速いが、明確で具体的な指示が必要。そうでないと怠けすぎる」と評しました。エージェントには曖昧な目標ではなく、明確な停止条件と確認手順(「テストを実行して出力を貼り付ける」など)を指示してください。
tool_choiceで公式にサポートされているのはautoのみです。AIHubMixでは"required"(Chat)と{"type": "any"}(Messages)が受け付けられ、モデルはツールを呼び出しましたが、強制指定が機能するとはMiniMaxのドキュメントに記載されていません。これを安全確認の仕組みに組み込まないでください。
MiniMaxは、後続ターン(Messages)でも思考ブロックを変更せずに返し、reasoning_content(Chat)をそのまま保持するよう求めています。テストでは、思考ブロックを削除した短いツール往復でも動作しましたが、長いエージェントループではドキュメントのルールに従ってください。
コーディングツール
AIHubMixでは、一般的なコーディングツールが必要とする3つのプロトコルすべてでminimax-m3.1-flashを利用できます。各ツールは10月19日に、テキスト、ツール呼び出し、ツール結果の往復をテストしました。
| ツール | 必要なプロトコル | AIHubMix経由で利用可能 | effortフィールド |
|---|---|---|---|
| Claude Code | Anthropic Messages | はい | output_config.effort |
| Codex CLI | OpenAI Responses | はい | reasoning.effort |
| OpenCode | OpenAI互換 | はい | 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形式のクライアントが送信する2種類の思考形式、つまり予算付きのenabledとadaptiveは、どちらもテストで200を返したため、400エラーは発生しません。既知の問題として、Claude Codeのeffort設定がoutput_config.effortとしてClaude以外のモデルに渡されるかどうかは、ドキュメントに記載されていません。渡されない場合、モデルはデフォルトのmaxで動作し、M2.7よりターンに時間がかかります。以下のスモークテストで確認できます。
Codex CLI。 CodexはResponses APIを使用しており、このモデルで動作します。関数呼び出しはfunction_call項目として返されます。AIHubMix Codexガイドに従ってカスタムプロバイダーを設定し、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での回避策は、5つのバリアントをopencode.jsonに自分で宣言することです。AIHubMixのOpenAI互換プロバイダーでは、各バリアントで設定するリクエストフィールドは、issueに記載されたoutput_config.effortではなく、reasoning_effort(low … max)です。noneのバリアントは追加しないでください。
次のいずれか3つを使った15分間のスモークテスト:
- スクラッチ用のフォルダーを作成し、既知のバグが1つある関数と、そのバグが原因で失敗するテストファイルを用意します。
- エージェントに次のように依頼します。「テストを実行し、バグを修正して、もう一度テストを実行し、出力を見せてください。」
- 成功の目安は、エージェントが修正前後にテストを実行し、最後のテストが成功すること、数ターンで完了すること、そしてどのターンでも400が返されないことです。
- AIHubMixの使用ログを確認します。reasoning tokensを含む
minimax-m3.1-flashのリクエストが表示されるはずです。各ターンに1分近くかかる場合、effort設定がモデルに届いておらず、maxで実行されています。
移行チェックリスト
- 18 Novemberまでに、MiniMax-M2.5 / M2.7のIDをminimax-m3.1-flash(AIHubMix上)に置き換える。
- リクエストからthinking disabled、effort none、effort minimalを削除する。
- すべてのリクエストに明示的なeffortレベルを追加する。まずはlowから始める。
- 思考によって回答が途中で切れないようmax_tokensを増やし、finish_reasonを確認する。
- cache_controlとservice_tierのフィールドを削除する。
- 画像はbase64で送信するか、上流から取得できるホストに置く。
- ツール呼び出しのターンをまたいで、thinkingブロックとreasoning_contentをそのまま保持する。
- 評価を再実行する。同じ名前でも、新しいモデルと新しいサンプリングのデフォルト設定を使う。
- コーディングツールでは、effort設定がモデルに届いていることを確認する(ターンにかかる時間ですぐに判断できる)。
よくある質問
「requires adaptive thinking」と表示されるのはなぜですか?
リクエストで思考が無効になっています。通常は、Chat Completionsエンドポイントでthinking typeをdisabledにしていることが原因です。M3.1 Flashは常に思考します。このフィールドを削除するかadaptiveに設定し、速度を優先する場合はeffortをlowにしてください。
M2.7へのリクエストは変えていないのに、回答が変わったのはなぜですか?
MiniMax M PlanまたはToken Planをご利用の場合、M2.5またはM2.7を指定したリクエストは、2026年10月19日以降、以前の名前のままM3.1 Flashによって処理されています。
従量課金ユーザーの期限はいつですか?
2026年11月18日です。それ以降、M2.5とM2.7へのMiniMax APIリクエストは機能しなくなります。
AIHubMixでreasoning_effort noneは使えますか?
200は返されますが、モデルはそれでも思考します。実質的に設定できる最低レベルはlowです。
cache_controlは引き続き必要ですか?
いいえ。MiniMaxはM3.1 Flashでこれをサポートしていません。キャッシュは自動的に行われ、AIHubMixではキャッシュされた入力に対して100万トークンあたり$0.0165が課金されます。
Claude CodeやCodexでM3.1 Flashを使えますか?
はい。AIHubMixでは、Claude Code向けにAnthropic Messages APIで、Codex向けにResponses APIで利用できます。2026年10月19日に、どちらもテキスト、ツール呼び出し、ツール結果のテストに合格しました。
回答が途中で切れるのはなぜですか?
思考トークンはmax_tokensに含まれます。finish_reasonがlengthの場合はmax_tokensを増やしてください。MiniMaxは131,072を推奨しています。
続きを読む:MiniMax M3.1 Flashシリーズ
- 移行を決める前に、Space BunnyのローンチからM2.7およびM3との価格比較まで、移行先のモデルについて確認しましょう:MiniMax M3.1 FlashはSpace Bunny:M2.7およびM3からの変更点と価格
- 移行後に最も重要な設定はeffortです。この記事では、1つのバグ修正で5つのレベルすべてを測定しています:MiniMax M3.1 FlashのEffortレベル:同じバグ修正でデフォルトがlowの7倍のコストになった理由
- 移行を機にMiniMax自体を再検討するなら、最も近い競合2モデルで同じタスクを実行した場合の結果と料金をご覧ください:MiniMax M3.1 Flash vs DeepSeek V4.1 Flash vs Claude Haiku 5.5:1つのバグ修正、3つの請求額



