From 4d75f5da03ccdea757cb945ba47dac1c965ef717 Mon Sep 17 00:00:00 2001 From: Devon Rifkin Date: Mon, 13 Apr 2026 11:23:19 -0700 Subject: [PATCH] gemma4: fix nothink case renderer (#15553) Regressed in #15490 Fixes: #15536 --- model/renderers/gemma4.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/model/renderers/gemma4.go b/model/renderers/gemma4.go index 7b186af9..663435e7 100644 --- a/model/renderers/gemma4.go +++ b/model/renderers/gemma4.go @@ -40,6 +40,7 @@ func (r *Gemma4Renderer) Render(messages []api.Message, tools []api.Tool, thinkV // Emit system turn if there's a system/developer role, tools, or thinking. hasThink := thinkValue != nil && thinkValue.Bool() + thinkingExplicitlyDisabled := thinkValue != nil && thinkValue.IsBool() && !thinkValue.Bool() if hasSystemRole || len(tools) > 0 || hasThink { sb.WriteString("<|turn>system\n") if hasThink { @@ -124,7 +125,7 @@ func (r *Gemma4Renderer) Render(messages []api.Message, tools []api.Tool, thinkV // Generation prompt. if prevMessageType != "tool_response" && prevMessageType != "tool_call" { sb.WriteString("<|turn>model\n") - if !hasThink { + if !hasThink && !thinkingExplicitlyDisabled { sb.WriteString("<|channel>thought\n") } }