Providers: strip Gemma 4 reasoning leak (#933)

This commit is contained in:
badgerbees authored and GitHub committed 2026-04-17 19:58:51 +07:00
1 parent 304ce72299
commit 544b6c6532
2 files changed
+8 -3

No files matched your search

+6 -2
View File
@@ -32,9 +32,13 @@ func modelLeaksReasoning(model string) bool {
if m == "" {
return false
}
// Known leakers: Moonshot Kimi (any variant), DeepSeek-Reasoner family.
// Known leakers: Moonshot Kimi (any variant), DeepSeek-Reasoner family,
// and Gemma 4+ variants (for example "gemma4:8b" or "google/gemma-4-27b-it").
// Extend this list only after confirming the model does not honor effort="off".
return strings.Contains(m, "kimi") || strings.Contains(m, "deepseek-reasoner")
return strings.Contains(m, "kimi") ||
strings.Contains(m, "deepseek-reasoner") ||
strings.Contains(m, "gemma4") ||
strings.Contains(m, "gemma-4")
}
func ResolveReasoningDecision(provider Provider, model, requestedEffort, fallback, source string) (out ReasoningDecision) {
+2 -1
View File
@@ -17,6 +17,7 @@ func TestResolveReasoningDecisionStripsForLeakyModels(t *testing.T) {
{"kimi k2 default off", "kimi-k2", true, "off"},
{"kimi thinking preview", "moonshot/kimi-k2-thinking", true, "off"},
{"deepseek reasoner", "deepseek-reasoner", true, "off"},
{"gemma 4 family", "google/gemma-4-27b-it", true, "off"},
{"deepseek chat not flagged", "deepseek-chat", false, "off"},
{"gpt-5.4 not flagged", "gpt-5.4", false, "off"},
{"empty model", "", false, "off"},
@@ -52,7 +53,7 @@ func TestResolveReasoningDecisionNoStripWhenEffortActive(t *testing.T) {
// TestModelLeaksReasoning spot-checks the model allowlist directly.
func TestModelLeaksReasoning(t *testing.T) {
leaky := []string{"kimi-k2", "KIMI-K2-Thinking", "deepseek-reasoner"}
leaky := []string{"kimi-k2", "KIMI-K2-Thinking", "deepseek-reasoner", "google/gemma-4-27b-it", "gemma4:8b-it-q4_K_M"}
for _, m := range leaky {
if !modelLeaksReasoning(m) {
t.Errorf("modelLeaksReasoning(%q) = false, want true", m)