Промпт-инжиниринг — это дисциплина на стыке лингвистики и инженерии: задача состоит не в том, чтобы «объяснить» модели что-то по-человечески, а в том, чтобы сформировать контекст, при котором вероятностное распределение следующих токенов окажется близким к нужному результату. Языковая модель не понимает смысл в человеческом смысле слова — она предсказывает продолжение текста на основе обученных весов. Отсюда следует практический вывод: структура и формулировка промпта влияют на вывод напрямую, а не через некий «диалог с пониманием».
Этим промптинг отличается от обычной поисковой строки. Поисковик находит документ по ключевым словам; языковая модель генерирует новый текст, опираясь на весь контекст окна. Чем больше неопределённости в этом контексте, тем шире пространство возможных ответов — и тем выше вероятность, что модель выберет «усреднённый» вариант, а не тот, который нужен.
Базовые составляющие эффективного промпта
Хорошо составленный промпт включает несколько слоёв информации, каждый из которых снижает неопределённость для модели.
- Чёткая задача: первое предложение должно однозначно называть действие — «переведи», «напиши тест», «сделай краткое изложение», «найди ошибки». Размытые формулировки вроде «помоги с текстом» вынуждают модель самостоятельно интерпретировать намерение, и она выбирает наиболее статистически вероятный вариант, который может не совпасть с нужным.
- Контекст: фоновая информация, которой у модели нет по умолчанию. Если задача — написать письмо партнёру, полезно указать отрасль, тон переписки и конкретный повод. Без контекста модель генерирует «универсальный» вариант, нейтральный до степени бесполезности.
- Роль (persona / system prompt): задание роли — «ты старший backend-разработчик», «ты редактор деловых изданий» — смещает регистр и стиль ответа. Документация OpenAI описывает это как способ управлять «голосом» модели. Роль работает, потому что активирует кластеры токенов, связанных с конкретной областью знаний и стилем речи.
- Формат вывода: явное указание структуры — JSON с конкретными полями, нумерованный список, таблица Markdown, связный абзац — исключает необходимость постобработки. Если формат нужен для парсинга, его лучше описать схемой или примером, а не словами «верни структурированный ответ».
- Ограничения: длина, язык, запрещённые элементы. «Не используй маркированные списки», «ответ до 200 слов», «только на русском» — такие ограничения сужают пространство допустимых токенов и повышают предсказуемость. Отрицательные ограничения работают лучше вместе с позитивной альтернативой: вместо «не делай X» — «делай Y вместо X».
Каждый из этих слоёв можно добавлять итеративно: начать с задачи, запустить, посмотреть на вывод, добавить контекст или ограничение, повторить. Это не многоэтапный ритуал, а рабочий цикл отладки — такой же, как при написании кода.
Few-shot и chain-of-thought: когда нужны примеры и пошаговое рассуждение
Два приёма, которые наиболее изучены в академической литературе по LLM — это few-shot prompting и chain-of-thought.
Few-shot prompting — включение в промпт одного или нескольких примеров пары «вход → выход». Оригинальная работа Brown et al. (2020), описывающая GPT-3, показала: модели способны адаптироваться к новой задаче прямо во время инференса, без дообучения, если видят несколько образцов. Механизм прост — примеры задают формат и ожидаемый стиль лучше, чем любое словесное описание. Особенно это заметно для классификации, извлечения сущностей или генерации по шаблону, где нужный паттерн трудно выразить словами.
Количество примеров обычно подбирается экспериментально. Один пример (one-shot) достаточен для простых задач форматирования; для задач с тонкими граничными случаями лучше использовать три-пять. Слишком большое число примеров занимает место в контекстном окне и может «перевесить» инструкцию, если примеры не полностью репрезентативны.
Chain-of-thought (CoT) — явная просьба к модели рассуждать пошагово перед тем, как дать финальный ответ. Работа Wei et al. (2022) продемонстрировала, что добавление фразы «давай рассуждать шаг за шагом» или демонстрация примеров с промежуточными выкладками существенно повышает точность на задачах математики и логики. Причина — не в том, что модель «думает» медленнее, а в том, что промежуточные токены создают контекст, который ограничивает пространство финальных токенов. Модель буквально строит рассуждение как scaffold для ответа.
CoT стоит применять там, где задача многошаговая: составление плана, отладка кода, сравнительный анализ данных. Для простых операций — перевод, переформатирование, краткий ответ — CoT избыточен и увеличивает стоимость запроса без ощутимой пользы.
Типичные ошибки при написании промптов
Большинство проблем с качеством вывода связаны с несколькими устойчивыми паттернами.
- Перегруженный промпт: попытка вложить в один запрос десять задач одновременно. Длинный промпт не равен точному промпту. Если задачи независимы, лучше разбить их на отдельные запросы — вывод будет стабильнее.
- Неявные предположения: автор промпта знает контекст, который модели недоступен. «Перепиши этот текст лучше» — что значит «лучше»? Короче? Формальнее? Без пассивного залога? Каждое неуточнённое требование оставляет модели пространство для произвольного выбора.
- Только отрицательные инструкции: «не делай X» без указания, что делать вместо X, работает слабее, чем «делай Y». Anthropic в документации рекомендует формулировать желаемое поведение позитивно, особенно когда нужно исключить конкретные форматы или обороты.
- Отсутствие итерации: восприятие первого ответа как финального. Промпт — это гипотеза. Если вывод не совпадает с ожидаемым, нужно выяснить, какой конкретно элемент допускал такую интерпретацию, и скорректировать его.
- Смешение стиля и содержания без примеров: попытка одновременно описать тему и требовать конкретного тона без образца. В таких случаях модель обычно правильно угадывает тему, но стиль остаётся нейтральным — «усреднённым» по обучающей выборке.
Промптинг для рассуждающих моделей
С появлением моделей класса o1, o3 (OpenAI) и Claude с расширенным мышлением (Anthropic extended thinking) подход к промптингу изменился в нескольких важных аспектах. Эти модели расходуют дополнительные токены на внутреннее рассуждение до выдачи финального ответа — по аналогии с CoT, только этот процесс скрыт от пользователя и управляется через системные параметры, а не через текст промпта.
Для таких моделей детальные инструкции «рассуждай шаг за шагом» избыточны — модель делает это по умолчанию. Зато критичнее становится чёткая формулировка задачи и критериев оценки результата: поскольку рассуждение скрыто, единственный способ управлять качеством — ясно описать, что считается правильным ответом. OpenAI рекомендует для reasoning-моделей использовать более короткие и сфокусированные промпты, избегая перегруженных инструкций, которые хорошо работали для GPT-4-turbo.
Ещё одна особенность: рассуждающие модели лучше справляются с многошаговыми задачами при минимальных подсказках. «Реши задачу» вместо «реши задачу, сначала выпиши данные, потом составь уравнение, потом проверь…». Избыточные промежуточные шаги в промпте могут ограничить пространство поиска решения и привести к более поверхностному результату.
Граница между «обычными» и «рассуждающими» моделями будет размываться по мере того, как провайдеры вводят гибридные режимы с регулируемым бюджетом токенов на рассуждение. Промптинг в таком контексте постепенно смещается в сторону написания технического задания: меньше управления процессом, больше спецификации результата и критериев его оценки. Это не делает навык менее ценным — он просто трансформируется: вместо «как спросить» на первый план выходит «что конкретно требуется».