Created
August 24, 2025 16:46
-
-
Save createthis/95b3921e62b246e1a66724407d1dad58 to your computer and use it in GitHub Desktop.
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
| {% if not add_generation_prompt is defined %} | |
| {% set add_generation_prompt = false %} | |
| {% endif %} | |
| {% if 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 content = content.split('</think>', 1)[1] -%} | |
| {%- 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 thinking %} | |
| {{'<think>\n'}} | |
| {%- else %} | |
| {{'</think>\n'}} | |
| {%- endif %} | |
| {% endif %} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment