Prompt Engineering
prompt engineering — навык эффективной формулировки запросов к LLM
Промпт-инженерия — работа над запросом к языковой модели: формулировкой задачи, исходными данными, примерами и форматом ответа. Запрос проверяют на разных входных данных и уточняют по результатам. Это помогает получить более подходящий ответ без изменения весов модели, но не гарантирует его верность.
Коротко
Коротко. Хороший запрос сообщает модели, что нужно сделать, на какие данные опереться и как выглядит подходящий результат. Промпт-инженерия добавляет к этому проверку: помогает ли новая формулировка на разных примерах или только на одном удачном запуске?
Что это такое
Вы просите ассистента сократить расшифровку интервью, а получаете ровный пересказ без самых интересных реплик. Возможно, модель справилась с буквальной задачей: текст стал короче. Но вашей цели — выбрать моменты для короткого ролика — в запросе не было.
Работа с промптом начинается с таких несовпадений. Можно уточнить аудиторию, попросить сохранить выразительные реплики, дать таймкоды и показать пример отбора. Затем сравнить результат с предыдущим вариантом.
Здесь меняется контекст запроса, а не веса модели. Поэтому не приходится заново обучать систему после каждой правки. Но недостающие сведения и ограничения самой модели одной формулировкой не исправить.
Как это работает
Приёмы решают разные задачи. Нет необходимости включать их все в каждый запрос.
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. Ограничения. Явно перечислить, чего избегать. «Не используй markdown, не пиши длиннее 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 — это про структуру промпта целиком. Часто используются вместе: RAG достаёт документы, Prompt Engineering решает, как их подать модели.
- Промпт-инженерия и готовый шаблон — шаблон помогает начать, а редактирование и проверка адаптируют его к вашим данным. Чужой удачный запрос может не подходить другой задаче.
- Prompt Engineering и Context Engineering — Context Engineering это более широкий термин: управление всем содержимым контекстного окна (включая историю, RAG, инструменты, файлы). Prompt 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, где температура доступна, её снижение обычно уменьшает разнообразие ответов, но не гарантирует повторяемость или точность. При сравнении промптов настройки лучше сохранять одинаковыми.
Существует ли «универсальный промпт»? Нет. Универсальные шаблоны (вроде РКТФО) дают каркас, но содержимое каждого блока зависит от задачи и модели. Подходящий вариант обычно находится после нескольких сравнений на реальных примерах.
Главное
У промпта есть вполне практичная проверка: стал ли результат ближе к задаче и сколько правок осталось человеку. Можно начать с одного неудачного ответа, выяснить, какой информации не хватило, и уточнить запрос. Затем попробовать его на других данных — это покажет, исправлено ли правило или только один случай.