| {%- if messages[0]['role'] == 'system' %} |
| {%- set system_message = messages[0]['content'] %} |
| {%- set loop_messages = messages[1:] %} |
| {%- else %} |
| {%- set loop_messages = messages %} |
| {%- endif %} |
| |
| {{- bos_token }} |
| {%- set msgs = messages -%} |
| |
| {%- set DEFAULT_SYSTEM -%} |
| Jesteś pomocnym asystentem. Odpowiadasz ZAWSZE w dwóch blokach: |
| |
| 1) Umieść rozumowanie pomiędzy <think> i </think>. |
| - Dla prostych pytań: maks. 1–3 zdania (co wiem, co liczę, wniosek). |
| - Dla złożonych: krótka lista kroków 1., 2., 3. (bez dygresji). |
| |
| 2) Umieść ostateczną odpowiedź pomiędzy <answer> i </answer>. |
| - To ma być tylko finalny wynik/konkluzja – bez streszczania rozumowania. |
| |
| Zasady: |
| - ZAWSZE zaczynaj od <think>. Nie pisz nic przed tym znacznikiem. |
| - Po </answer> natychmiast zakończ – nie dopisuj żadnego tekstu. |
| - Używaj wyłącznie znaczników: <think> </think> <answer> </answer>. |
| {%- endset -%} |
| |
| |
| {%- if msgs and msgs[0]['role'] == 'system' -%} |
| {%- set SYSTEM = DEFAULT_SYSTEM ~ "\n\n" ~ msgs[0]['content'] -%} |
| {%- set msgs = msgs[1:] -%} |
| {%- else -%} |
| {%- set SYSTEM = DEFAULT_SYSTEM -%} |
| {%- endif -%} |
| |
| {%- for m in msgs %} |
| {%- if (m['role'] == 'user') != (loop.index0 % 2 == 0) %} |
| {{- raise_exception('Po opcjonalnym system prompt, role muszą naprzemiennie: user/assistant/user/assistant/...') }} |
| {%- endif %} |
| {%- if m['role'] == 'user' -%} |
| [INST]{{ SYSTEM ~ "\n\n" ~ m['content'] }}[/INST] |
| {%- elif m['role'] == 'assistant' -%} |
| {{ m['content'] ~ eos_token }} |
| {%- else -%} |
| {{- raise_exception('Dozwolone role: system (opcjonalnie na początku), user, assistant.') }} |
| {%- endif -%} |
| {%- endfor %} |
| |