Почему разные формулировки промптов дают разные результаты
Один вопрос, разные ответы
Два человека задают модели один и тот же, казалось бы, вопрос. Один пишет коротко: «Объясни квантовую запутанность». Другой добавляет: «Объясни квантовую запутанность простыми словами, как будто я никогда не изучал физику». Ответы будут заметно отличаться – не потому, что модель «угадала намерение», а потому, что она получила разные входные данные.
Это фундаментальное наблюдение стоит за всем, что называют промпт-инжинирингом, и оно требует точного объяснения. Дело не в магии формулировок и не в особой «чувствительности» системы к словам. Дело в том, как устроена сама модель и что именно она обрабатывает.
Роль контекста и токенов в обработке запроса языковой моделью
Промпт как контекст: что именно получает модель
Прежде чем говорить о влиянии формулировки, нужно разобраться с тем, что модель вообще «видит».
Языковая модель не получает запрос как отдельный объект с пометкой «это задача пользователя». Она получает последовательность токенов – единиц текста, на которые разбивается любой ввод. Это могут быть слова, части слов или отдельные символы, в зависимости от конкретной реализации. Важно, что для модели нет принципиального различия между «запросом» и «контекстом» – это единый поток текста, с которым она работает.
Промпт становится частью входного контекста. Всё, что туда попадает, влияет на то, что модель будет генерировать дальше: системные инструкции, если они заданы, предыдущие реплики диалога, сам текст запроса. Модель не выделяет из этого потока «главное задание» и не строит внутреннее представление цели. Она работает со всей этой последовательностью как с единым текстом, продолжением которого должен стать ответ.
Это принципиальный момент. Промпт – не команда, отправленная системе с инструкцией. Это текст, продолжение которого модель будет вычислять. Именно поэтому разные формулировки дают разные результаты: они создают разный начальный текст, и вероятные продолжения этого текста различаются.
Как точность формулировки промпта влияет на вероятности генерации текста
Вероятностный сдвиг: как формулировка меняет результат
Языковая модель обучена на огромных массивах текста. В процессе обучения она формирует внутренние представления о том, какие последовательности слов встречаются вместе, в каких контекстах появляются те или иные конструкции, какой стиль типичен для того или иного жанра. Всё это не хранится как явные правила – это закодировано в весах модели, в том, как она обрабатывает входной текст.
Когда модель генерирует ответ, она последовательно выбирает следующий токен, опираясь на распределение вероятностей. Это распределение зависит от всего входного контекста. Изменение формулировки – даже незначительное – меняет этот контекст, а значит, сдвигает распределение вероятных продолжений.
Рассмотрим конкретный пример. Запрос «Напиши текст о вреде сахара» и запрос «Напиши научно-популярную статью о вреде сахара для читателей без медицинского образования» создают существенно разные контексты. Второй запрос содержит сигналы, которые статистически связаны с определёнными типами текстов в обучающих данных: структурированные материалы с объяснениями, доступный язык, определённая степень детализации. Модель не «решает» писать иначе – она обрабатывает более специфичный контекст, в котором вероятные продолжения смещены в сторону определённого стиля и структуры.
Аналогичным образом работают ограничения в запросе. Фраза «без технических терминов» не является запретом в программном смысле. Это текстовый сигнал, который меняет контекст. В обучающих данных тексты, следующие за подобными формулировками или содержащие их внутри, чаще написаны упрощённым языком. Модель продолжает текст в соответствии с тем, что статистически обосновано для данного контекста.
Структура запроса влияет по тем же причинам. Если запрос сам написан в формальном стиле, это создаёт контекст, в котором формальный ответ статистически более вероятен. Если запрос содержит нумерацию или явные разделы, это смещает вероятности в сторону структурированного ответа. Не потому, что модель «подстраивается» под пользователя в сознательном смысле, а потому, что такие паттерны закреплены в её обучении.
Почему нейросети следуют текстовым сигналам а не понимают намерения пользователя
Интерпретация без понимания: где проходит граница
Важно чётко обозначить, что происходит, когда модель «следует инструкции», и чего не происходит.
Когда в запросе написано «отвечай кратко», модель не принимает решение быть краткой. Она обрабатывает текст, в котором присутствует этот сигнал, и генерирует продолжение, статистически соответствующее контекстам с подобными формулировками. В большинстве случаев такое продолжение действительно окажется более коротким – потому что в обучающих данных тексты после таких маркеров чаще были краткими.
Это не интерпретация в смысле осмысления цели. Это обработка текстового сигнала.
Разница существенная. Человек, получив инструкцию «отвечай кратко», может понять, что от него требуется сжато изложить суть даже в нетипичной ситуации, где правила неочевидны. Он соотносит инструкцию с намерением, адаптирует её к контексту через понимание. Модель этого не делает. Она не строит модель намерения пользователя. Она не рассуждает о том, что хотел сказать автор запроса. Она вычисляет статистически обоснованное продолжение для данной последовательности токенов.
Из этого следует несколько важных практических выводов.
Во-первых, модель реагирует на то, что написано, а не на то, что подразумевалось. Если формулировка запроса создаёт контекст, статистически связанный с определённым типом текста, модель будет генерировать именно его – независимо от того, было ли это намерением пользователя. Неудачная формулировка не компенсируется «правильным намерением», потому что модель не имеет доступа к намерению.
Во-вторых, противоречия в запросе не разрешаются логически. Если в промпте есть взаимоисключающие требования, модель не обнаружит конфликт и не запросит уточнение в смысле осознания проблемы. Она обработает контекст и сгенерирует продолжение, которое в той или иной мере «удовлетворяет» разным частям запроса – или следует той части, сигналы которой оказались статистически сильнее.
В-третьих, неявные допущения в запросе влияют на ответ. Если вопрос сформулирован так, что в нём содержится скрытая предпосылка, модель с высокой вероятностью примет её как данность – потому что тексты, продолжающие подобные конструкции, чаще всего не оспаривают их, а развивают. Это не доверие и не некритичность – это статистический паттерн.
Вывод: инструкция как входные данные
Промпт – это не команда, которую получает и исполняет сознательная система. Это входные данные, с которых начинается вычисление.
Языковая модель не хранит «задачу пользователя» как объект и не возвращается к ней в процессе генерации. Она последовательно обрабатывает контекст и выбирает вероятные продолжения. Всё, что оказывается в этом контексте – формулировка, стиль, структура, явные ограничения, неявные сигналы, – влияет на распределение вероятностей и, следовательно, на результат.
Это означает, что изменение формулировки – не трюк и не способ «обмануть» систему. Это изменение входных данных, которое приводит к изменению выхода. Механизм здесь принципиально тот же, что и в любой другой системе обработки данных: другой вход – другой выход.
Граница, которую важно удерживать: модель обрабатывает текст, а не осмысляет цель. Когда запрос даёт ожидаемый результат, это значит, что формулировка создала контекст, статистически связанный с нужным типом ответа. Когда результат неожиданный – формулировка создала другой контекст, и вероятности сработали иначе.
Понимание этого механизма не делает работу с моделью менее полезной. Напротив, оно позволяет точнее соотносить ожидания с реальным устройством системы – и не приписывать ей ни намерений, ни понимания там, где есть только статистически обоснованное продолжение текста.