Skip to content

Commit c0972ab

Browse files
committed
Recognize tokenizers for known model prefixes
1 parent 38e2666 commit c0972ab

1 file changed

Lines changed: 8 additions & 5 deletions

File tree

scripts/translator.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
MDBOOK_DIRECTIVE_RE = re.compile(r"\{\{#[^{}]*\}\}")
2929
MDBOOK_TAB_OPEN_RE = re.compile(r"\{\{#tab\b([^{}]*)\}\}")
3030

31-
TOKENIZER_FALLBACKS = [
31+
MODEL_PREFIX_ENCODINGS = [
3232
("gpt-5", "o200k_base"),
3333
("gpt-4o", "o200k_base"),
3434
("gpt-4.1", "o200k_base"),
@@ -116,16 +116,19 @@ def _sanitize(text: str) -> str:
116116

117117
def _get_encoding_for_model(model: str):
118118
"""
119-
Return a tokenizer for the requested model, with fallbacks for newer
120-
model names that tiktoken may not recognize yet.
119+
Return a tokenizer for the requested model.
120+
121+
Tiktoken does not necessarily know custom or newly released model names,
122+
so resolve known model families by prefix before treating a model as
123+
unknown. For example, ``gpt-5.6-luna`` uses the GPT-5 tokenizer even if
124+
that exact name is absent from tiktoken's model registry.
121125
"""
122126
try:
123127
return tiktoken.encoding_for_model(model)
124128
except KeyError:
125129
lowered_model = model.lower()
126-
for prefix, encoding_name in TOKENIZER_FALLBACKS:
130+
for prefix, encoding_name in MODEL_PREFIX_ENCODINGS:
127131
if lowered_model.startswith(prefix):
128-
print(f"Tokenizer for model {model} not found. Falling back to {encoding_name}.")
129132
return tiktoken.get_encoding(encoding_name)
130133
print(f"Tokenizer for model {model} not found. Falling back to {FINAL_TOKENIZER_FALLBACK}.")
131134
return tiktoken.get_encoding(FINAL_TOKENIZER_FALLBACK)

0 commit comments

Comments
 (0)