Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [gMASK]<sop>
- {%- if tools -%}
- <|system|>
- # Tools
- You have access to the following tools:
- <tools>
- {% for tool in tools %}
- {{ tool | tojson(ensure_ascii=False) }}
- {% endfor %}
- </tools>
- When you need to use a tool, respond with ONLY the JSON tool call in this format:
- {
- "type": "tool_use",
- "name": "function_name",
- "input": {
- "param": "value"
- }
- }
- For multiple parallel tool calls, output multiple JSON objects separated by newlines.
- {%- 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 %}
- {
- "type": "tool_use",
- "name": "{{ tc.name }}",
- "input": {{ tc.arguments | tojson(ensure_ascii=False) }}
- }
- {%- endfor -%}
- {%- endif %}
- {%- elif m.role == 'tool' -%}
- {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
- <|observation|>
- {%- endif %}
- {%- if m.content is string %}
- {{ m.content }}
- {%- elif m.content is iterable %}
- {%- for tr in m.content %}
- {{ tr.output if tr.output is defined else tr }}
- {%- endfor %}
- {%- else %}
- {{ m.content }}
- {%- endif %}
- {%- elif m.role == 'system' -%}
- <|system|>
- {{ visible_text(m.content) }}
- {%- endif -%}
- {%- endfor -%}
- {%- if add_generation_prompt -%}
- <|assistant|>{{- '\n<think></think>' if (enable_thinking is defined and not enable_thinking) else '' -}}
- {%- endif -%}
Advertisement
Add Comment
Please, Sign In to add comment