{%- set ns = namespace(instruction='', has_system=false) -%} {%- for message in messages -%} {%- if message.role == 'system' -%} {%- set ns.has_system = true -%} {%- if message.content is string -%} {%- set ns.instruction = message.content -%} {%- else -%} {%- for item in message.content -%} {%- if item.type == 'text' -%} {%- set ns.instruction = item.text -%} {%- endif -%} {%- endfor -%} {%- endif -%} {%- endif -%} {%- endfor -%} {%- for message in messages -%} {%- if message.role != 'system' -%} {%- set cn = namespace(text='', has_image=false) -%} {%- if message.content is string -%} {%- set cn.text = message.content -%} {%- else -%} {%- for item in message.content -%} {%- if item.type == 'image' -%} {%- set cn.has_image = true -%} {%- elif item.type == 'text' -%} {%- set cn.text = item.text -%} {%- endif -%} {%- endfor -%} {%- endif -%} {%- if ns.has_system or message.role == 'query' %}[INST] {{ '\n' }} {{ ns.instruction }} {% else %}[INST] {% endif -%} {%- if cn.text %} {{ cn.text }} {{ '\n' }}{% endif -%} {%- if cn.has_image %} {% endif %} [/INST] {%- endif -%} {%- endfor -%}