Предсказание следующего токена
Всё поведение модели — от написания ТЗ до поиска бага — сводится к одной операции: взять текст и оценить, что идёт дальше. Этот урок объясняет механизм без формул и показывает, какие рабочие следствия из него вытекают. Когда вы поймёте, что модель именно продолжает текст, а не «думает над задачей», многие её странности перестанут удивлять.
Токен — единица, которой мыслит модель
Модель работает не с буквами и не со словами, а с токенами. Токен — это фрагмент текста из словаря, который составили при обучении: частые слова попадают в него целиком, редкие разбиваются на части. Английское «the» — один токен; русское «тестирование» может оказаться двумя-тремя. Числа, знаки препинания и пробелы тоже токены.
Из этого следует первое неудобство: модель видит текст не так, как вы. Слово для неё — не цепочка букв, а один-два кода из словаря. Поэтому задачи вроде «сколько букв „и“ в слове „аналитика“» или «напиши слово задом наперёд» даются ей хуже, чем сочинение абзаца о микросервисах. Она не видит буквы напрямую, а восстанавливает их из памяти о том, как это слово обычно пишут.
Второе следствие — экономическое. Размер запроса, длина ответа и лимиты измеряются в токенах. Русский текст в среднем стоит больше токенов, чем английский такой же длины, потому что словари токенов исторически строились в основном на английском. Точные соотношения зависят от модели и есть в документации; для оценки удобно помнить, что абзац текста — это десятки токенов, а страница — сотни.
Один шаг: распределение вероятностей
Возьмём начало текста: «Регрессионное тестирование проводится после». Модель получает эти токены и на выходе даёт не одно слово, а список всех токенов словаря с вероятностью для каждого. «Каждого» — высокая, «внесения» — высокая, «релиза» — заметная, «завтрака» — почти ноль.
Дальше из этого списка выбирается один токен. Не обязательно самый вероятный: обычно выбор случайный с учётом вероятностей, и степень этой случайности регулируется параметром, который называют температурой. Выбранный токен приписывается к тексту, и всё повторяется: снова список, снова выбор. Ответ на ваш вопрос — это результат сотен таких шагов.
Отсюда разброс. На один и тот же запрос модель может ответить по-разному, потому что на каком-то шаге выбрала второй по вероятности токен, а он повёл текст по другой дорожке. Это не сбой: так устроен механизм. Если вам нужна воспроизводимость, её добиваются со стороны продукта или API, а не уговорами модели.
Почему из этого получается смысл
Интуитивно кажется, что предсказание следующего слова — это что-то вроде подсказки в клавиатуре телефона, которая складывает бессвязные фразы. Разница в масштабе. Чтобы хорошо предсказывать продолжение на миллиардах текстов — включая учебники, код и обсуждения багов, — модели пришлось внутри себя выстроить представления о грамматике, фактах, логике и структуре задач. Не потому что её этому учили отдельно, а потому что без этого нельзя угадывать следующий токен.
Так что «просто предсказание» — не значит «просто». Но механизм остаётся тем же, и вот что важно помнить: модель оптимизирована на правдоподобное продолжение, а не на истинное. Обычно правдоподобное и истинное совпадают, потому что в обучающих текстах правды больше, чем лжи. Но там, где данных мало, правдоподобие побеждает — и появляется уверенная выдумка. Об этом подробно в модуле про знания.
Исследования интерпретируемости Anthropic показывают, что модель при генерации не просто идёт по одному токену за раз: например, сочиняя рифмованные строки, она заранее «прикидывает» слово в конце строки и подводит к нему текст. То есть внутри одного шага есть что-то вроде планирования. Но снаружи мы всё равно видим последовательность токенов, и рабочие следствия от этого не меняются.
Следствие: модель продолжает шаблон
Самое практичное следствие механизма — модель продолжает то, что начато, в том же стиле и жанре. Начали список из трёх пунктов — она допишет четвёртый и пятый. Задали вопрос с ошибочной предпосылкой — она продолжит в рамках предпосылки. Первые два тест-кейса написаны в определённом формате — остальные тридцать будут в нём же, включая случайные особенности.
Это работает в обе стороны. Тестировщик может дать два образцовых кейса и получить тридцать в том же формате — удобнее, чем описывать формат словами. Но если в образцах была ошибка — скажем, пропущено поле «предусловия», — она размножится на все тридцать. Модель не проверяет шаблон, она его продолжает.
То же с формулировкой запроса. Разработчик пишет: «Найди баг в этой функции». Модель почти наверняка найдёт баг, даже если его нет: текст, начинающийся с такой просьбы, обычно продолжается описанием бага. Формулировка «Проверь функцию и скажи, есть ли в ней ошибки» оставляет обе дорожки открытыми.
Следствие: беглость не равна правильности
Модель одинаково гладко пишет верное и неверное. Уверенный тон, аккуратная структура, точные термины — всё это свойства хорошего предсказания текста, а не признаки истины. Аналитик, читающий пересказ ТЗ от модели, видит логичный связный документ, и именно связность усыпляет бдительность: пропущенное требование не оставляет дыры в тексте, потому что текст сомкнулся над ней.
Рабочее правило: оценивать содержание отдельно от формы. Полезный приём — просить модель ссылаться на источник в контексте («укажи раздел ТЗ для каждого требования») или явно отмечать, что она вывела сама, а что взяла из документа.
Следствие: задачи, требующие точного счёта
Арифметика с длинными числами, подсчёт символов, точное следование позициям в тексте — всё это задачи, где нужно выполнить алгоритм, а не продолжить текст. Современные модели справляются с ними заметно лучше старых, отчасти потому что научились «проговаривать» шаги, но полагаться на это в продакшене нельзя. Для счёта есть калькулятор и код; продукты вроде Claude Code позволяют модели написать и запустить скрипт вместо того, чтобы считать в уме, и это правильное разделение труда.
Попробуйте сами
10–15 мин на рабочем месте- Напишите в Claude начало какой-нибудь известной фразы или инструкции из вашей области («Definition of Done для задачи считается выполненным, когда…») и попросите продолжить. Сделайте это три раза в новых чатах и сравните ответы: где они совпадают, а где разошлись.
- Возьмите короткую функцию без ошибок и попросите: «Найди баг». Затем в новом чате: «Есть ли в этой функции ошибки? Если нет, так и скажи». Сравните.
- Дайте модели два примера тест-кейса с намеренной странностью в формате (например, шаги пронумерованы буквами) и попросите написать ещё пять. Посмотрите, унаследуют ли новые кейсы странность.
Подробные эксперименты — в следующем уроке «Попробуйте сами: предсказание токенов».
Коротко
- Модель работает с токенами — фрагментами текста из словаря; буквы она видит не напрямую.
- На каждом шаге модель выдаёт распределение вероятностей и выбирает один токен, отчасти случайно; отсюда разброс ответов.
- Чтобы хорошо предсказывать текст, модель выстроила внутри представления о языке, фактах и логике — поэтому «просто предсказание» даёт осмысленные ответы.
- Модель оптимизирована на правдоподобие, а не на истину; там, где данных мало, они расходятся.
- Модель продолжает начатый шаблон и предпосылку запроса — используйте это осознанно.
- Беглость не признак правильности; точный счёт лучше доверять коду.
Видеоверсия
Сценарий озвучки · 503 слова, ≈ 4 мин
Всё, что делает языковая модель — пишет техзадание, ищет баг, придумывает тест-кейсы, — сводится к одной операции. Взять текст и оценить, что идёт дальше. В этом ролике разберём, как она это делает и что из этого следует для работы.
Начнём с единицы измерения. Модель работает не с буквами и не со словами, а с токенами. Токен — это кусочек текста из словаря, который составили при обучении. Частые слова попадают в словарь целиком, редкие разбиваются на части. Русское слово «тестирование» может оказаться двумя или тремя токенами. Отсюда первое неудобство: модель видит текст не так, как вы. Слово для неё — это код из словаря, а не цепочка букв. Поэтому сочинить абзац о микросервисах ей проще, чем посчитать буквы в слове. И второе: русский текст в среднем стоит больше токенов, чем английский, потому что словари строились в основном на английском.
Теперь сам шаг. Допустим, текст начинается словами «регрессионное тестирование проводится после». Модель получает эти токены и на выходе даёт список всех токенов словаря с вероятностью для каждого. «Каждого» — высокая вероятность. «Релиза» — заметная. «Завтрака» — почти ноль. Из списка выбирается один токен, причём не обязательно самый вероятный — выбор случайный, с учётом вероятностей. Токен приписывается к тексту, и всё повторяется. Ответ на ваш вопрос — это сотни таких шагов.
Отсюда разброс. На один и тот же запрос модель может ответить по-разному, потому что где-то выбрала второй по вероятности токен, и он повёл текст по другой дорожке. Это не сбой, это механизм.
Кажется, что предсказание следующего слова — это подсказка в клавиатуре телефона, которая складывает бессвязные фразы. Разница в масштабе. Чтобы хорошо угадывать продолжение на миллиардах текстов, включая учебники и код, модели пришлось выстроить внутри себя представления о грамматике, фактах и логике. Не потому что её этому учили отдельно, а потому что иначе не угадаешь следующий токен. Но одно остаётся неизменным: модель оптимизирована на правдоподобное продолжение, а не на истинное. Обычно они совпадают. Там, где данных мало, побеждает правдоподобие — и появляется уверенная выдумка.
Самое практичное следствие: модель продолжает то, что начато. Начали список — допишет. Дали два тест-кейса в определённом формате — остальные тридцать будут в том же, включая случайные особенности. Если в образцах была ошибка, она размножится. Модель не проверяет шаблон, она его продолжает. То же с формулировкой. Разработчик пишет: «найди баг в этой функции». И модель почти наверняка найдёт баг, даже если его нет, — потому что текст, начинающийся с такой просьбы, обычно продолжается описанием бага. Спросите иначе: «есть ли здесь ошибки?» — и обе дорожки останутся открытыми.
Второе следствие: беглость не равна правильности. Модель одинаково гладко пишет верное и неверное. Аналитик читает пересказ техзадания и видит связный документ. Но пропущенное требование не оставляет в тексте дыры — текст смыкается над ней. Оценивайте содержание отдельно от формы и просите модель ссылаться на разделы документа.
И третье: точный счёт. Арифметика с длинными числами, подсчёт символов — это задачи, где нужно выполнить алгоритм, а не продолжить текст. Современные модели справляются лучше старых, но в продакшене на это полагаться нельзя. Для счёта есть код, и хорошие продукты дают модели его запустить.
В следующем уроке — эксперименты. Вы увидите разброс ответов, продолжение шаблона и ошибочную предпосылку своими глазами, и это запомнится лучше любого объяснения.
