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