{% if messages[0]['role'] == 'system' %}{{'<|im_start|>system\n' + messages[0]['content'] + '<|im_end|>\n'}}{% else %}{{'<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n'}}{% endif %}{% for message in messages %}{% if message['role'] == 'user' or message['role'] == 'system' and not loop.first or message['role'] == 'assistant' %}{{'<|im_start|>' + message['role'] + '\n'}}{# Render all images first #}{% for content in message['content'] | selectattr('type', 'equalto', 'image') %}{{ '<image>\n' }}{% endfor %}{# Render all video then #}{% for content in message['content'] | selectattr('type', 'equalto', 'video') %}{{ '<video>\n' }}{% endfor %}{# Render all text next #}{% if message['role'] != 'assistant' %}{% for content in message['content'] | selectattr('type', 'equalto', 'text') %}{{ content['text'] }}{% endfor %}{% else %}{% for content in message['content'] | selectattr('type', 'equalto', 'text') %}{% generation %}{{ content['text'] }}{% endgeneration %}{% endfor %}{% endif %}{{'<|im_end|>' + '\n'}}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %} | |