{{- bos_token }} {%- set system_message = '' %} {%- if messages[0]['role'] == 'system' %} {%- set system_message = messages[0]['content'] %} {%- set messages = messages[1:] %} {%- endif %} {%- for message in messages %} {%- if (message['role'] != 'user') and (message['role'] != 'assistant') %} {{- raise_exception('Only user and assistant roles are supported after the initial optional system message.') }} {%- endif %} {%- if (message['role'] == 'user') != (loop.index0 % 2 == 0) %} {{- raise_exception('After the optional system message, conversation roles must alternate user/assistant/user/assistant/...') }} {%- endif %} {%- set content = message['content'] %} {%- if loop.index0 == 0 and system_message %} {%- set content = system_message + '\n\n' + message['content'] %} {%- endif %} {{- '<|im_start|>' + message['role'] + '\n' + content + '<|im_end|>' + '\n' }} {%- endfor %} {%- if add_generation_prompt %} {{- '<|im_start|>assistant\n' }} {%- endif %}