-
-
Save ochafik/7d200ab597dc63e0922c3d0ab8227192 to your computer and use it in GitHub Desktop.
llama.cpp DeepSeek R1 alternative chat template
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 -%} | |
| {%- 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}} | |
| {%- if tools %} | |
| You can call any of the following function tools to satisfy the user's requests: {{tools | map(attribute='function') | tojson(indent=4)}} | |
| Example function tool call syntax: | |
| <|tool▁calls▁begin|><|tool▁call▁begin|>function<|tool▁sep|>example_function_name | |
| ```json | |
| { | |
| "arg1": "some_value" | |
| ... | |
| } | |
| ``` | |
| <|tool▁call▁end|><|tool▁calls▁end|> | |
| {% endif -%} | |
| {{ns.system_prompt}} | |
| {%- macro flush_tool_outputs() -%} | |
| {%- if ns.is_tool -%} | |
| {{- '<|tool▁outputs▁end|><|end▁of▁sentence|>' -}} | |
| {%- set ns.is_tool = false -%} | |
| {%- endif -%} | |
| {%- endmacro -%} | |
| {{- flush_tool_outputs() -}} | |
| {%- for message in messages -%} | |
| {%- if message['role'] != 'tool' -%} | |
| {{- flush_tool_outputs() -}} | |
| {%- endif -%} | |
| {%- if message['role'] == 'user' -%} | |
| {#- {{- '<|User|>' + message['content']}} #} | |
| {{- '<|User|>' + content + '<|end▁of▁sentence|>'}} | |
| {%- endif -%} | |
| {%- if message['role'] == 'assistant' and message['content'] is none -%} | |
| {{- '<|Assistant|><|tool▁calls▁begin|>'}} | |
| {%- for tc in message['tool_calls']%} | |
| {%- if ns.is_first -%} | |
| {%- set ns.is_first = false -%} | |
| {%- else -%} | |
| {{- '\n' -}} | |
| {%- endif -%} | |
| {%- set tool_name = tc['function']['name'] -%} | |
| {%- set tool_args = tc['function']['arguments'] -%} | |
| {{- '<|tool▁call▁begin|>' + tc['type'] + '<|tool▁sep|>' + tool_name + '\n' + '```json' + '\n' + tool['function']['arguments'] + '\n' + '```' + '<|tool▁call▁end|>'}} | |
| {%- endfor -%} | |
| {{- '<|tool▁calls▁end|><|end▁of▁sentence|>'}} | |
| {%- endif -%} | |
| {%- if message['role'] == 'assistant' and message['content'] is not none -%} | |
| {{- flush_tool_outputs() -}} | |
| {%- set content = message['content'] -%} | |
| {%- if '</think>' in content -%} | |
| {%- set content = content.split('</think>')[-1] -%} | |
| {%- endif -%} | |
| {{- '<|Assistant|>' + content + '<|end▁of▁sentence|>'}} | |
| {%- endif -%} | |
| {%- if message['role'] == 'tool' -%} | |
| {%- set ns.is_tool = true -%} | |
| {%- if ns.is_output_first -%} | |
| {{- '<|tool▁outputs▁begin|>' -}} | |
| {%- set ns.is_output_first = false -%} | |
| {%- endif -%} | |
| {{- '\n<|tool▁output▁begin|>' + message['content'] + '<|tool▁output▁end|>'}} | |
| {%- endif -%} | |
| {%- endfor -%} | |
| {{- flush_tool_outputs() -}} | |
| {%- if add_generation_prompt and not ns.is_tool -%} | |
| {{- '<|Assistant|>' -}} | |
| {%- endif -%} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment