| {%- set default_system_message = "You are Mistral Small 3, a Large Language Model (LLM) created by Mistral AI" %} | |
| {{- bos_token }} | |
| {%- if messages[0]['role'] == 'system' %} | |
| {%- if messages[0]['content'] is string %} | |
| {%- set system_message = messages[0]['content'] %} | |
| {%- else %} | |
| {%- set system_message = messages[0]['content'][0]['text'] %} | |
| {%- endif %} | |
| {%- set loop_messages = messages[1:] %} | |
| {%- else %} | |
| {%- set system_message = default_system_message %} | |
| {%- set loop_messages = messages %} | |
| {%- endif %} | |
| {{- '[SYSTEM_PROMPT]' + system_message + '[/SYSTEM_PROMPT]' }} | |
| {%- for message in loop_messages %} | |
| {%- if message['role'] == 'user' %} | |
| {%- if message['content'] is string %} | |
| {{- '[INST]' + message['content'] + '[/INST]' }} | |
| {%- else %} | |
| {{- '[INST]' }} | |
| {%- for block in message['content'] %} | |
| {%- if block['type'] == 'text' %} | |
| {{- block['text'] }} | |
| {%- elif block['type'] in ['image', 'image_url'] %} | |
| {{- '[IMG]' }} | |
| {%- else %} | |
| {{- raise_exception('Only text and image blocks are supported in message content!') }} | |
| {%- endif %} | |
| {%- endfor %} | |
| {{- '[/INST]' }} | |
| {%- endif %} | |
| {%- elif message['role'] == 'system' %} | |
| {%- if message['content'] is string %} | |
| {{- '[SYSTEM_PROMPT]' + message['content'] + '[/SYSTEM_PROMPT]' }} | |
| {%- else %} | |
| {{- '[SYSTEM_PROMPT]' + message['content'][0]['text'] + '[/SYSTEM_PROMPT]' }} | |
| {%- endif %} | |
| {%- elif message['role'] == 'assistant' %} | |
| {%- if message['content'] is string %} | |
| {{- message['content'] + eos_token }} | |
| {%- else %} | |
| {{- message['content'][0]['text'] + eos_token }} | |
| {%- endif %} | |
| {%- else %} | |
| {{- raise_exception('Only user, system and assistant roles are supported!') }} | |
| {%- endif %} | |
| {%- endfor %} |