{%- if messages[0].role == 'system' %}
{{- '<|BOT|>system\n' + messages[0].content + '<|EOT|>\n' }}
{%- endif %}
{%- set ns = namespace(last_query_index=messages|length - 1) %}
{%- for message in messages[::-1] %}
{%- set index = (messages|length - 1) - loop.index0 %}
{%- if message.role == "user" %}
{%- set ns.last_query_index = index %}
{%- break %}
{%- endif %}
{%- endfor %}
{%- for message in messages %}
{%- if (message.role == "user") or (message.role == "system" and not loop.first) -%}
{{- '<|BOT|>' + message.role + '\n' }}
{%- for content in message.content | selectattr('type', 'equalto', 'image') %}{{ '<|image|>' }}{% endfor -%}
{%- for content in message.content | selectattr('type', 'equalto', 'video') %}{{ '<|video|>' }}{% endfor -%}
{% set has_media = (message.content | selectattr('type', 'in', ['image', 'video']) | list | length) > 0 %}
{%- for content in message.content | selectattr('type', 'equalto', 'text') -%}
{%- if has_media -%}
{{ '\n' + content.text }}
{%- else -%}
{{ content.text }}
{%- endif -%}
{%- endfor -%}
{{- '<|EOT|>\n' }}
{%- elif message.role == "assistant" %}
{%- set content_list = message.content | selectattr('type', 'equalto', 'text') | list %}
{%- set content = '' %}
{%- if content_list %}
{%- set content = content_list[0].text %}
{%- endif %}
{%- set reasoning_content = '' %}
{%- if message.reasoning_content is string %}
{%- set reasoning_content = message.reasoning_content %}
{%- else %}
{%- if '' in content %}
{% set parts = content.split('', 1) %}
{% set reasoning_content = parts[0].split('', 1) | last | trim %}
{% set content = parts[1] | trim %}
{%- elif '' in content %}
{% set parts = content.split('', 1) %}
{% set reasoning_content = parts[0].split('', 1) | last | trim %}
{% set content = parts[1] | trim %}
{%- endif %}
{%- endif %}
{%- if loop.index0 > ns.last_query_index %}
{%- if loop.last or (not loop.last and reasoning_content) %}
{{- '<|BOT|>' + message.role + '\n\n' + reasoning_content.strip('\n') + '\n\n' + content.lstrip('\n') + '<|EOT|>\n' }}
{%- else %}
{{- '<|BOT|>' + message.role + '\n' + content + '<|EOT|>\n' }}
{%- endif %}
{%- else %}
{{- '<|BOT|>' + message.role + '\n' + content + '<|EOT|>\n' }}
{%- endif %}
{%- endif %}
{%- endfor %}
{%- if add_generation_prompt %}
{{- '<|BOT|>assistant\n' }}
{%- if enable_thinking is defined %}
{%- if not enable_thinking %}
{{- '\n\n\n' }}
{%- else %}
{{- '\n' }}
{%- endif %}
{%- else %}
{{- '\n\n\n' }}
{%- endif %}
{%- endif %}