@@ -0,0 +1,103 @@
[gMASK]<sop >
{% - if tools -%}
<|system|>
# 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 >
{% for tool in tools %}
{{ tool | tojson(ensure_ascii=False) }}
{% endfor %}
</tools >
For each function call, output the function name and arguments within the following XML format:
<tool _call >{function-name}
<arg _key >{arg-key-1}</arg _key >
<arg _value >{arg-value-1}</arg _value >
<arg _key >{arg-key-2}</arg _key >
<arg _value >{arg-value-2}</arg _value >
...
</tool _call >{% - endif -%}
{% - macro visible_text (content ) -%}
{% - if content is string -%}
{{- content }}
{% - elif content is iterable and content is not mapping -%}
{% - for item in content -%}
{% - if item is mapping and item .type == 'text' -%}
{{- item.text }}
{% - elif item is string -%}
{{- item }}
{% - endif -%}
{% - endfor -%}
{% - else -%}
{{- content }}
{% - endif -%}
{% - endmacro -%}
{% - set ns = namespace (last_user_index =-1) %}
{% - for m in messages %}
{% - if m .role == 'user' %}
{% set ns .last_user_index = loop .index 0 -%}
{% - endif %}
{% - endfor %}
{% for m in messages %}
{% - if m .role == 'user' -%} <|user|>
{{ visible_text(m.content) }}
{{- '/nothink' if (enable_thinking is defined and not enable_thinking and not visible_text(m.content).endswith("/nothink")) else '' -}}
{% - elif m .role == 'assistant' -%}
<|assistant|>
{% - set reasoning_content = '' %}
{% - set content = visible_text (m .content ) %}
{% - if m .reasoning_content is string %}
{% - set reasoning_content = m .reasoning_content %}
{% - else %}
{% - if '</think>' in content %}
{% - set reasoning_content = content .split ('</think>' )[0].rstrip ('\n' ).split ('<think>' )[-1].lstrip ('\n' ) %}
{% - set content = content .split ('</think>' )[-1].lstrip ('\n' ) %}
{% - endif %}
{% - endif %}
{% - if loop .index 0 > ns .last_user_index and reasoning_content -%}
{{ '\n<think>' + reasoning_content.strip() + '</think>'}}
{% - else -%}
{{ '\n<think></think>' }}
{% - endif -%}
{% - if content .strip () -%}
{{ '\n' + content.strip() }}
{% - endif -%}
{% if m .tool_calls %}
{% for tc in m .tool_calls %}
{% - if tc .function %}
{% - set tc = tc .function %}
{% - endif %}
{{ '\n<tool_call>' + tc.name }}
{% set _args = tc .arguments %}
{% for k , v in _args .items () %}
<arg _key >{{ k }}</arg _key >
<arg _value >{{ v | tojson(ensure_ascii=False) if v is not string else v }}</arg _value >
{% endfor %}
</tool _call >{% endfor %}
{% endif %}
{% - elif m .role == 'tool' -%}
{% - if m .content is string -%}
{% - if loop .first or (messages [loop .index 0 - 1].role != "tool" ) %}
{{- '<|observation|>' }}
{% - endif %}
{{- '\n<tool_response>\n' }}
{{- m.content }}
{{- '\n</tool_response>' }}
{% - else -%}
<|observation|>{% for tr in m .content %}
<tool _response >
{{ tr.output if tr.output is defined else tr }}
</tool _response >{% endfor -%}
{% endif -%}
{% - elif m .role == 'system' -%}
<|system|>
{{ visible_text(m.content) }}
{% - endif -%}
{% - endfor -%}
{% - if add_generation_prompt -%}
<|assistant|>{{- '\n<think></think>' -}}
{% - endif -%}