- param-value may be multi-line. If it contains <, & or newline characters, wrap it in a CDATA block: <param name="param-name"><![CDATA[...multi-line value...]]></param>
{{- 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 .Thinking }}
<think>
{{ .Thinking }}
</think>
{{- end }}
{{ .Content }}
{{- if .ToolCalls }}
{{- range .ToolCalls }}
<function name="{{ .Function.Name }}">
{{- range $k, $v := .Function.Arguments }}
<param name="{{ $k }}">{{ $v }}</param>
{{- end }}
</function>
{{- end }}
{{- end }}<|im_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