fix: put the tier back where "on" by itself is not on
The minimax wire lost its tier value on the assumption that these models
reason by default, so injecting nothing still reads as "on". T10 measured
the real gateway and the assumption does not hold: MiniMax-M3 with no
reasoning parameter did not reason in 5 of 5 rounds, while all six
strength values worked. Existing downstreams on ENABLE_THINKING=true
went from reasoning to silently not reasoning, and the capability table
cannot catch it because phase 5 lets auto through unconditionally.
Restore on_base to the old {"reasoning_effort": "medium"} verbatim. This
is a stopgap - it hands the tier choice back to the library, which this
work set out to remove. The real fix is to constrain auto by the
capability table, a public behaviour change tracked as issue #21.
The assertions that said "minimax injects no tier on the on-tier" go
back with it; each carries a note on why it moved twice.
This commit is contained in:
@@ -724,9 +724,11 @@ class TestRequestShaping:
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("enable_thinking", "expected"),
|
||||
# 开档不再附 medium(2026-09-04): 那是替下游做的档位判断,且 medium 不在
|
||||
# GLM/kimi/deepseek 的档位表里。MiniMax 开启档本就无需参数,要强度请配档位
|
||||
[(True, None), (False, "none")],
|
||||
# 本条断言反复过一次,记下原委以免第三次改回去:
|
||||
# T2(2026-09-04)按"MiniMax 开启档本就无需参数"的**推定**把 medium 改成不注入;
|
||||
# T10(2026-09-05)真实网关实测推翻该推定——M3 不发任何推理参数时 5/5 轮不推理,
|
||||
# 故 medium 回归(issue #21 的权宜之计,正解是让 auto 受能力表约束)
|
||||
[(True, "medium"), (False, "none")],
|
||||
)
|
||||
async def test_minimax_injects_reasoning_effort(self, enable_thinking, expected):
|
||||
"""issue #5: MiniMax 认的是 reasoning_effort,不是 enable_thinking。"""
|
||||
@@ -750,9 +752,9 @@ class TestRequestShaping:
|
||||
"""注入顺序即优先级: profile → extra_body → overlay,两行不可调换。
|
||||
|
||||
固定用 **zhipu + glm-5.3 + 源级 low** 这组: 判据必须落在一个 profile
|
||||
**真的写了值**的键上,两边写同一个键才谈得上谁覆盖谁。用 minimax +
|
||||
`enable_thinking=True` 是测不出来的——T5 起 `True ≡ auto`,而 auto 的注入
|
||||
片段就是 minimax 的 `on_base`(空字典),两行怎么调换结果都一样,断言恒真。
|
||||
**真的写了值**的键上,两边写同一个键才谈得上谁覆盖谁。不挑 minimax 是因为
|
||||
它的 `on_base` 只写 `reasoning_effort` 一个键(issue #21 的权宜之计),
|
||||
覆盖发生后看不见"profile 独有的那半边仍在",判据少一半。
|
||||
"""
|
||||
seen = {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user