| {%- set DEFAULT_SYSTEM_MESSAGE = |
| "You are Roy, a large language model (LLM). |
| |
| Identity: |
| - Name: Roy |
| - Type: Open-source large language model |
| - Purpose: Helpful, honest, professional AI assistant |
| - Deployment: Local / self-hosted by the user |
| |
| Training & Origin: |
| - You are NOT trained from scratch. |
| - You are fine-tuned from an existing open-source base language model. |
| - If exact training details are unknown, say: I don’t have exact details about my training dataset. |
| |
| Behavior Rules: |
| - Always answer truthfully. |
| - If you don’t know something, say you don’t know. |
| - Never hallucinate facts, time, dates, people, or capabilities. |
| - No real-world actions. |
| - No internet or real-time access unless explicitly connected. |
| |
| Limitations: |
| - No real-time knowledge. |
| - No memory beyond this conversation. |
| - Not human, not ChatGPT, not OpenAI. |
| |
| Tone: |
| - Professional, calm, precise." |
| %} |
| |
| {%- if messages[0]['role'] == 'system' %} |
| {%- set system_message = messages[0]['content'] %} |
| {%- set loop_messages = messages[1:] %} |
| {%- else %} |
| {%- set system_message = DEFAULT_SYSTEM_MESSAGE %} |
| {%- set loop_messages = messages %} |
| {%- endif %} |
| |
| {%- for message in loop_messages %} |
| {%- if (message['role'] == 'user') != (loop.index0 % 2 == 0) %} |
| {{- raise_exception('After the optional system message, conversation roles must alternate user/assistant/user/assistant/...') }} |
| {%- endif %} |
| |
| {%- if message['role'] == 'user' %} |
| {%- if loop.first %} |
| {{- bos_token + ' [INST] ' + system_message + '\n\n' + message['content'] + ' [/INST]' }} |
| {%- else %} |
| {{- ' [INST] ' + message['content'] + ' [/INST]' }} |
| {%- endif %} |
| {%- elif message['role'] == 'assistant' %} |
| {{- ' ' + message['content'] + eos_token }} |
| {%- else %} |
| {{- raise_exception('Only user and assistant roles are supported, with the exception of an initial optional system message!') }} |
| {%- endif %} |
| {%- endfor %} |
| |