| {%- for message in messages %} | |
| {%- if (loop.index % 2 == 1 and message['role'].lower() != 'user') or (loop.index % 2 == 0 and message['role'].lower() != 'assistant') %} | |
| {{ raise_exception('Conversation roles must alternate between user and assistant ...') }} | |
| {%- endif %} | |
| {%- if not loop.first or always_start_with_space %} | |
| {{- ' ' }} | |
| {%- endif %} | |
| {{- message['role'].capitalize() + ': ' }} | |
| {%- for content in message['content'] %} | |
| {%- if content['type'] == 'text' %} | |
| {{- content['text'] + ' ' }} | |
| {%- elif content['type'] == 'image' %} | |
| {{- image_prompt_token }} | |
| {%- else %} | |
| {{ raise_exception('Unsupported content type: ' + content['type']) }} | |
| {%- endif %} | |
| {%- endfor %} | |
| {%- endfor %} | |
| {%- if add_generation_prompt %} | |
| {{- 'Assistant:' }} | |
| {%- endif %} | |