Motif-2-12.7B-Reasoning / chat_template.jinja
leejunhyeok's picture
Update chat_template.jinja
d80b65e verified
raw
history blame
2.66 kB
<|beginoftext|><startofturn|>
{%- set system_messages = messages | selectattr('role', 'equalto', 'system') | list %}
<|system|>
You are a deep thinking AI, you may use extremely long chains of thought to deeply consider the problem and deliberate with yourself via systematic reasoning processes to help come to a correct solution prior to answering. You should enclose your thoughts and internal monologue inside <think> </think> tags, and then provide your solution or response to the problem.
Solve the following problem step by step. Put your final answer inside \\boxed{}.
{% if system_messages %}
{% for sm in system_messages %}
{{ sm.content }}
{% endfor %}
{%- endif %}
{% if tools is defined and 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>
{%- for tool in tools %}
{{ tool | tojson }}
{%- if not loop.last %}
{%- endif %}
{%- endfor %}
</tools>
Use this exact JSON schema for each tool call:
{"properties":{"name":{"title":"Name","type":"string"},"arguments":{"title":"Arguments","type":"object"}},"required":["name","arguments"],"title":"FunctionCall","type":"object"}
For each function call return a json object with function name and arguments within <tool_call></tool_call> XML tags as follows:
<tool_call>
{"name": <function-name>, "arguments": <args-dict>}
</tool_call>
{% endif %}
{{ '<|endofturn|>' }}
{%- for message in messages if message.role != "system" -%}
<|startofturn|>
{%- if message.role == "user" -%}
<|user|>
{{ message.content }}
<|endofturn|>{%- elif message.role == "assistant" -%}
<|assistant|>
{%- set raw_calls = (message.tool_calls if (message.tool_calls is defined and message.tool_calls) else message.tool_call) %}
{%- if raw_calls %}
{%- set tool_calls = (raw_calls if (raw_calls is iterable and (raw_calls is not mapping) and (raw_calls is not string)) else [raw_calls]) %}
{%- for tc in tool_calls %}
{%- set call = (tc.function if tc.function is defined else tc) %}
<tool_call>
{"name": "{{ call.name }}", "arguments": {{ call.arguments if call.arguments is string else (call.arguments|default({})|tojson) }}}
</tool_call>
{%- endfor %}
{%- endif %}
{%- if message.thinking is defined and message.thinking and not add_generation_prompt %}
{{ '<think>' }}
{{ message.thinking }}
{{ '</think>' }}
{% endif %}
{{ message.content }}
<|endofturn|>{%- elif message.role == "tool" -%}
<|tool|>
<tool_response>
{{ message.content }}
</tool_response><|endofturn|>
{%- endif -%}
{%- endfor -%}
{%- if add_generation_prompt %}
{{- '<|assistant|><think>\n' }}
{%- else %}
<|endoftext|>
{%- endif %}