- 
      
- 
        Save yisiqi/9b8cfa514a4b48ff7be040fc3b5569d7 to your computer and use it in GitHub Desktop. 
    GLM 4.5 disabled thinking chat template
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | [gMASK]<sop> | |
| {%- if tools -%} | |
| <|system|> | |
| # Tools | |
| You may call one or more functions to assist with the user query. | |
| You are provided with function signatures within <tools></tools> XML tags: | |
| <tools> | |
| {% for tool in tools %} | |
| {{ tool | tojson(ensure_ascii=False) }} | |
| {% endfor %} | |
| </tools> | |
| For each function call, output the function name and arguments within the following XML format: | |
| <tool_call>{function-name} | |
| <arg_key>{arg-key-1}</arg_key> | |
| <arg_value>{arg-value-1}</arg_value> | |
| <arg_key>{arg-key-2}</arg_key> | |
| <arg_value>{arg-value-2}</arg_value> | |
| ... | |
| </tool_call>{%- endif -%} | |
| {%- macro visible_text(content) -%} | |
| {%- if content is string -%} | |
| {{- content }} | |
| {%- elif content is iterable and content is not mapping -%} | |
| {%- for item in content -%} | |
| {%- if item is mapping and item.type == 'text' -%} | |
| {{- item.text }} | |
| {%- elif item is string -%} | |
| {{- item }} | |
| {%- endif -%} | |
| {%- endfor -%} | |
| {%- else -%} | |
| {{- content }} | |
| {%- endif -%} | |
| {%- endmacro -%} | |
| {%- set ns = namespace(last_user_index=-1) %} | |
| {%- for m in messages %} | |
| {%- if m.role == 'user' %} | |
| {% set ns.last_user_index = loop.index0 -%} | |
| {%- endif %} | |
| {%- endfor %} | |
| {% for m in messages %} | |
| {%- if m.role == 'user' -%}<|user|> | |
| {{ visible_text(m.content) }} | |
| {{- '/nothink' if (enable_thinking is defined and not enable_thinking and not visible_text(m.content).endswith("/nothink")) else '' -}} | |
| {%- elif m.role == 'assistant' -%} | |
| <|assistant|> | |
| {%- set reasoning_content = '' %} | |
| {%- set content = visible_text(m.content) %} | |
| {%- if m.reasoning_content is string %} | |
| {%- set reasoning_content = m.reasoning_content %} | |
| {%- else %} | |
| {%- if '</think>' in content %} | |
| {%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %} | |
| {%- set content = content.split('</think>')[-1].lstrip('\n') %} | |
| {%- endif %} | |
| {%- endif %} | |
| {%- if loop.index0 > ns.last_user_index and reasoning_content -%} | |
| {{ '\n<think>' + reasoning_content.strip() + '</think>'}} | |
| {%- else -%} | |
| {{ '\n<think></think>' }} | |
| {%- endif -%} | |
| {%- if content.strip() -%} | |
| {{ '\n' + content.strip() }} | |
| {%- endif -%} | |
| {% if m.tool_calls %} | |
| {% for tc in m.tool_calls %} | |
| {%- if tc.function %} | |
| {%- set tc = tc.function %} | |
| {%- endif %} | |
| {{ '\n<tool_call>' + tc.name }} | |
| {% set _args = tc.arguments %} | |
| {% for k, v in _args.items() %} | |
| <arg_key>{{ k }}</arg_key> | |
| <arg_value>{{ v | tojson(ensure_ascii=False) if v is not string else v }}</arg_value> | |
| {% endfor %} | |
| </tool_call>{% endfor %} | |
| {% endif %} | |
| {%- elif m.role == 'tool' -%} | |
| {%- if m.content is string -%} | |
| {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %} | |
| {{- '<|observation|>' }} | |
| {%- endif %} | |
| {{- '\n<tool_response>\n' }} | |
| {{- m.content }} | |
| {{- '\n</tool_response>' }} | |
| {%- else -%} | |
| <|observation|>{% for tr in m.content %} | |
| <tool_response> | |
| {{ tr.output if tr.output is defined else tr }} | |
| </tool_response>{% endfor -%} | |
| {% endif -%} | |
| {%- elif m.role == 'system' -%} | |
| <|system|> | |
| {{ visible_text(m.content) }} | |
| {%- endif -%} | |
| {%- endfor -%} | |
| {%- if add_generation_prompt -%} | |
| <|assistant|>{{- '\n<think></think>' -}} | |
| {%- endif -%} | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment