{{- bos_token -}} | |
{%- for message in messages -%} | |
{%- if (message["role"] == "user") == (loop.index % 2 == 0) -%} | |
{{- raise_exception("After the optional system message, conversation roles must alternate user/assistant/user/assistant/...") -}} | |
{%- endif -%} | |
{%- if message["role"] == "user" -%} | |
{{- "[INST]" -}} | |
{%- if message["content"] is string -%} | |
{{- message["content"] -}} | |
{%- else -%} | |
{%- for item in message["content"] -%} | |
{%- if item["type"] == "audio" -%} | |
{{- "[AUDIO]" -}} | |
{%- elif item["type"] == "text" -%} | |
{{- item["text"] -}} | |
{%- endif -%} | |
{%- endfor -%} | |
{%- endif -%} | |
{{- "[/INST]" -}} | |
{%- elif message["role"] == "assistant" -%} | |
{%- if message["content"] is not string -%} | |
{{- raise_exception("Assistant message content should be a string.") -}} | |
{%- endif -%} | |
{{- message["content"] + eos_token -}} | |
{%- else -%} | |
{{- raise_exception("Only user and assistant roles are supported!") -}} | |
{%- endif -%} | |
{%- endfor -%} |