Токенизация ниже настоящая — тот же алгоритм (BPE, словарь cl100k_base),
которым реально пользуются модели вроде GPT-4. Внимание и вероятности —
иллюстрация на основе задокументированного поведения таких моделей, а не
дамп весов из одного запуска: настоящую модель для этого пришлось бы
гонять в браузере, а несколько сотен мегабайт ради иллюстрации того не стоят.
Каждый шаг ниже честно подписан, что в нём реальное, а что — иллюстрация.
Токенизация
Настоящая
Модель не видит текст — только числа. Введите что угодно, включая
русский текст: словарь заточен в основном под английский, и кириллица
обычно распадается на заметно больше токенов на то же количество слов.
Токенов: —
Эмбеддинги
Иллюстрация
Каждый токен превращается в вектор из ~1500-12000 чисел (зависит от
модели) — координаты токена в «пространстве смыслов». Показать все числа
бессмысленно, вот иллюстрация первых нескольких для токена «cat»:
0.021-0.1140.302-0.0080.1760.093…
К вектору также добавляется позиция токена в тексте — иначе «cat sat»
и «sat cat» превратились бы в один и тот же набор векторов.
Внимание
Иллюстрация
Механизм внимания решает, на какие другие токены «смотреть» при
обработке текущего — токен видит только себя и то, что было раньше,
никогда то, что будет позже. Нажмите на строку, чтобы увидеть, куда
смотрит этот токен.
Предсказание следующего токена
Иллюстрация
Промпт: «The cat sat on the mat because it was ___».
Модель не выбирает один ответ — она считает вероятность для
каждого токена в словаре. Вот правдоподобное распределение
для top-15 кандидатов:
Сэмплирование
Настоящая математика
Распределение из шага 4, но алгоритмы ниже — настоящие: то же самое
считает любой сервер, отвечающий за генерацию текста в реальной модели.
Temperature: 1.0
k: 5
p: 0.90
Цикл генерации
Иллюстрация
Выбранный на шаге 5 токен дописывается к тексту — и весь процесс
(шаги 1-5) повторяется заново для следующей позиции, уже с новым
токеном в конце. Так, токен за токеном, модель порождает весь ответ.
The cat sat on the mat because it wastired→ следующий шаг предсказывает после «tired»:.→ модель также «знает», когда предложение стоит закончить.
Токены и лимиты
Настоящие счётчики
В чате с любой моделью ваше сообщение и её ответ считаются в тех же
токенах, что и на шаге 1 — «входящие» (то, что вы отправили) и
«исходящие» (то, что модель сгенерировала). Именно токены, а не
количество сообщений, лежат в основе лимитов: у бесплатных и платных
тарифов (например, у Claude) есть свой бюджет токенов на
скользящее окно времени — исчерпали лимит, ждёте, пока окно обновится.
Конкретные цифры у каждого провайдера свои и меняются, но механизм
всегда этот.
Важный нюанс: при каждом новом сообщении модели заново отправляется
вся история диалога целиком, а не только последняя фраза — вот
как растёт счётчик на реальном коротком диалоге (числа посчитаны тем же
токенизатором, что и на шаге 1):
Память между сообщениями
Как это устроено
У модели нет памяти между вызовами API. Каждый вызов — с чистого листа:
ощущение «мы продолжаем разговор» создаётся только тем, что на шаге 7
показано выше — всю историю пересылают заново при каждом сообщении.
Строго говоря, модель не «помнит» прошлое — она заново читает его
целиком при каждом ответе.
Из этого следуют реальные ограничения — стоит различать три разных
причины:
Обрезка или сжатие истории.
У окна контекста есть предел. Когда переписка вырастает настолько,
что перестаёт помещаться, приложение либо тихо отбрасывает старые
сообщения, либо заменяет их сжатым пересказом — да, именно это
происходит и в разговоре с этим самым ассистентом, если беседа
становится очень длинной. Во втором случае у модели остаётся не
«ноль», а урезанная, лоссовая версия начала разговора.
«Потеряно в середине».
Даже когда вся история технически помещается в окно контекста,
задокументировано, что модели хуже используют детали из
середины длинного текста, чем из начала или конца —
отдельный эффект, не связанный с обрезкой напрямую.
Ограничение продукта.
Некоторые приложения сознательно шлют не всю историю, а только
последние N сообщений или их пересказ — экономия токенов, но та же
потеря деталей с точки зрения модели.
Итог для вас как для собеседника: ощущение одного непрерывного
разговора — а с точки зрения модели в какой-то момент могло начаться
«с середины», без части или всех более ранних деталей. Отсюда —
забытые договорённости, повтор уже отвеченных вопросов, потеря тона
или темы. Это не «модель поглупела» — это отсутствие того, что ей
физически не передали в этом конкретном вызове.
Нужно больше, чем инструмент?
Если это помогло — можем поговорить про остальное
Карьера в IT, разбор проекта, поиск процесса под вашу задачу — 30 минут,
бесплатно и без обязательств.