MiniMax-M3 开启推理已静默失效:参数进了请求体但模型不推理,reasoning_tokens 恒 NULL #16
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
现象
MiniMax-M3 的开启推理已经不生效,而且是静默的:请求照常成功、内容照常返回,只是模型没有推理,
reasoning_tokens恒为NULL。关闭推理的方向一切正常。tests/e2e/test_thinking_live.py的前后对比(报告落在tests/outputs/e2e/):extra_body覆盖 profile 注入已经排除的两个可能
不是库把参数弄丢了。 同一份报告里 L2b 是 PASS:「关闭档最大 194 < 开启档最小 216」。开启档的
prompt_tokens比关闭档高 22,说明推理参数确实进了请求体并被计费,是模型收到之后没照做。不是 1.2.4 引入的。 在
296c765(1.2.3,issue #14 合并之前)上单跑test_l2_enable_actually_enables,同样 FAIL(35 秒)。这两批改动没有任何一处碰过transports/或providers.py。为什么之前没被发现
test_thinking_live.py一直标着slow,被addopts = "-m 'not slow'"默认排除,平时不跑。上次真跑是 2026-08-02——正好是最后一次全绿。这 18 天里没有任何一次日常测试会碰到它。(同批已把另外三个
tests/e2e/文件也标上slow,并把pytest -m slow写进了发布清单第 4 步。否则这类问题只会被埋得更久。)线索
providers.py:119对 M3 的能力声明,证据日期正是 8 月 2 日:注册表停在 8 月 2 日的实测证据上,而这 18 天里上游变了。候选原因(未验证,按怀疑度排序):
reasoning_effort的合法取值变了,或改用了别的字段名prompt_tokens从 8 月 2 日的最小 207 变成 216,同样的注入产生了不同的 token 数,这一点值得先查排查建议:先用
curl直接打中转和(如果可能)直连 MiniMax,对比同一份请求体的响应,把"中转改写"与"模型变更"分开。影响
reasoning_tokens对 M3 恒为NULL,issue #6 加的推理开销归因对这个模型等于失效ThinkingCapability的can_disable=True声明本身仍然成立(关闭方向实测仍 PASS),但整条证据链的时效性需要重新审视——注册表里的 evidence 是有保质期的,这可能才是这个 issue 最该沉淀下来的东西复现
需要
.env里配好LLM__MINIMAX__1__*。报告会落到tests/outputs/e2e/。已随 1.3.1 修复并发布。
先纠正诊断:M3 的推理一直是正常的
本 issue 判定「模型不推理」。2026-08-25 绕开库、用裸
httpx抓真实响应,结论相反:M3 流式开启档拿到 124 字符完整推理正文,prompt_tokens194→216、completion_tokens3→60,三个独立信号一致。真正变的是 MiniMax 这一路上游不再返回
usage.completion_tokens_details(qwen 与 deepseek 在同一网关、同一 key 上照常返回),reasoning_tokens因此恒为None。而库把「推理是否发生」全押在这一个字段上,于是手里握着 185 字符推理正文,却对外报告「没推理」。四条 e2e 红的是判据盲区,不是功能失效。完整实测见
research-wiki/findings/2026-08-25-thinking-observability-regression.md。修的是三层,不是那一条
reasoning_tokens=None同时承载「没推理」与「没上报」,不可区分(types.py的 docstring 早写明了这个歧义,但只是描述它)LLMResponse.thinking_observation三态:observed/absent/unknown,判不出来时说unknown,不折叠进「没推理」thinking正文从未参与任何判定——手里的硬证据丢在地上第 ③ 层是重点:M3 的 evidence 曾停在 08-02 整整 23 天而无人知晓它是否还成立。不修这一层,下一个同构故障会更隐蔽——若哪天 M3 变成关不掉推理,旧判据下连测试都是绿的。
顺带确认的事实
reasoning_effort仍是 M3 唯一有效的开关(enable_thinking/thinking:{type:enabled}对它无效),can_disable=True经复测依然成立。reasoning_effort返 200 且照常推理,qwen 对同值返 HTTP 400。见 issue #17(同一件事的另一份记录)与 CHANGELOG 1.3.1。