FROM qwen3-4b-thinking-2507.Q5_K_M.gguf
TEMPLATE """
{{- $lastUserIdx := -1 -}}{{- range $idx, $msg := .Messages -}}{{- if eq $msg.Role "user" }}{{ $lastUserIdx = $idx }}{{ end -}}{{- end }}{{- if or .System .Tools }}<|im_start|>system
{{ if .System }}{{ .System }}{{- end }}{{- if .Tools }}
# Tools
You may call one or more functions to assist with the user query.
You are provided with function signatures within <tools></tools> XML tags:
<tools>{{- range .Tools }}
{"type": "function", "function": {{ .Function }}}
{{- end }}</tools>
For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:
<tool_call>
{"name": <function-name>, "arguments": <args-json-object>}
</tool_call>{{- end -}}
<|im_end|>
{{ end }}{{- range $i, $_ := .Messages }}{{- $last := eq (len (slice $.Messages $i)) 1 -}}{{- if eq .Role "user" }}<|im_start|>user
{{ .Content }}<|im_end|>
{{ else if eq .Role "assistant" }}<|im_start|>assistant
{{ if (and $.IsThinkSet (and .Thinking (or $last (gt $i $lastUserIdx)))) -}}<think>{{ .Thinking }}</think>{{ end -}}{{ if .Content }}{{ .Content }}{{- else if .ToolCalls }}<tool_call>{{ range .ToolCalls }}{"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}}
{{ end }}</tool_call>{{- end }}{{ if not $last }}<|im_end|>
{{ end }}{{- else if eq .Role "tool" }}<|im_start|>user
<tool_response>{{ .Content }}</tool_response><|im_end|>
{{ end }}{{- if and (ne .Role "assistant") $last }}<|im_start|>assistant
{{ end }}{{- end }}
"""