{%- if messages is string -%} {{- messages -}} {%- else -%} {%- for message in messages -%} {%- if loop.first and messages[0]['role'] != 'system' -%} {{- '<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n' -}} {%- endif -%} {{- '<|im_start|>' + message['role'] + '\n' -}} {%- if message['content'] is string -%} {{- message['content'] -}} {%- elif message['content'] is iterable -%} {%- for item in message['content'] -%} {%- if item['type'] == 'image' -%} {{- '\n' -}} {%- elif item['type'] == 'text' -%} {{- item['text'] -}} {%- endif -%} {%- endfor -%} {%- else -%} {{- raise_exception("Invalid content type") -}} {%- endif -%} {{- '<|im_end|>' + '\n' -}} {%- endfor -%} {%- if add_generation_prompt -%} {{- '<|im_start|>assistant\n' -}} {%- endif -%} {%- endif -%}