Files
vllm/examples/tool_chat_template_glm4.jinja
2026-01-05 11:32:43 -08:00

55 lines
1.8 KiB
Django/Jinja
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{%- set counter = namespace(index=0) -%}
{%- if not tools is defined %}
{%- set tools = none %}
{%- endif %}
{%- if messages and messages[0]['role'] == 'system' %}
{%- set system_message = messages[0]['content']|trim %}
{%- set messages = messages[1:] %}
{%- else %}
{%- set system_message = "You are a helpful assistant." %}
{%- endif %}
{%- if tools is not none %}
{%- set tool_instruction %}
You have access to the following tools. When you need to call a tool, you MUST use the following format:
<tool_call>function_name
<arg_key>parameter_name</arg_key>
<arg_value>parameter_value</arg_value>
</tool_call>
Important rules:
- Always wrap tool calls with <tool_call>...</tool_call> tags
- Put the function name on the first line after <tool_call>
- Use <arg_key> and <arg_value> tags for each parameter
- If a parameter value is a string, keep it as-is. If it's a number or boolean, convert it appropriately
- You can make multiple tool calls if needed
- If no tool is suitable, respond with regular text
Available tools:
{% endset %}
{{- tool_instruction + "\n\n" }}
{%- for t in tools %}
{{- t | tojson(indent=4) }}
{{- "\n\n" }}
{%- endfor %}
{%- endif %}
{%- for message in messages -%}
{%- if message['role'] == 'user' -%}
{{- '[Round ' + counter.index|string + ']\n问' + message['content'] -}}
{%- set counter.index = counter.index + 1 -%}
{%- endif -%}
{%- if message['role'] == 'assistant' -%}
{{- '\n答' + message['content'] -}}
{%- if (loop.last and add_generation_prompt) or not loop.last -%}
{{- '\n' -}}
{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- if add_generation_prompt and messages[-1]['role'] != 'assistant' -%}
{{- '\n答' -}}
{%- endif -%}