|
After the final message, print the EOS token. |
|
This is a pretty simple template - it doesn't add any control tokens, and it doesn't support "system" messages, which |
|
are a common way to give the model directives about how it should behave in the subsequent conversation. |
|
But Jinja gives you a lot of flexibility to do those things! Let's see a Jinja template that can format inputs |
|
similarly to the way LLaMA formats them (note that the real LLaMA template includes handling for default system |
|
messages and slightly different system message handling in general - don't use this one in your actual code!) |
|
{% for message in messages %} |
|
{% if message['role'] == 'user' %} |
|
{{ bos_token + '[INST] ' + message['content'] + ' [/INST]' }} |
|
{% elif message['role'] == 'system' %} |
|
{{ '<<SYS>>\\n' + message['content'] + '\\n<</SYS>>\\n\\n' }} |
|
{% elif message['role'] == 'assistant' %} |
|
{{ ' ' + message['content'] + ' ' + eos_token }} |
|
{% endif %} |
|
{% endfor %} |
|
Hopefully if you stare at this for a little bit you can see what this template is doing - it adds specific tokens based |
|
on the "role" of each message, which represents who sent it. |