{{- bos_token -}} {%- set has_system = messages and messages[0]['role'] == 'system' -%} {%- if has_system -%} {{- '<|start_header_id|>system<|end_header_id|>\n\n' + (messages[0]['content']|default('')) + '<|eot_id|>' -}} {%- set loop_messages = messages[1:] -%} {%- else -%} {%- set loop_messages = messages -%} {%- endif -%} {%- for m in loop_messages -%} {%- set role = m['role']|default('') -%} {%- set content = m['content']|default('', true) -%} {%- if content is string -%} {%- set text = content -%} {%- else -%} {%- set text = (content | map(attribute='text') | join('')) -%} {%- endif -%} {%- if text|trim|length > 0 -%} {%- if role == 'user' -%} {{- '<|start_header_id|>user<|end_header_id|>\n\n' + text + '<|eot_id|>' -}} {%- elif role == 'assistant' -%} {{- '<|start_header_id|>assistant<|end_header_id|>\n\n' + text + '<|eot_id|>' -}} {%- elif role == 'system' -%} {{- '<|start_header_id|>system<|end_header_id|>\n\n' + text + '<|eot_id|>' -}} {%- endif -%} {%- endif -%} {%- endfor -%} {%- if add_generation_prompt and (loop_messages|length == 0 or (loop_messages|last)['role'] != 'assistant') -%} {{- '<|start_header_id|>assistant<|end_header_id|>\n\n' -}} {%- else -%} {{- eos_token -}} {%- endif -%}