MiniMax M3.1 Flash 努力等级:为什么默认设置修复同一个 Bug 的成本低 7 倍

推理时代阅读约 7 分钟
MiniMax M3.1 Flash 努力等级:为什么默认设置修复同一个 Bug 的成本低 7 倍

MiniMax M3.1 Flash 有五个思考等级,而且无法关闭。如果你不选择等级,模型就会替你选最深的等级。MiniMax 的文本生成指南指出,省略该参数时,努力等级“默认为 max”。

这个默认设置的成本高得容易被忽略。AIHubMix 在每个等级下都运行了同一个双 Bug 修复任务。默认设置使用的思考 token 约为 low 的 10 倍,耗时约为 6 倍,而每个等级下的每次运行都通过了全部 215 项测试。模型的思考成本随努力等级上升,但任务难度始终不变。

简而言之:从 low 开始,只有任务失败或需要重试时才提高等级,绝不要把这个字段留空。

五个等级,无法关闭

协议 字段 取值 默认值
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,API 会返回 HTTP 400,并提示 model "MiniMax-M3.1-Flash" requires adaptive thinking。较早的 MiniMax 模型会完全忽略努力等级字段。到目前为止,M3.1 Flash 是唯一会响应该字段的 MiniMax 模型。

All three protocols are available for minimax-m3.1-flash on AIHubMix. One difference from MiniMax's own API: AIHubMix accepted reasoning_effort: "none" and "minimal" with HTTP 200, and the model thought anyway. Treat those values as no-ops, not as a way to switch thinking off.

同一任务在各等级下的成本

测试任务:一个有两个 Bug 的计费函数。暂停时间超出计费周期时会多算一天,重叠的暂停时间则会被重复扣除。模型返回修复后的函数,本地测试程序用 215 个隐藏用例进行检查。2026 年 10 月 19 日,通过 AIHubMix 的 Chat Completions 端点在每个等级下运行三次,max_tokens 设置为 32,768。所有数据均由 AIHubMix 测得,尚无其他人复现。

努力等级 平均思考 token 数 范围(3 次运行) 平均耗时 平均单次修复成本 测试
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 的定价计算:每百万输入 token $0.165,每百万输出 token $0.66,每百万缓存输入 token $0.0165。思考 token 按输出 token 计费。例如,“省略”这一行平均使用 464 个提示词 token(其中约 192 个为缓存 token)和 6,673 个输出 token,单次修复成本约为 $0.0045。

数据说明了什么

对于这项任务,Low 就足够了。每个级别每次都给出了正确的修复结果。对于范围明确、只涉及单个函数的 bug,在更高级别增加思考并没有带来可衡量的收益。

从 low 提高到 medium,变化很明显。medium 平均使用的思考 token 数约为 low 的 2.6 倍,耗时也超过两倍。

medium 以上的等级差异不明显。我们的 xhigh 运行平均使用的 token 少于 high,而 max 与两者都有重叠。每个等级只运行三次,无法将它们区分开来。对于这个任务,“high”“xhigh”和“max”都意味着“思考更多,有时多很多”。

省略参数的表现与 max 类似。这与 MiniMax 的文档一致。我们的“省略”平均值高于“max”,但两者范围重叠,差异处于运行间的噪声范围内。

每个等级的波动都很大。同一个提示词在默认设置下耗时从 39 秒到 82 秒不等。在 Anthropic Messages 端点上,三次 low 运行分别使用了 511、1,861 和 6,060 个思考 token。最后一次耗时 56 秒,与典型的 max 运行一样久。努力等级决定思考的平均深度,而不是为思考设置硬性上限。

在全部 24 次 Flash 运行中,吞吐量都保持稳定,约为每秒 112 个输出 token,因此耗时几乎随思考 token 数线性增长。按这个速度,思考 6,000 个 token 就要等将近一分钟。

MiniMax 尚未公布各等级对应的 token 数或延迟数据。当更难的任务开始需要更高等级时,我们无法根据这一次测试下结论。上面的数据仅显示,当任务并不需要更高等级时,各等级会产生多少成本。

简短提示词几乎不会触发思考

“始终会思考”并不意味着“每次都会想很多”。思考是自适应的,深度会根据提示词看起来有多难而变化:

  • 将五张客服工单分为四个标签之一:low 下思考 token 数为 0,默认设置下平均为 6。所有标签都正确。
  • 问题“17 × 23 等于多少?”在 low 下完全没有思考,输出 2 个 token。

因此,缺少关闭开关对简短的分类、提取和路由调用几乎没有成本影响。成本主要出现在代码等开放式任务上:你允许模型思考得越深入,它就会找到越多值得思考的内容。

从哪里开始

以下是建议的起始等级。只有前两行经过直接测量;其余是我们的建议,请结合你自己的重试情况进行验证:

工作负载 起始等级 出现以下情况时提高等级
分类、提取、路由 low 困难案例的标签错误
单函数修复、小型代码审查 low 修复连续两次未通过测试
多文件修改、重构 medium 智能体漏掉了有关联的文件
智能体循环调用多个工具 low 或 medium 步骤重复或停滞
困难的调试、设计问题 high 回答仍然流于表面
有人等待回复的交互式聊天 low 这里绝不要默认使用 max

只有当你发现 high 无法胜任这类任务时,才使用 max。

更改努力等级会造成什么问题,或带来哪些额外成本

  • 回答被截断。思考 token 也计入 max_tokens。一次默认设置的运行仅处理一个函数就用了 9,376 个思考 token,因此,为 M2.x 回答设置的 4K 或 8K 限制可能会截断回复,并返回 finish_reason: "length"。MiniMax 建议设置为 131,072,最高允许 524,288。
  • 超时。使用 high 或更高等级时,单次调用可能耗时一分钟。为响应迅速的模型调好的客户端和代理超时设置,需要提高到 120 秒或更长。
  • 看似有效、实际无效的值。通过 AIHubMix,none、minimal 和诸如 auto 这样的未知值都会被接受,但模型仍会思考。根据某网关项目的测试,MiniMax 自家的端点会拒绝未知值(sub2api issue #8025)。请使用文档列出的五个值之一。
  • 不提供努力等级选项的工具。OpenCode 目前不会为此模型解析任何努力等级变体,而一些框架会发送“thinking disabled”,从而触发 400 错误。请检查你的工具实际发送了什么。
  • 同一条流水线中混用不同模型。M3 和 M2.x 会忽略努力等级字段。如果你在多个模型之间路由,那么能为 Flash 省钱的努力等级对其他模型毫无作用。

如何在各协议中设置

通过 AIHubMix 使用一个密钥即可接入全部三种协议。快速入门介绍密钥的使用方法,统一推理参数页面介绍 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 中报告思考 token 数,Messages 会在 output_tokens_details.thinking_tokens 中报告,Responses 则会在 output_tokens_details.reasoning_tokens 中报告。如果你更改等级后这些数字没有变化,说明设置没有传到模型。

常见问题

MiniMax M3.1 Flash 的默认努力等级是什么?
Max。如果请求中没有努力等级字段,模型就会以最深的等级进行思考。

我能完全关闭思考吗?
不能。在 MiniMax 的 API 上禁用思考会返回 HTTP 400。最低等级是 low,而对于简短的提示词,low 通常不会使用任何思考 token。

编程时应该使用哪个努力等级?
单函数修复和小型代码审查从 low 开始,多文件修改从 medium 开始,只有任务失败时才提高等级。在我们的测试中,low 每次都能正确修复包含两个 Bug 的函数。

max 努力等级会更准确吗?
在我们的测试任务中并没有:所有等级都通过了全部 215 项测试。max 使用了远多得多的 token,也耗时更长。更高等级或许有助于解决更难的任务,但目前还没有人公布数据说明哪些任务需要它。

为什么同一个请求一次耗时 10 秒,另一次却要 56 秒?
即使等级固定,思考深度也会在不同运行间变化。在 Messages 端点上,一次 low 努力等级的运行使用的思考 token 约为另一次的十倍。

通过 AIHubMix 使用 reasoning_effort none 有效吗?
该值会被接受且不会报错,但模型仍会思考。请改用 low。

如何查看一次调用使用了多少思考 token?
查看 usage 对象:Chat Completions 和 Responses 中的 reasoning_tokens,以及 Messages API 中的 thinking_tokens。

继续阅读:MiniMax M3.1 Flash 系列

来源