{{ bos_token }}{% if messages[0]['role'] == 'system' %}{% if messages | length < 2 or messages[1]['role'] != 'user' %}{{ raise_exception('a system message must be followed by a user message') }}{% endif %}{% set loop_messages = messages[1:] %}{% else %}{% set loop_messages = messages %}{% endif %}{% for message in loop_messages %}{% if message['content'] is not string %}{{ raise_exception('only plain string contents are supported') }}{% endif %}{% if message['role'] == 'user' %}{{ '<|user_start|>' }}{% if loop.first and messages[0]['role'] == 'system' %}{{ messages[0]['content'] + '\n\n' }}{% endif %}{{ message['content'] }}{{ '<|user_end|>' }}{% elif message['role'] == 'assistant' %}{{ '<|assistant_start|>' }}{{ message['content'] }}{{ '<|assistant_end|>' }}{% else %}{{ raise_exception('only system (first), user, and assistant roles are supported') }}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ '<|assistant_start|>' }}{% endif %}