| {{- bos_token }} |
| |
| |
| {%- if messages[0]['role'] == 'system' %} |
| {%- if messages[0]['content'] is string %} |
| {%- set system_message = messages[0]['content']|trim %} |
| {%- elif messages[0]['content'] is iterable and messages[0]['content'][0]['type'] == 'text' %} |
| {%- set system_message = messages[0]['content'][0]['text']|trim %} |
| {%- else %} |
| {{- raise_exception("System message content must be a string or contain text type!") }} |
| {%- endif %} |
| {%- set messages = messages[1:] %} |
| {%- else %} |
| {{- raise_exception("A system message is required but not provided!") }} |
| {%- endif %} |
| |
| |
| {{- "<|start_header_id|>system<|end_header_id|>\n\n" }} |
| {{- system_message }} |
| |
| |
| {%- if messages and messages[0]['role'] == 'scene' %} |
| {{- "\n\n<|scene_desc_start|>\n" }} |
| {%- if messages[0]['content'] is string %} |
| {{- messages[0]['content'] | trim }} |
| {%- elif messages[0]['content'] is iterable %} |
| {%- for content_item in messages[0]['content'] %} |
| {%- if content_item['type'] == 'text' %} |
| {%- set text_content = content_item['text'] | trim %} |
| {{- text_content }} |
| {%- if loop.first and not loop.last %} |
| {{- "\n\n" }} |
| {%- endif %} |
| {%- if not loop.first and not loop.last and messages[0]['content'][loop.index]['type'] != 'audio' %} |
| {{- "\n" }} |
| {%- endif %} |
| {%- elif content_item['type'] == 'audio' %} |
| {{- ' <|audio_out_bos|><|AUDIO_OUT|><|audio_eos|>' }} |
| {%- if not loop.last %} |
| {{- "\n" }} |
| {%- endif %} |
| {%- endif %} |
| {%- endfor %} |
| {%- endif %} |
| {{- "\n<|scene_desc_end|>" }} |
| {%- set messages = messages[1:] %} |
| {%- endif %} |
| |
| {{- "<|eot_id|>" }} |
| |
| |
| {%- for message in messages %} |
| {{- '<|start_header_id|>' + message['role'] + '<|end_header_id|>\n\n' }} |
| {%- if message['role'] == 'assistant' %} |
| {%- if message['content'] is not iterable or message['content'][0]['type'] != 'audio' %} |
| {{- raise_exception("Assistant messages must contain audio content only!") }} |
| {%- endif %} |
| {{- '<|audio_out_bos|><|AUDIO_OUT|><|audio_eos|>' }} |
| {%- else %} |
| {%- if message['content'] is string %} |
| {{- message['content'] | trim }} |
| {%- elif message['content'] is iterable %} |
| {%- for content_item in message['content'] %} |
| {%- if content_item['type'] == 'text' %} |
| {{- content_item['text'] | trim }} |
| {%- endif %} |
| {%- endfor %} |
| {%- endif %} |
| {%- endif %} |
| {{- '<|eot_id|>' }} |
| {%- endfor %} |
| |
| {%- if add_generation_prompt %} |
| {{- '<|start_header_id|>assistant<|end_header_id|>\n\n<|audio_out_bos|>' }} |
| {%- endif %} |