test: replace the guessed tier table with what the gateway actually does
T10 经 new-api 中转对 26 个可调用模型逐个实测(约 500 次真实调用),把 DEFAULT_CAPABILITIES 里的文档推定换成实测结论,并把实测本身固化成可复跑、 可只跑单模型的 slow 用例。 三处与文档推定不符: - kimi-k3 实测可关(关闭档 completion 恒 9 且与 max 档锚点可分),T1 的保守 登记被推翻,OpenRouter 的 mandatory:false 胜出; - MiniMax-M3 的 auto 实测不推理(minimax 的"开"是不注入任何参数,而 M3 默认档 本就不推理),六个强度值反而全部生效且彼此等价,故清单由 (none, auto) 换成 none + 六个强度值; - glm-5.3 关不掉推理坐实(请求 none 后 4/5 轮仍观测到推理),issue #20 的核心 争议就此了结——当时短提示词下的 rt≈1.2 是采样噪声。 新增 kimi-for-coding(现有该型号自己的实测证据,不再走 Phase 3)。 用例带三条判据: 关闭方向要求每轮未观测到推理;短提示词的"关掉了"必须过长 上下文复核(glm-5.3-flash 正是短 5/5 未观测、长上下文 2/3 露馅);上游整片 不回传推理信号时另取无魔数锚点,不许把"没看见"写成"没发生"。另加一道模型 身份核对——该渠道把 glm-5/5.1/5.2 全部路由到 glm-5.3,那三组数据一律作废。 未覆盖 9 个型号(claude 三个 7 天限额用尽、gemini 两个上游报错、gpt-5.4 限流、 glm 三个被路由),evidence 逐条写明原因,不得被后续文档写成"已实测"。 单元测试里三条以 MiniMax-M3 当"纯开关型"样本的用例改用 glm-4.6v——实测后 M3 不再是那个形状,而 glm-4.6v 是全表证据最硬的 (none, auto)。
This commit is contained in:
@@ -311,10 +311,15 @@ class TestResolveThinking:
|
||||
assert "low" in msg and "high" in msg and "max" in msg
|
||||
|
||||
def test_phase5_says_toggle_only_for_switch_model(self):
|
||||
"""纯开关型模型没有档位,对它说"可选档位"是错的(设计 §3.2 第三个派生量)。"""
|
||||
cap = get_capability("MiniMax-M3") # (none, auto): 能开能关,但没有强度档
|
||||
"""纯开关型模型没有档位,对它说"可选档位"是错的(设计 §3.2 第三个派生量)。
|
||||
|
||||
样本 2026-09-05 由 MiniMax-M3 换成 glm-4.6v: T10 实测 M3 的六个强度值全部生效,
|
||||
它不再是纯开关型;glm-4.6v 是实测证据最硬的 (none, auto) 模型,且 zhipu 的 wire
|
||||
有 effort_key——这两点缺一不可,否则命中的是"该 provider 没有档位键"那条分支。
|
||||
"""
|
||||
cap = get_capability("glm-4.6v") # (none, auto): 能开能关,但没有强度档
|
||||
with pytest.raises(ThinkingUnsupportedError) as exc:
|
||||
resolve_thinking(get_provider("minimax"), cap, Effort.HIGH, model="MiniMax-M3")
|
||||
resolve_thinking(get_provider("zhipu"), cap, Effort.HIGH, model="glm-4.6v")
|
||||
msg = str(exc.value)
|
||||
assert "可选档位" not in msg
|
||||
assert "该模型只有开关" in msg
|
||||
@@ -328,10 +333,10 @@ class TestResolveThinking:
|
||||
)
|
||||
with pytest.raises(ThinkingUnsupportedError) as switch:
|
||||
resolve_thinking(
|
||||
get_provider("minimax"),
|
||||
get_capability("MiniMax-M3"),
|
||||
get_provider("zhipu"),
|
||||
get_capability("glm-4.6v"),
|
||||
Effort.MEDIUM,
|
||||
model="MiniMax-M3",
|
||||
model="glm-4.6v",
|
||||
)
|
||||
assert str(tiered.value) != str(switch.value)
|
||||
|
||||
@@ -386,12 +391,12 @@ class TestResolveThinking:
|
||||
|
||||
def test_nearest_never_turns_reasoning_off(self):
|
||||
"""请求"想得浅一点"绝不能被映射成"别想了": 那是方向反转,不是省钱。"""
|
||||
cap = get_capability("MiniMax-M3") # (none, auto)
|
||||
cap = get_capability("glm-4.6v") # (none, auto)
|
||||
got = resolve_thinking(
|
||||
get_provider("minimax"), cap, Effort.HIGH, model="MiniMax-M3", fallback="nearest"
|
||||
get_provider("zhipu"), cap, Effort.HIGH, model="glm-4.6v", fallback="nearest"
|
||||
)
|
||||
assert got.applied_effort is Effort.AUTO
|
||||
assert got.payload == {}
|
||||
assert got.payload == {"thinking": {"type": "enabled"}}
|
||||
|
||||
def test_nearest_still_errors_when_no_on_tier_exists(self):
|
||||
"""只能关不能开的模型,映射无解——报错而非挑一个反向的档。"""
|
||||
|
||||
Reference in New Issue
Block a user