{%- if not add_generation_prompt is defined -%} {%- set add_generation_prompt = false -%} {%- endif -%} {%- if not thinking is defined -%} {%- if enable_thinking is defined -%} {%- set thinking = enable_thinking -%} {%- else -%} {%- set thinking = false -%} {%- endif -%} {%- endif -%} {%- set ns = namespace(system_prompt='', is_first_sp=true, is_last_user=false, is_only_sys=false, is_prefix=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 -%} {%- set ns.is_only_sys = true -%} {%- endif -%} {%- endfor -%} {{- bos_token -}}{{- ns.system_prompt -}} {%- for message in messages -%} {%- if message['role'] == 'user' -%} {%- set ns.is_last_user = true -%} {{- '<|User|>' + message['content'] -}} {%- endif -%} {%- if message['role'] == 'assistant' -%} {%- if ns.is_last_user -%} {{- '<|Assistant|>' -}} {%- if message['prefix'] is defined and message['prefix'] and thinking -%} {{- '' -}} {%- else -%} {{- '' -}} {%- endif -%} {%- endif -%} {%- if message['prefix'] is defined and message['prefix'] -%} {%- set ns.is_prefix = true -%} {%- endif -%} {%- set ns.is_last_user = false -%} {%- set content = message['content'] -%} {%- if '' in content -%} {%- set content = content.split('', 1)[1] -%} {%- endif -%} {{- content + '<|end▁of▁sentence|>' -}} {%- endif -%} {%- if message['role'] != 'system' -%} {%- set ns.is_only_sys = false -%} {%- endif -%} {%- endfor -%} {%- if add_generation_prompt -%} {%- if ns.is_last_user or ns.is_only_sys or not ns.is_prefix -%} {{- '<|Assistant|>' -}} {%- if not thinking -%} {{- '' -}} {%- else -%} {{- '' -}} {%- endif -%} {%- endif -%} {%- endif -%}