| {%- 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' -%} | |
| {{- '<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 -%} | |