File size: 2,261 Bytes
cfca391
 
 
1
2
3
4
{
  "chat_template": "{{ bos_token }}\n{%- if messages[0]['role'] == 'system' -%}\n    {%- if messages[0]['content'] is string -%}\n        {%- set first_user_prefix = messages[0]['content'] + '\\n\\n' -%}\n    {%- else -%}\n        {%- set first_user_prefix = messages[0]['content'][0]['text'] + '\\n\\n' -%}\n    {%- endif -%}\n    {%- set loop_messages = messages[1:] -%}\n{%- else -%}\n    {%- set first_user_prefix = \"\" -%}\n    {%- set loop_messages = messages -%}\n{%- endif -%}\n\n{%- for message in loop_messages -%}\n    {%- if message['role'] in ['user', 'assistant'] -%}\n        {%- if (message['role'] == 'user') != (loop.index0 % 2 == 0) -%}\n            {{ raise_exception(\"Conversation roles must alternate user/assistant/user/assistant/...\") }}\n        {%- endif -%}\n    {%- endif -%}\n    {%- if message['role'] == 'assistant' -%}\n        {%- set role = \"model\" -%}\n    {%- else -%}\n        {%- set role = message['role'] -%}\n    {%- endif -%}\n\n    {%- if role == 'tool' -%}\n        {{ '<tool_response>' }}\n    {%- else -%}\n        {{ '<start_of_turn>' + role + '\\n' + (first_user_prefix if loop.first else \"\") }}\n    {%- endif -%}\n\n    {%- if message['content'] is string -%}\n        {{ message['content'] | trim }}\n    {%- elif message['content'] is iterable -%}\n        {%- for item in message['content'] -%}\n            {%- if item['type'] == 'image' -%}\n                {{ '<start_of_image>' }}\n            {%- elif item['type'] == 'text' -%}\n                {{ item['text'] | trim }}\n            {%- elif item['type'] == 'tool' -%}\n                {%- if 'json' in item -%}\n                    {{ '<tool>' + (item['json'] | trim) + '</tool>' }}\n                {%- else -%}\n                    {{ raise_exception(\"Tool item missing 'json' field for structured tool call\") }}\n                {%- endif -%}\n            {%- endif -%}\n        {%- endfor -%}\n    {%- else -%}\n        {{ raise_exception(\"Invalid content type\") }}\n    {%- endif -%}\n\n    {%- if role == 'tool' -%}\n        {{ '</tool_response>\\n' }}\n    {%- else -%}\n        {{ '<end_of_turn>\\n' }}\n    {%- endif -%}\n{%- endfor -%}\n{%- if add_generation_prompt -%}\n    {{ '<start_of_turn>model\\n' }}\n{%- endif -%}\n"
}