File size: 1,337 Bytes
f9ea322
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{{ bos_token }}
{%- if messages and messages[0]['role'] == 'system' -%}
    {%- set first_user_prefix = messages[0]['content'] ~ '\n\n' -%}
    {%- set loop_messages = messages[1:] -%}
{%- else -%}
    {%- set first_user_prefix = '' -%}
    {%- set loop_messages = messages -%}
{%- endif -%}
{%- for message in loop_messages -%}
    {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}
    {{ '<start_of_turn>' ~ role ~ '\n' ~ (first_user_prefix if loop.first else '') }}
    {%- if message['content'] is string -%}
        {{ message['content'] | trim }}
    {%- elif message['content'] is iterable -%}
        {%- for item in message['content'] -%}
            {%- if item['type'] == 'image' -%}
                {{ '<start_of_image>' }}
            {%- elif item['type'] == 'text' -%}
                {{ item['text'] | trim }}
            {%- elif item['type'] == 'tool_call' -%}
                ```tool_code
                {{ item['code'] | trim }}
                ```
            {%- endif -%}
        {%- endfor -%}
    {%- else -%}
        {{ raise_exception('Invalid content type') }}
    {%- endif -%}
    {{ '<end_of_turn>\n' }}
{%- endfor -%}
{%- if add_generation_prompt and (loop_messages | length == 0 or loop_messages[-1]['role'] == 'user') -%}
    {{ '<start_of_turn>model\n' }}
{%- endif -%}