| {% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% else %}{% set loop_messages = messages %}{% set system_message = false %}{% endif %} | |
| {% for message in loop_messages %} | |
| {% if message['role'] not in ['user', 'assistant', 'tool_calls'] %} | |
| {{ raise_exception('Invalid role: ' + message['role'] + '. Must be user, assistant, or tool_calls.') }} | |
| {% endif %} | |
| {% if loop.index0 == 0 and system_message != false %} | |
| {% set content = '<<SYS>> | |
| ' + system_message + ' | |
| <</SYS>> | |
| ' + message['content'] %} | |
| {% else %} | |
| {% set content = message['content'] %} | |
| {% endif %} | |
| {% if message['role'] == 'user' %} | |
| {{ bos_token + '[INST] ' + content.strip() + ' [/INST]' }} | |
| {% elif message['role'] == 'assistant' %} | |
| {{ ' ' + content.strip() + ' ' + eos_token }} | |
| {% elif message['role'] == 'tool_calls' %} | |
| {{ ' [TOOL_CALLS] ' + content.strip() + ' [/TOOL_CALLS] ' }} | |
| {% endif %} | |
| {% endfor %} |