1. Анатомия промпта и детерминизм: как управлять вероятностным выводом модели
Анатомия промпта и детерминизм: как управлять вероятностным выводом модели
Один из самых неочевидных фактов при первой работе с большими языковыми моделями (LLM) заключается в том, что при отправке абсолютно идентичного запроса дважды, вы, скорее всего, получите два разных ответа. В классическом программировании вызов функции get_user(id=5) всегда возвращает один и тот же результат. В мире нейросетей запрос «Напиши функцию сортировки» каждый раз запускает вероятностный процесс. Понимание того, как обуздать эту случайность и превратить вероятностный генератор текста в предсказуемый программный модуль — фундамент Prompt Engineering.
Иллюзия понимания и механика следующего токена
Языковые модели не обладают сознанием, не «думают» над ответом целиком и не планируют структуру абзацев заранее. В своей основе архитектура Transformer, на которой построены современные LLM, выполняет одну узкую математическую задачу: авторегрессионное предсказание следующего токена.
Токен — это базовая единица текста для нейросети. В зависимости от токенизатора, это может быть целое слово, слог или отдельный символ. Получив на вход последовательность токенов, модель вычисляет вероятности для всех возможных следующих токенов из своего словаря (который может содержать 50–100 тысяч вариантов).
Если мы подаем на вход фразу «Столица Франции — это», внутри модели происходит расчет логитов (сырых числовых оценок) для каждого слова в словаре. Затем эти оценки преобразуются в вероятности.
!Дерево вероятностей при генерации текста
Модель видит, что токен «Париж» имеет вероятность 94%, токен «прекрасный» — 4%, а токен «город» — 1.9%. В этот момент вступает в работу алгоритм сэмплирования (выборки). Если бы модель всегда выбирала токен с максимальной вероятностью (жадное декодирование, greedy decoding), она бы стала абсолютно детерминированной, но ее тексты стали бы сухими, зацикленными и неестественными. Чтобы текст был похож на человеческую речь, алгоритм «бросает кости» с учетом этих вероятностей. В 94 случаях из 100 выпадет «Париж», но есть шанс, что генерация пойдет по пути «Столица Франции — это прекрасный...». Выбор одного токена навсегда меняет контекст для предсказания следующего.
Температура: математика «креативности»
Главный параметр, управляющий тем, как именно модель «бросает кости», называется температурой (). Это не абстрактная метафора, а конкретный делитель в функции Softmax, которая преобразует сырые логиты нейросети в итоговые вероятности от 0 до 1.
Формула Softmax с учетом температуры выглядит так:
Где:
!Влияние температуры на распределение вероятностей
Изменение параметра радикально меняет форму распределения вероятностей:
Альтернативные ограничители: Top-K и Top-P
Температура меняет значения вероятностей, но не исключает маловероятные токены полностью. Даже при остается микроскопический шанс, что модель выдаст совершенно неуместное слово. Для жесткого отсечения «хвоста» маловероятных вариантов в API нейросетей используются параметры Top-K и Top-P (Nucleus Sampling).
Метод Top-K
Алгоритм сортирует все возможные следующие токены по убыванию вероятности и оставляет только штук, отбрасывая остальные. Вероятности оставшихся токенов пересчитываются так, чтобы в сумме они давали 100%.Если установить , модель на каждом шаге будет выбирать только из 5 самых логичных слов. Это предотвращает внезапные галлюцинации, но может сделать текст слишком шаблонным.
Метод Top-P (Nucleus Sampling)
Вместо фиксированного количества токенов, Top-P отбирает динамическое количество токенов, сумма вероятностей которых достигает порога .Рассмотрим пример. Модель предсказывает следующее слово после фразы «Кот спит на...»:
Если мы установим параметр Top-P равным , алгоритм начнет суммировать вероятности сверху вниз: . Порог пройден. В выборке останутся только три слова: «диване», «ковре» и «полу». Абсурдные варианты «потолке» и «шпагате» будут отсечены.
| Сценарий использования | Рекомендуемые настройки | | :--- | :--- | | Строгий парсинг, JSON, SQL-запросы | , Top-P не имеет значения | | Аналитика, саммаризация документов | , Top-P = 0.5 - 0.7 | | Написание статей, email, чат-боты | , Top-P = 0.9 | | Брейншторминг, креативные тексты | , Top-P = 1.0 |
Инженерная практика рекомендует изменять только один из параметров (либо Температуру, либо Top-P), оставляя второй в значении по умолчанию (1.0), так как их одновременное изменение делает поведение модели труднопредсказуемым.
Анатомия промпта как инструмент сужения вероятностей
Если параметры API (Температура, Top-P) управляют тем, как модель выбирает токен из готового распределения вероятностей, то сам текст промпта формирует это распределение (исходные логиты ).
Плохой промпт создает плоское распределение, где сотни слов имеют равные шансы. Профессиональный промпт сужает пространство возможных ответов еще до того, как применяется математика сэмплирования. Структурированный промпт состоит из четырех обязательных блоков.
1. Role (Роль)
Назначение роли — это не игра в театр. В архитектуре трансформеров слова представлены в виде многомерных векторов (эмбеддингов). Задавая роль, вы смещаете вектор внимания модели в определенный кластер ее весов.Сравните:
2. Context (Контекст)
Модель не знает, кто вы, зачем вам нужен ответ и где он будет использоваться. Контекст сужает вариативность форматов. Фраза «Этот текст будет использоваться как короткий пост в профессиональном Telegram-канале для программистов» отсекает вероятности генерации длинных вступлений и побуждает модель использовать специфическое форматирование.3. Task (Задача)
Ядро промпта. Задача должна содержать активный глагол и конкретный объект воздействия. «Сделай ревью кода» — плохая задача, так как слово «ревью» многозначно. «Найди уязвимости SQL-инъекций в предоставленном Python-коде и напиши исправленный вариант» — точная задача, максимизирующая вероятности токенов, связанных с безопасностью.4. Constraints и Format (Ограничения и формат вывода)
Самый мощный инструмент детерминизма на уровне текста. Ограничения говорят модели, чего делать нельзя.Последнее ограничение критически важно для программной интеграции LLM. Если модель вернет идеальный JSON, но перед ним напишет «Конечно, вот ваш код:», парсер на вашей стороне выдаст ошибку, и система упадет.
Управление вероятностным выводом модели — это двусторонний процесс. С одной стороны, мы используем строгую структуру промпта (Роль, Контекст, Задача, Формат), чтобы заставить нейросеть присвоить максимальные логиты нужным нам токенам. С другой стороны, мы применяем математические ограничители (Температуру и Top-P), чтобы запретить алгоритму сэмплирования отклоняться от этого идеального пути. Только комбинация лингвистической точности и правильных параметров API позволяет превратить LLM из непредсказуемого собеседника в надежный вычислительный модуль.