diff --git a/chat_template.jinja b/chat_template.jinja index a8755d8..a8e3f67 100644 --- a/chat_template.jinja +++ b/chat_template.jinja @@ -78,11 +78,24 @@ {%- if ns.multi_step_tool %} {{- raise_exception('No user query found in messages.') }} {%- endif %} +{%- set last_query_index = ns.last_query_index %} +{%- set ns = namespace(system_rendered=false, last_query_index=last_query_index) %} +{%- for message in messages %} + {%- if message.role == 'system' %} + {%- set content = render_content(message.content, false, true)|trim %} + {%- if content %} + {{- '<|im_start|>system\n' + content + '<|im_end|>\n' }} + {%- endif %} + {%- set ns.system_rendered = true %} + {%- endif %} +{%- endfor %} {%- for message in messages %} {%- set content = render_content(message.content, true)|trim %} {%- if message.role == "system" %} - {%- if not loop.first %} - {{- raise_exception('System message must be at the beginning.') }} + {%- if ns.system_rendered %} + {%- else %} + {{- '<|im_start|>system\n' + content + '<|im_end|>\n' }} + {%- set ns.system_rendered = true %} {%- endif %} {%- elif message.role == "user" %} {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}