| {{- bos_token -}} | |
| {%- set system_prompt = "" -%} | |
| {%- set ns = namespace(system_prompt="") -%} | |
| {%- if messages[0]["role"] == "system" -%} | |
| {%- set ns.system_prompt = messages[0]["content"] -%} | |
| {%- set messages = messages[1:] -%} | |
| {%- endif -%} | |
| {%- if tools -%} | |
| {%- set ns.system_prompt = ns.system_prompt + ("\n" if ns.system_prompt else "") + "List of tools: <|tool_list_start|>[" -%} | |
| {%- for tool in tools -%} | |
| {%- if tool is not string -%} | |
| {%- set tool = tool | tojson -%} | |
| {%- endif -%} | |
| {%- set ns.system_prompt = ns.system_prompt + tool -%} | |
| {%- if not loop.last -%} | |
| {%- set ns.system_prompt = ns.system_prompt + ", " -%} | |
| {%- endif -%} | |
| {%- endfor -%} | |
| {%- set ns.system_prompt = ns.system_prompt + "]<|tool_list_end|>" -%} | |
| {%- endif -%} | |
| {%- if ns.system_prompt -%} | |
| {{- "<|im_start|>system\n" + ns.system_prompt + "<|im_end|>\n" -}} | |
| {%- endif -%} | |
| {%- for message in messages -%} | |
| {{- "<|im_start|>" + message["role"] + "\n" -}} | |
| {%- set content = message["content"] -%} | |
| {%- if content is not string -%} | |
| {%- set content = content | tojson -%} | |
| {%- endif -%} | |
| {%- if message["role"] == "tool" -%} | |
| {%- set content = "<|tool_response_start|>" + content + "<|tool_response_end|>" -%} | |
| {%- endif -%} | |
| {{- content + "<|im_end|>\n" -}} | |
| {%- endfor -%} | |
| {%- if add_generation_prompt -%} | |
| {{- "<|im_start|>assistant\n" -}} | |
| {%- endif -%} |