{%- set today = strftime_now("%Y-%m-%d") %} {%- set default_think_system_message = "You are a helpful assistant. Think deeply before answering the user's question. Do the thinking inside ... tags." %} {%- set default_nothink_system_message = "You are a helpful assistant." %} {%- set think_system_message_addition = "Think deeply before answering the user's question. Do the thinking inside ... tags." %} {{- bos_token }} {%- if messages[0].role == 'system' %} {%- if enable_thinking is defined and enable_thinking is false %} {%- set system_message = messages[0].content %} {%- else %} {%- set system_message = think_system_message_addition +'\n\n'+ messages[0].content %} {%- endif %} {%- set loop_messages = messages[1:] %} {%- else %} {%- if enable_thinking is defined and enable_thinking is false %} {%- set system_message = default_nothink_system_message %} {%- else %} {%- set system_message = default_think_system_message %} {%- endif %} {%- set loop_messages = messages %} {%- endif %} {{- '[SYSTEM_PROMPT]' + system_message + '[/SYSTEM_PROMPT]' }} {%- for message in loop_messages %} {%- if message.role == 'user' %} {%- if loop.index0 % 2 == 1 %} {{- raise_exception('User and assistant turns must alternate starting with user turn!') }} {%- endif %} {%- if loop.last and not (enable_thinking is defined and enable_thinking is false) %} {{- '[INST]' + message.content + '[/INST]\n' }} {%- else %} {{- '[INST]' + message.content + '[/INST]' }} {%- endif %} {%- elif message.role == 'system' %} {{- raise_exception('System message can only be the first message!') }} {%- elif message.role == 'assistant' %} {%- if loop.index0 % 2 == 0 %} {{- raise_exception('User and assistant turns must alternate starting with user turn!') }} {%- endif %} {%- set content = message.content %} {%- set reasoning_content = '' %} {%- if message.reasoning_content is defined and message.reasoning_content is not none %} {%- set reasoning_content = message.reasoning_content %} {%- else %} {%- if '' in message.content %} {%- set content = message.content.split('')[-1].lstrip('\n') %} {%- set reasoning_content = message.content.split('')[0].rstrip('\n').split('')[-1].lstrip('\n') %} {%- endif %} {%- endif %} {%- if loop.last and reasoning_content and not (enable_thinking is defined and enable_thinking is false) %} {{- '\n' + reasoning_content.strip('\n') + '\n\n\n' + content.lstrip('\n') + eos_token }} {%- else %} {{- content + eos_token }} {%- endif %} {%- else %} {{- raise_exception('Only user, system and assistant roles are supported!') }} {%- endif %} {%- endfor %}