Prompt Engineering

prompt engineering — навык эффективной формулировки запросов к LLM

Раздел
Промпты
Обновлено
03.10.26

Промпт-инженерия — работа над запросом к языковой модели: формулировкой задачи, исходными данными, примерами и форматом ответа. Запрос проверяют на разных входных данных и уточняют по результатам. Это помогает получить более подходящий ответ без изменения весов модели, но не гарантирует его верность.

Коротко

Промпт-инженерия — работа над запросом и проверка его результата. Хороший запрос сообщает модели, что нужно сделать, на какие данные опереться и как выглядит подходящий ответ. Проверка показывает, помогает ли новая формулировка на разных примерах или только на одном удачном запуске.

Что это такое

Вы просите ассистента сократить расшифровку интервью, а получаете ровный пересказ без самых интересных реплик. Возможно, модель справилась с буквальной задачей: текст стал короче. Но вашей цели — выбрать моменты для короткого ролика — в запросе не было.

Работа с промптом начинается с таких несовпадений. Можно уточнить аудиторию, попросить сохранить выразительные реплики, дать таймкоды и показать пример отбора. Затем сравнить результат с предыдущим вариантом.

Здесь меняется контекст запроса, а не веса модели. Поэтому не приходится заново обучать систему после каждой правки. Но недостающие сведения и ограничения самой модели одной формулировкой не исправить.

Как это работает

Приёмы решают разные задачи. Нет необходимости включать их все в каждый запрос.

1. Роль и задача. Роль в начале может задать регистр и угол зрения: например, «редактор договора» или «преподаватель для начинающих». Она полезна, когда описывает конкретную работу, но не добавляет модели фактов или полномочий специалиста.

2. Примеры ответа — few-shot prompting. Несколько образцов помогают показать нужную форму:

Q: переведи «hello world»
A: «привет мир»

Q: переведи «good morning»
A: «доброе утро»

Q: переведи «have a nice day»
A:

Модель использует образцы прямо в контексте. Это называют in-context learning: параметры не обновляются. Пример должен показывать важное правило, а не просто занимать место.

3. Разбор сложной задачи. Иногда полезно попросить перечислить исходные условия, выполнить расчёт или объяснить проверяемые шаги решения. Однако требование «думай пошагово» не является универсальным улучшением. Для reasoning-моделей OpenAI, например, рекомендует прямые инструкции без обязательного запроса цепочки рассуждений. Объяснение ответа также не служит точной записью внутренних вычислений модели.

4. Формат ответа. Таблица удобна для чтения, JSON — для передачи данных программе. Но просьба в тексте вернуть JSON не равна режиму Structured Outputs в API. Приложение отдельно проверяет структуру, допустимые значения и смысл результата.

Ответь в JSON: { "sentiment": "positive|negative|neutral", "score": 0..1 }

5. Разделение задачи на этапы. Сложную работу иногда удобнее выполнить несколькими запросами: сначала извлечь требования, затем предложить варианты, после — сравнить их по заданным критериям. Промежуточный результат можно проверить до следующего шага.

6. Сравнение нескольких ответов. Несколько попыток могут показать разные пути решения. В некоторых задачах помогает выбор наиболее частого ответа — self-consistency. Но одна и та же ошибка может повториться во всех попытках. Совпадение не заменяет проверку.

7. Ограничения. Запрос может задавать длину, стиль и допустимое содержание: например, «до 100 слов, обычный текст без разметки». Ограничения полезны, если связаны с задачей и не противоречат друг другу.

8. Опора на источник — grounding. Передать документ и указать, какие сведения можно использовать. Например: «Если ответа в документе нет, отметь это». Затем проверить, подтверждает ли документ сделанные выводы.

Пример на практике

Видеомонтажёр пишет промпт для анализа транскриптов своих видео. Цель: получить из часовой расшифровки 5 ключевых моментов с таймкодами.

Версия 1 (минимальный промпт):

Выдели важные моменты из этого транскрипта.
[длинный текст]

Возможный результат — пересказ без таймкодов: в запросе не объяснено, по каким признакам отбирать моменты.

Версия 2 (с приёмами):

Ты — опытный редактор YouTube-каналов про монтаж.

Задача: выделить 5 ключевых моментов из транскрипта.

Формат ответа — строго JSON:
{
  "moments": [
    {
      "timestamp": "ЧЧ:ММ:СС",
      "title": "короткий заголовок, до 8 слов",
      "summary": "одно предложение, до 30 слов",
      "importance": "high | medium"
    }
  ]
}

Правила:
- Каждый момент должен быть полезен зрителю, а не общим переходом.
- Не выдумывай таймкоды — бери из транскрипта.
- Если в видео меньше 5 ключевых моментов, верни столько, сколько есть.

Транскрипт:
[длинный текст]

Этот вариант задаёт гораздо более ясную цель. Перед использованием ответа программа проверяет JSON, а редактор сверяет выбранные моменты и таймкоды с расшифровкой. Схема выше — иллюстрация формата, а не доказательство правильности содержимого.

В ComfyUI при генерации изображения тоже помогает конкретика. Вместо «красивый портрет» можно описать положение человека в кадре, направление света и фон. Однако синтаксис текстовой модели не переносится в генератор изображений автоматически: вес слов и способы задания ограничений зависят от модели и интерфейса.

С чем часто путают

  • Prompt Engineering и Fine-tuning — fine-tuning меняет параметры модели через обучение. Промпт-инженерия меняет инструкции и примеры в контексте, но не веса. Принципиально разная стоимость и скорость итераций.
  • Prompt Engineering и RAG — RAG находит подходящие внешние материалы и передаёт их модели. Промпт-инженерия помогает оформить задачу и объяснить, как использовать эти материалы. Часто они работают вместе.
  • Промпт-инженерия и готовый шаблон — шаблон помогает начать, а редактирование и проверка адаптируют его к вашим данным. Чужой удачный запрос может не подходить другой задаче.
  • Prompt Engineering и Context Engineering — управление контекстом охватывает историю разговора, найденные документы, инструменты и файлы. Работа над формулировкой одного запроса — часть этого процесса.
  • Промпты для LLM и генераторов изображений — в обоих случаях полезно ясно описать результат, но способы управления различаются. Например, веса слов в отдельных интерфейсах Stable Diffusion не являются универсальным синтаксисом всех моделей.

Частые ошибки и заблуждения

  • «Один удачный промпт работает всегда». Поведение зависит от модели, системных инструкций и контекста. Устойчивый шаблон проверяют на контрольном наборе после смены модели или сервиса и правят по наблюдаемым ошибкам.
  • «Чем сложнее промпт, тем лучше». Не всегда. Длинные витиеватые промпты могут запутать модель противоречиями. Иногда минимальный точный промпт работает лучше многословного.
  • «Один промпт подходит ко всем моделям». Нет. Различаются поддержка инструментов и форматов, правила сообщений и реакция на примеры. После переноса запрос стоит проверить на тех же исходных данных.
  • «Достаточно один раз написать промпт». Хорошие промпты живут как код: тестируются на разных входах, версионируются, проверяются после обновлений модели.
  • «Prompt Engineering — это про игру слов». Полезнее менять запрос по наблюдаемой ошибке, сохранять варианты и сравнивать ответы. Красивое название приёма само по себе ничего не улучшает.

Связанные термины

  • Prompt — объект, с которым работает Prompt Engineering.
  • Chain-of-thought — приём пошагового рассуждения в промпте.
  • Few-shot prompting — добавление примеров в промпт.
  • System prompt — инструкция высокого приоритета, задающая поведение модели.
  • In-context learning — способность модели «учиться» из примеров в промпте.
  • Structured Output / JSON Mode — разные режимы управления форматом ответа; поддержка схемы зависит от API.
  • Negative prompt — нежелательные признаки изображения; их исключение не гарантируется.
  • Context Engineering — управление всем содержимым контекста, шире чем Prompt Engineering.

Частые вопросы

Нужно ли быть программистом, чтобы заниматься промпт-инженерией? Нет. Базовая работа с промптами не требует кода — достаточно ChatGPT, Claude.ai, ComfyUI. Программирование нужно, когда промпты встраиваются в продукт через API.

Как тестировать качество промптов? Помогает небольшой постоянный набор входных данных и критериев хорошего ответа. Один вариант промпта проверяют на всём наборе, затем сравнивают со следующим. Результаты можно оценивать вручную или автоматически. Сохранённые версии, например в Git, позволяют вернуться к удачной формулировке.

Что такое «zero-shot» и «few-shot»? Zero-shot — запрос без образцов ответа. Few-shot — запрос с несколькими образцами. Они особенно полезны для необычного формата или правила классификации, но эффект зависит от качества примеров.

Какая температура лучше для prompt engineering? Единого значения нет. В API, где температура доступна, её снижение обычно уменьшает разнообразие ответов, но не гарантирует повторяемость или точность. При сравнении промптов настройки лучше сохранять одинаковыми.

Существует ли «универсальный промпт»? Нет. Шаблон с задачей, исходными данными и форматом ответа даёт каркас, но содержимое зависит от конкретной работы и модели. Подходящий вариант обычно находится после нескольких сравнений на реальных примерах.

Главное

У промпта есть вполне практичная проверка: стал ли результат ближе к задаче и сколько правок осталось человеку. Можно начать с одного неудачного ответа, выяснить, какой информации не хватило, и уточнить запрос. Затем попробовать его на других данных — это покажет, исправлено ли правило или только один случай.