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