{{ bos_token }} {%- set loop_messages = messages -%} {%- for message in loop_messages -%} {%- if message['role'] == 'system' -%} {%- set role = 'user' -%} {%- elif message['role'] == 'assistant' -%} {%- set role = 'model' -%} {%- else -%} {%- set role = message['role'] -%} {%- endif -%} {%- if (role == 'user') != (loop.index0 % 2 == 0) -%} {{ raise_exception("Conversation roles must alternate user/assistant/user/assistant/...") }} {%- endif -%} {{ '' + role + '\n' }} {%- if message['content'] is string -%} {{ message['content'] | trim }} {%- elif message['content'] is iterable -%} {%- for item in message['content'] -%} {%- if item['type'] == 'image' -%} {{ '' }} {%- elif item['type'] == 'text' -%} {{ item['text'] | trim }} {%- endif -%} {%- endfor -%} {%- else -%} {{ raise_exception("Invalid content type") }} {%- endif -%} {{ '\n' }} {%- endfor -%} {%- if add_generation_prompt -%} {{'model\n'}} {%- endif -%}