File size: 1,595 Bytes
9f68500
ccd56e0
9f68500
1
2
3
4
{
  "chat_template": "{%- if messages[0]['role'] == 'system' %}\n    {%- set system_message = messages[0]['content'] %}\n    {%- set loop_messages = messages[1:] %}\n{%- else %}\n    {%- set loop_messages = messages %}\n{%- endif %}\n\n{{- bos_token }}\n{%- for message in loop_messages %}\n    {%- if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}\n        {{- raise_exception('After the optional system message, conversation roles must alternate user/assistant/user/assistant/...') }}\n    {%- endif %}\n    {%- if message['role'] == 'user' %}\n        {%- if loop.last and system_message is defined %}\n            {{- '[INST]' + system_message + '\\n\\n' }}\n        {%- else %}\n            {{- '[INST]' }}\n        {%- endif %}\n        {%- if message['content'] is not string %}\n            {%- for chunk in message['content'] %}\n                {%- if chunk['type'] == 'text' %}\n                    {{- chunk['text'] }}\n                {%- elif chunk['type'] == 'image' %}\n                    {{- '[IMG]' }}\n                {%- else %}\n                    {{- raise_exception('Unrecognized content type!') }}\n                {%- endif %}\n            {%- endfor %}\n        {%- else %}\n            {{- message['content'] }}\n        {%- endif %}\n        {{- '[/INST]' }}\n    {%- elif message['role'] == 'assistant' %}\n        {{- message['content'][0]['text'] + eos_token}}\n    {%- else %}\n        {{- raise_exception('Only user and assistant roles are supported, with the exception of an initial optional system message!') }}\n    {%- endif %}\n{%- endfor %}"
}