Files
DSR17B-templatefixes/chat_template.jinja

65 lines
2.5 KiB
Plaintext
Raw Permalink Normal View History

{%- if not add_generation_prompt is defined -%}
{%- set add_generation_prompt = false -%}
{%- endif -%}
{%- set ns = namespace(is_first=false, is_tool=false, is_output_first=true, system_prompt="") -%}
{%- for message in messages -%}
{%- if message["role"] == "system" -%}
{%- set ns.system_prompt = message["content"] -%}
{%- endif -%}
{%- endfor -%}
{{- bos_token -}}
{{- ns.system_prompt -}}
{%- for message in messages -%}
{%- if message["role"] == "user" -%}
{%- set ns.is_tool = false -%}
{{- "<User>" + message["content"] -}}
{%- endif -%}
{%- if message["role"] == "assistant" and message["content"] is none -%}
{%- set ns.is_tool = false -%}
{%- for tool in message["tool_calls"] -%}
{%- if not ns.is_first -%}
{{- "<Assistant><tool▁calls▁begin><tool▁call▁begin>" + tool["type"] + "<tool▁sep>" + tool["function"]["name"] + "\n" + "```json" + "\n" + tool["function"]["arguments"] + "\n" + "```" + "<tool▁call▁end>" -}}
{%- set ns.is_first = true -%}
{%- else -%}
{{- "\n" + "<tool▁call▁begin>" + tool["type"] + "<tool▁sep>" + tool["function"]["name"] + "\n" + "```json" + "\n" + tool["function"]["arguments"] + "\n" + "```" + "<tool▁call▁end>" -}}
{{- "<tool▁calls▁end><end▁of▁sentence>" -}}
{%- endif -%}
{%- endfor -%}
{%- endif -%}
{%- if message["role"] == "assistant" and message["content"] is not none -%}
{%- if ns.is_tool -%}
{{- "<tool▁outputs▁end>" + message["content"] + "<end▁of▁sentence>" -}}
{%- set ns.is_tool = false -%}
{%- else -%}
{%- set content = message["content"] -%}
{%- if "</think>" in content -%}
{%- set content = content.split("</think>")[-1] -%}
{%- endif -%}
{% generation %}
{{- "<Assistant>" + content + "<end▁of▁sentence>" -}}
{% endgeneration %}
{%- endif -%}
{%- endif -%}
{%- if message["role"] == "tool" -%}
{%- set ns.is_tool = true -%}
{%- if ns.is_output_first -%}
{{- "<tool▁outputs▁begin><tool▁output▁begin>" + message["content"] + "<tool▁output▁end>" -}}
{%- set ns.is_output_first = false -%}
{%- else -%}
{{- "\n<tool▁output▁begin>" + message["content"] + "<tool▁output▁end>" -}}
{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- if ns.is_tool -%}
{{- "<tool▁outputs▁end>" -}}
{%- endif -%}
{%- if add_generation_prompt and not ns.is_tool -%}
{% generation %}
{{- "<Assistant><think>\n" -}}
{% endgeneration %}
{%- endif -%}