MiniMax M3.1 FlashのEffortレベル:同じバグ修正でもデフォルトのコストが7倍になる理由

AIHubMix約 7 分で読めます
MiniMax M3.1 FlashのEffortレベル:同じバグ修正でもデフォルトのコストが7倍になる理由

MiniMax M3.1 Flashには5つの思考レベルがあり、オフにする方法はありません。レベルを指定しないと、モデルが最も深いレベルを選びます。MiniMaxのテキスト生成ガイドによると、省略した場合のEffortはmaxがデフォルトです。

このデフォルトは、見落としやすい形でコストを押し上げます。AIHubMixでは、同じ2つのバグ修正を各レベルで実行しました。デフォルトではlowの約10倍の思考トークンを使い、所要時間も約6倍になりました。一方、どのレベルでも、すべての実行で215件のテストに合格しました。タスクの難易度は変わらないまま、モデルの思考コストはEffortの設定に応じて増加しました。

結論を先に言うと、lowから始め、タスクが失敗したりリトライが必要になったりした場合だけ上げ、フィールドは空欄のままにしないでください。

5つのレベル、オフにする方法はなし

プロトコル フィールド 値 デフォルト
OpenAI Chat Completions reasoning_effort low、medium、high、xhigh、max max
Anthropic Messages output_config.effort low、medium、high、xhigh、max max
OpenAI Responses reasoning.effort low、medium、high、xhigh、max max

思考を無効にはできません。MiniMaxのMessages APIリファレンスによると、thinking: {"type": "disabled"}またはnoneを指定すると、model "MiniMax-M3.1-Flash" requires adaptive thinkingというメッセージとともに、APIはHTTP 400を返します。以前のMiniMaxモデルではEffortフィールドは完全に無視されます。これまでのところ、Effortが機能するMiniMaxモデルはM3.1 Flashだけです。

AIHubMixでは、AIHubMix上のminimax-m3.1-flashで3つのプロトコルすべてを利用できます。MiniMaxの公式APIとの違いは、AIHubMixではreasoning_effort: "none"と"minimal"がHTTP 200で受け付けられたものの、モデルはそのまま思考を続けた点です。これらの値は思考をオフにする方法ではなく、何もしない値として扱ってください。

1つのタスクで各レベルにかかったコスト

テスト内容:2つのバグがある課金関数です。期間の終わりを超えて休止期間が続くと1日分が二重計上され、休止期間が重複すると二重に差し引かれます。モデルは修正した関数を返し、ローカルのハーネスで215件の非公開ケースに照らして検証します。各レベルを2026年10月19日に、AIHubMixのChat Completionsエンドポイント経由で3回ずつ実行し、max_tokensは32,768に設定しました。数値はすべてAIHubMixが測定したもので、他者による再現は行われていません。

Effort 思考トークンの平均 範囲(3回の実行) 平均時間 修正1回あたりの平均コスト テスト
low 591 344–812 9.5 s $0.0006 215/215 ×3
medium 1,522 970–2,488 21.7 s $0.0013 215/215 ×3
high 2,863 2,194–3,673 27.1 s $0.0022 215/215 ×3
xhigh 1,949 1,019–2,562 19.2 s $0.0015 215/215 ×3
max 4,699 2,612–6,246 40.4 s $0.0034 215/215 ×3
省略 6,364 4,284–9,376 56.3 s $0.0045 215/215 ×3

コストの計算には、AIHubMixのminimax-m3.1-flashの価格を使用しています。入力トークン100万個あたり$0.165、出力トークン100万個あたり$0.66、キャッシュ済み入力トークン100万個あたり$0.0165です。思考トークンは出力として課金されます。たとえば「省略」の行では、プロンプトトークンは平均464個(うち約192個はキャッシュ済み)、出力トークンは6,673個で、修正1回あたり約$0.0045になります。

数値からわかること

このタスクにはlowで十分でした。どのレベルでも、毎回正しい修正ができました。対象範囲が限られた単一関数のバグでは、より高いレベルで思考を増やしても、測定可能な効果はありませんでした。

lowからmediumへの差は明確です。mediumの思考トークン数はlowの約2.6倍で、所要時間も2倍以上でした。

mediumを超えると、各レベルの差は曖昧になります。xhighの実行では、平均トークン数がhighより少なく、maxの値もどちらとも重なっていました。各レベル3回の実行では違いを判別できません。このタスクでは「high」「xhigh」「max」はいずれも「思考が増える、ときには大幅に増える」レベルでした。

省略した場合はmaxと同じように動作します。これはMiniMaxのドキュメントと一致します。「省略」の平均値は「max」より高くなりましたが、範囲は重なっており、その差は実行ごとのばらつきの範囲内です。

どのレベルでもばらつきは大きくなっています。同じプロンプトでも、デフォルトの実行時間は39~82秒でした。Anthropic Messagesエンドポイントでlowを3回実行したところ、思考トークン数は511、1,861、6,060でした。最後の実行は56秒かかり、一般的なmaxの実行と同じ長さでした。Effortが決めるのは思考の平均的な深さであり、上限ではありません。

24回のFlash実行を通じて、スループットは出力トークン毎秒約112で安定していたため、所要時間は思考トークン数にほぼ比例します。この速度では、6,000トークン思考すると待ち時間はほぼ1分です。

MiniMaxは、レベルごとのトークン数やレイテンシのデータを公開していません。より難しいタスクで上位レベルが必要になり始めるかどうかは、この1回のテストだけでは判断できません。上記の数値が示しているのは、タスクが必要としていない場合に各レベルでどれだけコストがかかるかだけです。

短いプロンプトでは思考はごくわずか

「常に思考する」といっても、「常に大量に思考する」という意味ではありません。思考は適応的であり、プロンプトの難しさに応じて深さが変わります。

  • サポートチケット5件を4種類のラベルのいずれかに分類するタスクでは、lowの思考トークン数は0、デフォルトの平均は6でした。すべて正しく分類されました。
  • 「17 × 23は?」という質問では、lowで思考は一切行われず、出力は2トークンでした。

つまり、オフにする方法がなくても、短い分類、抽出、振り分けの呼び出しではコストはほとんどかかりません。コストが顕在化するのはコードのような自由度の高いタスクです。思考を深くするほど、モデルが考えることも増えていきます。

どのレベルから始めるか

以下は開始時の目安です。最初の2行のみ実測値に基づき、それ以外は推奨値です。実際のリトライ状況を確認しながら調整してください。

ワークロード 開始レベル レベルを上げるタイミング
分類、抽出、振り分け low 難しいケースでラベルを間違える
単一関数の修正、小規模なレビュー low 修正が2回続けてテストに失敗する
複数ファイルの変更、リファクタリング medium エージェントが関連ファイルを見落とす
多数のツール呼び出しを伴うエージェントのループ lowまたはmedium ステップが繰り返されたり、行き詰まったりする
難しいデバッグ、設計に関する質問 high 回答が浅いまま
人が待っている対話型チャット low ここではmaxをデフォルトにしないでください

その種のタスクでhighが失敗するのを確認した場合に限り、maxを使ってください。

Effortを変えると起きる問題やコスト増

  • 回答が途中で切れる。思考トークンもmax_tokensに含まれます。あるデフォルトの実行では、単一の関数に9,376個の思考トークンを使ったため、M2.xの回答向けに設定された4Kや8Kの上限では、finish_reason: "length"となって回答が途中で切れることがあります。MiniMaxは131,072を推奨し、524,288まで設定できます。
  • タイムアウト。high以上では、1回の呼び出しに1分かかることがあります。高速モデル向けに調整したクライアントやプロキシのタイムアウトは、120秒以上に引き上げる必要があります。
  • 設定しても何も起きない値。AIHubMix経由では、none、minimal、autoのような未知の値がすべて受け付けられましたが、モデルはそのまま思考を続けました。ゲートウェイプロジェクトのテストによると、MiniMaxの公式エンドポイントでは未知の値は拒否されます(sub2api issue #8025)。ドキュメントに記載された5つの値のいずれかを使ってください。
  • レベルを指定できないツール。OpenCodeは現在、このモデルのEffort指定なしのバリアントに解決され、一部のフレームワークは「thinking disabled」を送信するため、400エラーが発生します。ツールが実際に何を送信しているか確認してください。
  • 1つのパイプラインで複数のモデルを使う場合。M3とM2.xはEffortフィールドを無視します。モデルを切り替えて使う場合、Flashでコストを抑えられるEffortレベルを設定しても、他のモデルには効果がありません。

各プロトコルでの設定方法

AIHubMixでは、1つのキーで3つすべてを利用できます。キーの取得方法はクイックスタートを、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",
       "reasoning_effort": "low",
       "max_tokens": 32768,
       "messages": [{"role": "user", "content": "Write a function that merges overlapping date ranges."}]}'

Anthropic Messages(Python SDK。SDKのバージョンがoutput_configフィールドに対応していない場合は、extra_bodyに指定します):

import os
import anthropic

client = anthropic.Anthropic(base_url="https://aihubmix.com", api_key=os.environ["AIHUBMIX_API_KEY"])

msg = client.messages.create(
    model="minimax-m3.1-flash",
    max_tokens=32768,
    messages=[{"role": "user", "content": "Write a function that merges overlapping date ranges."}],
    extra_body={"output_config": {"effort": "medium"}},
)
print(msg.usage)

Responses:

import os
from openai import OpenAI

client = OpenAI(base_url="https://aihubmix.com/v1", api_key=os.environ["AIHUBMIX_API_KEY"])

resp = client.responses.create(
    model="minimax-m3.1-flash",
    reasoning={"effort": "low"},
    max_output_tokens=32768,
    input="Write a function that merges overlapping date ranges.",
)
print(resp.usage)

最初の数回の呼び出しではusageを確認してください。Chat Completionsでは思考トークン数がcompletion_tokens_details.reasoning_tokens、Messagesではoutput_tokens_details.thinking_tokens、Responsesではoutput_tokens_details.reasoning_tokensとして報告されます。レベルを変えてもこれらの数値が変わらない場合、設定がモデルに届いていません。

よくある質問

MiniMax M3.1 FlashのデフォルトのEffortは何ですか?
maxです。リクエストにEffortフィールドがない場合、モデルは最も深いレベルで思考します。

思考を完全にオフにできますか?
いいえ。MiniMaxのAPIでは、思考を無効にするとHTTP 400が返されます。最も低いレベルはlowで、短いプロンプトではlowでも思考トークンをまったく使わないことがよくあります。

コーディングには、どのEffortレベルを使えばよいですか?
単一関数の修正や小規模なレビューはlowから、複数ファイルの変更はmediumから始め、タスクが失敗した場合だけレベルを上げてください。今回のテストでは、lowでも2つのバグがある関数を毎回正しく修正できました。

maxにすると精度は上がりますか?
今回のテストタスクでは上がりませんでした。どのレベルでも215件すべてのテストに合格しました。maxはトークンも時間も大幅に多く使いました。より難しいタスクでは上位レベルが役立つ可能性がありますが、どのようなケースで有効かを示す公開データはありません。

同じリクエストなのに、あるときは10秒、次は56秒かかったのはなぜですか?
Effortレベルを固定しても、実行ごとに思考の深さが変わるためです。Messagesエンドポイントでlowを設定したある実行では、別の実行と比べて約10倍の思考トークンが使われました。

AIHubMix経由でreasoning_effort noneは使えますか?
エラーなしで受け付けられますが、モデルは思考を続けます。代わりにlowを使ってください。

呼び出しで使った思考トークン数を確認するには?
usageオブジェクトを確認してください。Chat CompletionsとResponsesではreasoning_tokens、Messages APIではthinking_tokensに記載されています。

続けて読む:MiniMax M3.1 Flashシリーズ

出典