From abc6a300defeded6e382fc54f2ed940b4cd664a3 Mon Sep 17 00:00:00 2001 From: jmorganca Date: Sun, 28 Sep 2025 01:29:03 -0700 Subject: [PATCH] model: tweak renderer for qwen3coder --- api/types.go | 2 +- model/renderers/qwen3coder.go | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/api/types.go b/api/types.go index 8cc7752ca..f1f46278f 100644 --- a/api/types.go +++ b/api/types.go @@ -291,7 +291,7 @@ func mapToTypeScriptType(jsonType string) string { case "boolean": return "boolean" case "array": - return "any[]" + return "array" case "object": return "Record" case "null": diff --git a/model/renderers/qwen3coder.go b/model/renderers/qwen3coder.go index df3b3a45b..9304c1dc5 100644 --- a/model/renderers/qwen3coder.go +++ b/model/renderers/qwen3coder.go @@ -90,7 +90,7 @@ func Qwen3CoderRenderer(messages []api.Message, tools []api.Tool, _ *api.ThinkVa sb.WriteString("\n") sb.WriteString("" + tool.Function.Name + "") if tool.Function.Description != "" { - sb.WriteString("\n" + tool.Function.Description + "") + sb.WriteString("\n" + strings.TrimSpace(tool.Function.Description) + "") } sb.WriteString("\n") @@ -105,7 +105,7 @@ func Qwen3CoderRenderer(messages []api.Message, tools []api.Tool, _ *api.ThinkVa } if prop.Description != "" { - sb.WriteString("\n" + prop.Description + "") + sb.WriteString("\n" + strings.TrimSpace(prop.Description) + "") } // Render any additional keys not already handled @@ -137,7 +137,7 @@ func Qwen3CoderRenderer(messages []api.Message, tools []api.Tool, _ *api.ThinkVa for i, message := range filteredMessages { lastMessage := i == len(filteredMessages)-1 - prefill := lastMessage && message.Role == "assistant" + // prefill := lastMessage && message.Role == "assistant" switch message.Role { case "assistant": if len(message.ToolCalls) > 0 { @@ -146,7 +146,7 @@ func Qwen3CoderRenderer(messages []api.Message, tools []api.Tool, _ *api.ThinkVa sb.WriteString(message.Content + "\n") } for _, toolCall := range message.ToolCalls { - sb.WriteString("\n\n") + sb.WriteString("\n") for name, value := range toolCall.Function.Arguments { valueStr := formatToolCallArgument(value) sb.WriteString("\n\n" + valueStr + "\n") @@ -157,9 +157,9 @@ func Qwen3CoderRenderer(messages []api.Message, tools []api.Tool, _ *api.ThinkVa } else { sb.WriteString(imStartTag + "assistant\n") sb.WriteString(message.Content) - if !prefill { - sb.WriteString(imEndTag + "\n") - } + // if !prefill { + sb.WriteString(imEndTag + "\n") + // } } case "tool": // consecutive tool responses should share a single `user`, but @@ -184,7 +184,7 @@ func Qwen3CoderRenderer(messages []api.Message, tools []api.Tool, _ *api.ThinkVa sb.WriteString(imEndTag + "\n") } - if lastMessage && !prefill { + if lastMessage { sb.WriteString(imStartTag + "assistant\n") } }