1- {% if not add_generation_prompt is defined %}
2- {% set add_generation_prompt = false %}
3- {% endif %}
4- {% set ns = namespace (is_first =false , is_tool =false , is_output_first =true , system_prompt ='' ) %}
5- {% - for message in messages %}
6- {% - if message ['role' ] == 'system' %}
7- {% set ns .system_prompt = message ['content' ] %}
8- {% - endif %}
9- {% - endfor %}
10- {{bos_token}}
11- {{ns.system_prompt}}
12- {% - for message in messages %}
13- {% - if message ['role' ] == 'user' %}
14- {% - set ns .is_tool = false -%}
15- {{'<|User|>' + message['content'] }}
16- {% - endif %}
17- {% - if message ['role' ] == 'assistant' and message ['content' ] is none %}
18- {% - set ns .is_tool = false -%}
19- {% - for tool in message ['tool_calls' ]%}
20- {% - if not ns .is_first %}
21- {{'<|Assistant|><|tool▁calls▁begin|><|tool▁call▁begin|>' + tool['type'] + '<|tool▁sep|>' + tool['function'] ['name'] + '\n' + '```json' + '\n' + tool['function'] ['arguments'] + '\n' + '```' + '<|tool▁call▁end|>'}}
22- {% - set ns .is_first = true -%}
23- {% - else %}
24- {{'\n' + '<|tool▁call▁begin|>' + tool['type'] + '<|tool▁sep|>' + tool['function'] ['name'] + '\n' + '```json' + '\n' + tool['function'] ['arguments'] + '\n' + '```' + '<|tool▁call▁end|>'}}
25- {{'<|tool▁calls▁end|><|end▁of▁sentence|>'}}
26- {% - endif %}
27- {% - endfor %}
28- {% - endif %}
29- {% - if message ['role' ] == 'assistant' and message ['content' ] is not none %}
30- {% - if ns .is_tool %}
31- {{'<|tool▁outputs▁end|>' + message['content'] + '<|end▁of▁sentence|>'}}
32- {% - set ns .is_tool = false -%}
33- {% - else %}
34- {% set content = message ['content' ] %}
35- {% if '</think>' in content %}
36- {% set content = content .split ('</think>' )[-1] %}
37- {% endif %}
38- {{'<|Assistant|>' + content + '<|end▁of▁sentence|>'}}
39- {% - endif %}
40- {% - endif %}
41- {% - if message ['role' ] == 'tool' %}
42- {% - set ns .is_tool = true -%}
43- {% - if ns .is_output_first %}
44- {{'<|tool▁outputs▁begin|><|tool▁output▁begin|>' + message['content'] + '<|tool▁output▁end|>'}}
45- {% - set ns .is_output_first = false %}
46- {% - else %}
47- {{'\n<|tool▁output▁begin|>' + message['content'] + '<|tool▁output▁end|>'}}
48- {% - endif %}
49- {% - endif %}
50- {% - endfor -%}
51- {% if ns .is_tool %}
52- {{'<|tool▁outputs▁end|>'}}
53- {% endif %}
54- {% if add_generation_prompt and not ns .is_tool %}
55- {{'<|Assistant|>'}}
56- {% endif %}
1+ {% 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 %}{{'<|Assistant|>' + content + '<|end▁of▁sentence|>'}}{%- 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 %}{{'<|Assistant|><think>\n'}}{% endif %}
0 commit comments