{%- if messages[0]['role'] == 'system' %} | |
{%- set system_message = messages[0]['content'] %} | |
{%- set loop_messages = messages[1:] %} | |
{%- else %} | |
{%- set loop_messages = messages %} | |
{%- endif %} | |
{{- bos_token }} | |
{%- for message in loop_messages %} | |
{%- if (message['role'] == 'user') != (loop.index0 % 2 == 0) %} | |
{{- raise_exception('After the optional system message, conversation roles must alternate user/assistant/user/assistant/...') }} | |
{%- endif %} | |
{%- if message['role'] == 'user' %} | |
{%- if loop.first and system_message is defined %} | |
{{- ' [INST] ' + system_message + '\n\n' + message['content'] + ' [/INST]' }} | |
{%- else %} | |
{{- ' [INST] ' + message['content'] + ' [/INST]' }} | |
{%- endif %} | |
{%- elif message['role'] == 'assistant' %} | |
{{- ' ' + message['content'] + eos_token}} | |
{%- else %} | |
{{- raise_exception('Only user and assistant roles are supported, with the exception of an initial optional system message!') }} | |
{%- endif %} | |
{%- endfor %} | |