65 lines
2.5 KiB
Plaintext
65 lines
2.5 KiB
Plaintext
|
|
{%- 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 -%}
|
|||
|
|
{% generation %}
|
|||
|
|
{{- "<|Assistant|>" + content + "<|end▁of▁sentence|>" -}}
|
|||
|
|
{% endgeneration %}
|
|||
|
|
{%- 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 -%}
|
|||
|
|
{% generation %}
|
|||
|
|
{{- "<|Assistant|><think>\n" -}}
|
|||
|
|
{% endgeneration %}
|
|||
|
|
{%- endif -%}
|