What failure mode occurs when a developer duplicates the BOS token by prepending it manually while also using apply_chat_template?
Same topic, related formats. Practice these next.
Same topic, related formats. Practice these next.
A developer uses HuggingFace's tokenizer.apply_chat_template(messages, add_special_tokens=True) and then manually prepends tokenizer.bos_token_id to the resulting token IDs. Describe the failure mode this introduces, why it occurs, and how it affects model output quality.
A second BOS shifts every token by one and is a sequence the model never trained on, corrupting role boundaries so the system prompt can be ignored or misparsed.
Imagine a song that always starts with one drumbeat, then the singer comes in. The band rehearsed it that way thousands of times: one beat, then sing. Now someone sneaks in a second drumbeat at the very start. The singer, trained to start right after the single beat, gets thrown off, comes in at the wrong moment, and the whole intro feels off. The BOS token is that opening drumbeat for a chat model. The template already plays exactly one. Prepend another by hand and the model hears two beats it never practiced, so it misjudges where the first speaker, the system instructions, actually begins, and may drift or ignore them.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example.
Everything important, quickly.
3 min: template already adds BOS + double BOS is out of distribution + position shift + attention anchoring + system-prompt/role-bleed symptoms + add_generation_prompt fix.
from transformers import AutoTokenizer
tok = AutoTokenizer.from_pretrained("meta-llama/Llama-4-Maverick")
messages = [{"role": "system", "content": "Be terse."},
{"role": "user", "content": "Hi"}]
# WRONG: template adds BOS, then we add a second one.
ids = tok.apply_chat_template(messages, add_special_tokens=True)
ids = [tok.bos_token_id] + ids # double BOS, out of distribution
# RIGHT: let the template own all special tokens.
ids = tok.apply_chat_template(messages, add_generation_prompt=True)
assert ids.count(tok.bos_token_id) == 1 # guard against duplicationReal products, models, and research that use this idea.
What an interviewer would ask next. Try answering before peeking at the approach.
Red flags and common mistakes that signal junior thinking. Click to expand.
Prepending BOS manually after apply_chat_template already added it, creating a double-BOS sequence the model never saw in training.
The night-before-the-interview bullets. Scan these on the way to the call.
Primary sources. Skim if you want the original framing.