File size: 2,375 Bytes
2765b5c | 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | {{ bos_token }}{%- macro strip_thinking(text) -%}
{%- set ns = namespace(result='') -%}
{%- for part in text.split('<channel|>') -%}
{%- if '<|channel>' in part -%}
{%- set ns.result = ns.result + part.split('<|channel>')[0] -%}
{%- else -%}
{%- set ns.result = ns.result + part -%}
{%- endif -%}
{%- endfor -%}
{{- ns.result | trim -}}
{%- endmacro -%}
{%- set thinking = enable_thinking is defined and enable_thinking -%}
{%- set loop_messages = messages -%}
{%- if messages[0]['role'] in ['system', 'developer'] or thinking -%}
{{ '<|turn>system
' }}
{%- if thinking -%}
{{ '<|think|>
' }}
{%- endif -%}
{%- if messages[0]['role'] in ['system', 'developer'] -%}
{{ messages[0]['content'] | trim }}
{%- set loop_messages = messages[1:] -%}
{%- endif -%}
{{ '<turn|>
' }}
{%- endif -%}
{%- for message in loop_messages -%}
{%- if (message['role'] == 'user') != (loop.index0 % 2 == 0) -%}
{{ raise_exception("Conversation roles must alternate user/assistant/user/assistant/...") }}
{%- endif -%}
{%- if (message['role'] == 'assistant') -%}
{%- set role = "model" -%}
{%- else -%}
{%- set role = message['role'] -%}
{%- endif -%}
{{ '<|turn>' + role + '
' }}
{%- if message['content'] is string -%}
{%- if role == "model" -%}
{{ strip_thinking(message['content']) }}
{%- else -%}
{{ message['content'] | trim }}
{%- endif -%}
{%- elif message['content'] is iterable -%}
{%- for item in message['content'] -%}
{%- if item['type'] == 'audio' -%}
{{ '<|audio|>' }}
{%- elif item['type'] == 'image' -%}
{{ '<|image|>' }}
{%- elif item['type'] == 'video' -%}
{{ '<|video|>' }}
{%- elif item['type'] == 'text' -%}
{%- if role == "model" -%}
{{ strip_thinking(item['text']) }}
{%- else -%}
{{ item['text'] | trim }}
{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- else -%}
{{ raise_exception("Invalid content type") }}
{%- endif -%}
{{ '<turn|>
' }}
{%- endfor -%}
{%- if add_generation_prompt -%}
{{'<|turn>model
'}}
{%- endif -%}
|