0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MiniMax M3.1 Flash の effort 5段階を実測:デフォルト(max)は low の7倍のコスト

0
Last updated at Posted at 2026-10-21

この記事は AIHubMix が作成しました。数値はすべて AIHubMix が2026年10月19日に自社ゲートウェイ経由で計測したもので、第三者による再現はまだありません。

TL;DR

  • MiniMax M3.1 Flash の思考は常にオンで、effort(思考の深さ)は low / medium / high / xhigh / max の5段階です。指定しないと max になります。
  • 同じバグ修正タスクを各設定で3回ずつ実行したところ、全実行が215件の隠しテストにすべて合格しました。
  • 未指定(= max)は平均6,364思考トークン・56秒・1回あたり $0.0045、low は平均591思考トークン・9.5秒・$0.0006 でした。未指定は low の約7倍のコストです。
  • effort は必ず明示し、まず low から始めて、失敗したタスクだけ上げるのがおすすめです。

なぜ問題になるのか

M3.1 Flash は常に思考します。リクエストに effort がない場合について、MiniMax の テキスト生成ガイド には次のように書かれています。

defaults to max when omitted

(指定しない場合は max がデフォルトになります)

MiniMax M2.x には effort の設定がなかったため、M2.x 向けに書いたコードは effort を指定していません。そのまま M3.1 Flash に移すと、すべてのリクエストが最もコストの高い設定で動きます。

検証環境

  • モデル:AIHubMix の minimax-m3.1-flash(上流が返すモデル名は MiniMax-M3.1-Flash)
  • エンドポイント:POST https://aihubmix.com/v1/chat/completions、max_tokens: 32768
  • API キー:環境変数 AIHUBMIX_API_KEY(取得方法は AIHubMix クイックスタート)
  • 実施日:2026年10月19日、各設定3回
  • 価格(AIHubMix、100万トークンあたり):入力 $0.165、出力 $0.66、キャッシュ入力 $0.0165。思考トークンは出力として課金されます。

タスクは、2つのバグを含む課金関数の修正です。1つは、一時停止期間が請求期間の終わりをまたぐと1日分を二重に数えるバグ、もう1つは、重なった一時停止期間を二重に差し引くバグです。プロンプトでは両方の症状を伝え、修正済みの関数を1つのコードブロックで返すよう指示しました。手元のテストハーネスで、手書きの境界ケース15件と、総当たりの参照実装と照合するランダムケース200件、計215件を実行します。元のバグ入り関数は138件に合格します。

プロトコルごとのフィールド名

プロトコル フィールド 値 デフォルト
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

AIHubMix では、このモデルを3つのプロトコルすべてで呼び出せます。思考をオフにすることはできません。MiniMax の Messages API リファレンス によると、thinking: {"type": "disabled"} や effort none を送ると HTTP 400 になり、次のメッセージが返ります。

model "MiniMax-M3.1-Flash" requires adaptive thinking

(モデル「MiniMax-M3.1-Flash」には adaptive thinking(適応型の思考)が必要です)

MiniMax の旧モデルは effort フィールドを無視します。

計測スクリプト

採点部分を除いた計測の流れです。

measure_effort.py
import os, time
from openai import OpenAI

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

for effort in [None, "low", "medium", "high", "xhigh", "max"]:
    for run in range(3):
        extra = {"reasoning_effort": effort} if effort else {}
        t0 = time.time()
        r = client.chat.completions.create(
            model="minimax-m3.1-flash", max_tokens=32768,
            messages=[{"role": "user", "content": prompt}], **extra)
        u = r.usage
        print(effort or "omitted", run, round(time.time() - t0, 1),
              u.completion_tokens, u.completion_tokens_details.reasoning_tokens)

結果

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

「未指定」の行のコスト計算は次のとおりです。プロンプト464トークン(うち約192がキャッシュ)と出力6,673トークンで、(272 × $0.165 + 192 × $0.0165 + 6,673 × $0.66) ÷ 100万 ≈ $0.0045 になります。

表からわかることは次のとおりです。

  • 品質に差はありませんでした。 Chat での18回の実行がすべて完全に正解でした。範囲のはっきりしたこのバグでは、low を超える思考に測定できる効果はありませんでした。
  • low から medium ははっきり増えます。 思考トークンは約2.6倍、時間は2倍以上です。
  • medium より上は、3回では順位がつきません。 xhigh の平均は high より低く、max は両方と範囲が重なっています。
  • 未指定は max とほぼ同じです。 ドキュメントのとおりです。未指定の平均のほうが高いものの、ばらつきの範囲内です。
  • 時間はトークン数に比例します。 Flash の全24回(Chat と Messages)でスループットは毎秒約112出力トークンと安定しており、6,000トークン考えると1分近く待つことになります。

短いプロンプトでは様子が違います。サポートチケット5件を4つのラベルに分類するタスクでは、low の思考トークンは0、デフォルトでも平均6で、ラベルはすべて正解でした。「17 × 23 は?」を low で聞くと、思考なしで出力2トークンでした。思考の深さはプロンプトに合わせて変わるため、分類のような短い呼び出しでは、オフにできないことのコストはほとんどありません。

ハマりどころ

回答が途中で切れて finish_reason が length になる

思考トークンも max_tokens に含まれます。デフォルトのある実行では、関数1つの修正に9,376思考トークンを使いました。M2.x 時代の 4K や 8K の上限のままだと、finish_reason: "length" で回答が途中で切れることがあります。max_tokens を引き上げ(MiniMax の推奨は131,072、上限は524,288)、finish_reason を確認してください。

同じ low なのに1分近くかかることがある

Anthropic Messages エンドポイントで同じプロンプトを low で3回実行したところ、思考トークンは511、1,861、6,060で、最後の1回は56秒かかりました。effort が決めるのは平均的な深さで、上限ではありません。high 以上ではクライアントやプロキシのタイムアウトを120秒以上にし、low の平均値だけでタイムアウトを決めないようにしてください。

reasoning_effort に none を渡しても思考が止まらない

AIHubMix 経由では、reasoning_effort に none、minimal、auto を渡すと HTTP 200 が返りますが、モデルは思考を続けます。ある API ゲートウェイプロジェクトの検証(sub2api issue #8025)によると、MiniMax 本家のエンドポイントは未定義の値を拒否します。ドキュメントにある5つの値だけを使ってください。AIHubMix が各社の推論パラメータをどう対応付けているかは 統一推論パラメータ にまとまっています。

OpenCode で effort を切り替えられない

OpenCode はこのモデルの effort のバリアントを1つも認識しません。そのため effort の切り替えが効きません。また、「思考オフ」を送るフレームワークでは400エラーになります。実際に送られているリクエストボディを確認してください。

複数モデルを混ぜると effort が効かない

M3 と M2.x は effort フィールドを無視します。複数モデルにルーティングしている場合、Flash で節約できる effort 設定も、ほかのモデルには効きません。

設定が届いているか確かめる

usage を見ます。Chat は completion_tokens_details.reasoning_tokens、Messages は output_tokens_details.thinking_tokens、Responses は output_tokens_details.reasoning_tokens です。effort を変えてもこの値が変わらなければ、設定はモデルに届いていません。

AIHubMix 経由で Messages と Responses に effort を設定する例です。

set_effort.py
import os
import anthropic
from openai import OpenAI

ant = anthropic.Anthropic(base_url="https://aihubmix.com", api_key=os.environ["AIHUBMIX_API_KEY"])
msg = ant.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)

oai = OpenAI(base_url="https://aihubmix.com/v1", api_key=os.environ["AIHUBMIX_API_KEY"])
resp = oai.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)

最初に試す設定

上の計測で裏付けがあるのは最初の2行だけです。残りは推奨値なので、自分のリトライ率で確かめてください。

ワークロード 最初の設定 上げる目安
分類・抽出・ルーティング low 難しいケースでラベルを誤る
関数1つの修正・小さなレビュー low 修正が2回続けてテストに落ちる
複数ファイルの変更・リファクタリング medium 依存ファイルの修正漏れが出る
ツール呼び出しの多いエージェント low か medium 同じ手順を繰り返す・止まる
難しいデバッグ・設計の相談 high 回答が表面的なまま
人が待っている対話 low ここで max をデフォルトにしない

検証できていないこと

  • どこから上位の effort が元を取るか。 今回のタスクはすべての effort で解けました。MiniMax は effort ごとのトークン数、レイテンシ、精度を公開しておらず、範囲のはっきりした1つのタスクでは、high・xhigh・max がどこで効くかはわかりません。
  • medium より上の順位。 各3回では high・xhigh・max を区別できません。
  • ほかのタスクやプロンプト長。 数値はすべて、短いコーディング用プロンプト1つと分類用プロンプト1つから得たもので、AIHubMix が2026年10月19日に計測しました。

まとめ

  • M3.1 Flash は effort を指定しないと max で思考します。
  • 今回のバグ修正では全設定が正解し、未指定は low の約7倍のコスト、約6倍の時間がかかりました。
  • low から始め、失敗するタスクだけ上げてください。max_tokens とタイムアウトにも余裕を持たせましょう。
  • none や minimal では思考は止まりません。

AIHubMix なら、1つの API キーで minimax-m3.1-flash を Chat Completions・Messages・Responses のどれからでも呼び出せます。まずは自分のタスクで low と未指定の usage を比べてみてください。

あわせて読みたい:MiniMax M3.1 Flash シリーズ

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?