llama
Attributes:
Name | Type | Description |
---|---|---|
LLAMA_2_HUGGING_FACE_CHAT_TEMPLATE |
The Hugging Face chat template for Llama 2. |
|
LLAMA_3_HUGGING_FACE_CHAT_TEMPLATE |
The Hugging Face chat template for Llama 3. |
LLAMA_2_HUGGING_FACE_CHAT_TEMPLATE
module-attribute
¶
LLAMA_2_HUGGING_FACE_CHAT_TEMPLATE = "{% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% elif USE_DEFAULT_PROMPT == true and not '<<SYS>>' in messages[0]['content'] %}{% set loop_messages = messages %}{% set system_message = 'DEFAULT_SYSTEM_MESSAGE' %}{% else %}{% set loop_messages = messages %}{% set system_message = false %}{% 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 loop.index0 == 0 and system_message != false %}{% set content = '<<SYS>>\\n' + system_message + '\\n<</SYS>>\\n\\n' + message['content'] %}{% else %}{% set content = message['content'] %}{% endif %}{% if message['role'] == 'user' %}{{ bos_token + '[INST] ' + content.strip() + ' [/INST]' }}{% elif message['role'] == 'system' %}{{ '<<SYS>>\\n' + content.strip() + '\\n<</SYS>>\\n\\n' }}{% elif message['role'] == 'assistant' %}{{ ' ' + content.strip() + ' ' + eos_token }}{% endif %}{% endfor %}"
The Hugging Face chat template for Llama 2. This was removed via https://github.com/huggingface/transformers/pull/31733
LLAMA_3_HUGGING_FACE_CHAT_TEMPLATE
module-attribute
¶
LLAMA_3_HUGGING_FACE_CHAT_TEMPLATE = "{% set loop_messages = messages %}{% for message in loop_messages %}{% set content = '<|start_header_id|>' + message['role'] + '<|end_header_id|>\n\n'+ message['content'] | trim + '<|eot_id|>' %}{% if loop.index0 == 0 %}{% set content = bos_token + content %}{% endif %}{{ content }}{% endfor %}{% if add_generation_prompt %}{{ '<|start_header_id|>assistant<|end_header_id|>\n\n' }}{% endif %}"
The Hugging Face chat template for Llama 3.
For some reason, the tokenizer_config.json
distributed by Meta for Llama 3 is configured with
"tokenizer_class": "PreTrainedTokenizerFast"
, which uses the default chat template. Since there is no Llama 3-specific tokenizer class,
you can supply this as the chat_template
argument to transformers.PreTrainedTokenizer.apply_chat_template
to apply the correct chat
template.