Created
August 24, 2025 16:46
-
-
Save createthis/a360c70d54bdba7c694d4bd49a309515 to your computer and use it in GitHub Desktop.
Unsloth DeepSeek-V3.1 Human Readable chat_template.jinja
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| {#- Unsloth template fixes #} | |
| {% if not add_generation_prompt is defined %} | |
| {% set add_generation_prompt = false %} | |
| {% endif %} | |
| {% if enable_thinking is defined and enable_thinking is false %} | |
| {% set thinking = false %} | |
| {% elif enable_thinking is defined and enable_thinking is true %} | |
| {% set thinking = true %} | |
| {% elif not thinking is defined %} | |
| {% set thinking = false %} | |
| {% endif %} | |
| {% set ns = namespace(is_first=false, is_tool=false, system_prompt='', is_first_sp=true, is_last_user=false) %} | |
| {%- for message in messages %} | |
| {%- if message['role'] == 'system' %} | |
| {%- if ns.is_first_sp %} | |
| {% set ns.system_prompt = ns.system_prompt + message['content'] %} | |
| {% set ns.is_first_sp = false %} | |
| {%- else %} | |
| {% set ns.system_prompt = ns.system_prompt + '\n\n' + message['content'] %} | |
| {%- endif %} | |
| {%- endif %} | |
| {%- endfor %} | |
| {{ bos_token }} | |
| {{ ns.system_prompt }} | |
| {%- for message in messages %} | |
| {%- if message['role'] == 'user' %} | |
| {%- set ns.is_tool = false -%} | |
| {%- set ns.is_first = false -%} | |
| {%- set ns.is_last_user = true -%} | |
| {{'<|User |>' + message['content']}} | |
| {%- endif %} | |
| {%- if message['role'] == 'assistant' and message['tool_calls'] is defined and message['tool_calls'] is not none %} | |
| {%- if ns.is_last_user %}{{'<|Assistant |></think>'}}{%- endif %} | |
| {%- set ns.is_last_user = false -%} | |
| {%- set ns.is_first = false %} | |
| {%- set ns.is_tool = false -%} | |
| {%- for tool in message['tool_calls'] %} | |
| {%- if not ns.is_first %} | |
| {%- if message['content'] is none %} | |
| {{'<|tool▁calls▁begin |><|tool▁call▁begin |>'+ tool['function']['name'] + '<|tool▁sep |>' + tool['function']['arguments'] + '<|tool▁call▁end |>'}} | |
| {%- else %} | |
| {{ message['content'] + '<|tool▁calls▁begin |><|tool▁call▁begin |>' + tool['function']['name'] + '<|tool▁sep |>' + tool['function']['arguments'] + '<|tool▁call▁end |>' }} | |
| {%- endif %} | |
| {%- set ns.is_first = true -%} | |
| {%- else %} | |
| {{'<|tool▁call▁begin |>'+ tool['function']['name'] + '<|tool▁sep |>' + tool['function']['arguments'] + '<|tool▁call▁end |>'}} | |
| {%- endif %} | |
| {%- endfor %} | |
| {{'<|tool▁calls▁end |><|end▁of▁sentence |>'}} | |
| {%- endif %} | |
| {%- if message['role'] == 'assistant' and (message['tool_calls'] is not defined or message['tool_calls'] is none) %} | |
| {%- if ns.is_last_user %} | |
| {{'<|Assistant |>'}} | |
| {%- if message['prefix'] is defined and message['prefix'] and thinking %} | |
| {{'<think>'}} | |
| {%- else %} | |
| {{'</think>'}} | |
| {%- endif %} | |
| {%- endif %} | |
| {%- set ns.is_last_user = false -%} | |
| {%- if ns.is_tool %} | |
| {{ message['content'] + '<|end▁of▁sentence |>' }} | |
| {%- set ns.is_tool = false -%} | |
| {%- else %} | |
| {%- set content = message['content'] -%} | |
| {%- if '</think>' in content %} | |
| {%- set splitted = content.split('</think>') -%} | |
| {%- set content = splitted[1:] | join('</think>') -%} | |
| {%- endif %} | |
| {{ content + '<|end▁of▁sentence |>' }} | |
| {%- endif %} | |
| {%- endif %} | |
| {%- if message['role'] == 'tool' %} | |
| {%- set ns.is_last_user = false -%} | |
| {%- set ns.is_tool = true -%} | |
| {{'<|tool▁output▁begin |>' + message['content'] + '<|tool▁output▁end |>'}} | |
| {%- endif %} | |
| {%- endfor -%} | |
| {%- if add_generation_prompt and ns.is_last_user and not ns.is_tool %} | |
| {{'<|Assistant |>'}} | |
| {%- if not thinking %} | |
| {{'</think>'}} | |
| {%- else %} | |
| {{'<think>'}} | |
| {%- endif %} | |
| {% endif %} | |
| {#- Copyright 2025-present Unsloth. Apache 2.0 License. #}, example_format: 'You are a helpful assistant<|User |>Hello<|Assistant |></think>Hi there<|end▁of▁sentence |><|User |>How are you?<|Assistant |><think>' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment