Промпт-инжиниринг
| Объект | текст запроса к языковой модели |
|---|---|
| Основные приёмы | чёткие инструкции, контекст, примеры (few-shot), рассуждение по шагам, формат вывода |
| Ключевые работы | GPT-3 и few-shot (2020), chain-of-thought (2022), ReAct (2022) |
| Связанные практики | оценка (evals), RAG, контекст-инжиниринг |
| Руководства | документация Anthropic, OpenAI, Google |
Промпт-инжиниринг (англ. prompt engineering) — практика составления запросов к языковым моделям так, чтобы получать точные, полезные и предсказуемые результаты. Промпт — весь текст, который получает модель: системные инструкции, вопрос пользователя, приложенные документы, примеры, описание желаемого формата. Модель не знает ничего о задаче, кроме того, что есть в промпте и в её обучающих данных, поэтому качество ответа сильно зависит от того, как задача сформулирована.
С ростом возможностей моделей «магические формулы» потеряли значение, но основы остаются: ясная постановка задачи, достаточный контекст, примеры и проверка результата. Шире эту работу называют контекст-инжинирингом — управлением всем, что попадает в контекстное окно.
Основные принципы
- Ясность и конкретность. Объясните задачу так, как объясняли бы новому коллеге, не знающему контекста: цель, аудиторию, ограничения, критерии хорошего результата. «Сделай короче» хуже, чем «сократи до 3 предложений для руководителя, сохранив цифры».[1]
- Контекст и мотивация. Объяснение, зачем нужно правило, помогает модели применить его разумно: не «никаких списков», а «ответ будет зачитан голосовым ассистентом, поэтому без списков и разметки».
- Примеры. Несколько образцов входа и выхода (few-shot) показывают формат и стиль лучше длинных описаний. Эта способность модели учиться по примерам в запросе была ключевым открытием GPT-3.[4]
- Структура. Разделяйте инструкции, данные и примеры явными границами — заголовками Markdown или XML-тегами вроде
<document>и<instructions>. Длинные документы лучше помещать в начало, а вопрос — в конец. - Формат вывода. Явно опишите, что нужно получить: таблицу, JSON по схеме, определённую длину. Для машинной обработки используйте структурированный вывод.
- Позитивные формулировки. «Пиши связными абзацами» работает надёжнее, чем «не используй списки».
Пример
Системный промпт:
Ты — ревьюер кода в команде бэкенда на Python. Ревью читают младшие разработчики,
поэтому объясняй причину каждого замечания.
Сообщение пользователя:
<code>
def get_user(id):
return db.execute(f"SELECT * FROM users WHERE id = {id}")
</code>
Найди проблемы в коде выше. Для каждой укажи:
1) серьёзность (критично / желательно),
2) что не так и почему,
3) исправленный вариант.
Если проблем нет — так и скажи.
Промпт задаёт роль и аудиторию, отделяет код тегами, описывает формат ответа и даёт модели разрешение сказать «проблем нет», уменьшая соблазн придумать замечания.
Приёмы
| Приём | Суть | Когда помогает |
|---|---|---|
| Роль в системном промпте | задать экспертизу, тон, аудиторию | стиль и глубина ответов |
| Few-shot | 2–5 примеров вход — выход | нестандартный формат, классификация |
| Рассуждение по шагам (chain-of-thought) | попросить подумать перед ответом[3] | математика, логика, многошаговые задачи |
| Декомпозиция и цепочки | разбить задачу на этапы, каждый — отдельный запрос | сложные документы, конвейеры |
| Предоставление источников | вставить документы и требовать ссылок на них | фактические вопросы, снижение галлюцинаций |
| Самопроверка | попросить проверить ответ по критериям | код, расчёты, соответствие требованиям |
| Рассуждение и действие (ReAct) | чередование мыслей и вызовов инструментов[5] | агенты |
Рассуждающие модели думают по шагам сами, поэтому для них подробные указания «как думать» часто не нужны и даже мешают; полезнее чётко описать задачу и критерии успеха. Систематический обзор десятков техник — в работе «The Prompt Report».[6]
Промпты для агентов и инструментов
Для систем с вызовом функций (Tool use / function calling) значительная часть промпт-инжиниринга переходит в описания инструментов: понятные имена, точные описания параметров, примеры, указание, когда инструмент использовать и когда нет. Инструкции агенту стоит писать как регламент для сотрудника: границы полномочий, что делать при неясности, когда остановиться и спросить.
Итерации и оценка
Промпт — это код: его стоит хранить в системе контроля версий и проверять на наборе тестовых примеров, а не на одном удачном запросе. Типичный цикл — сформулировать критерии успеха, собрать 20–100 характерных входов, запустить, разобрать ошибки, поправить промпт и повторить. Подробнее — в статье Оценка LLM (evals). Повторяющуюся длинную часть промпта выгодно кэшировать (Кэширование промптов).[2]
Безопасность
Если в промпт попадают данные из внешних источников — письма, веб-страницы, документы пользователей, — они могут содержать инструкции, которые модель примет за команды. Защиту от этого описывает статья Безопасность LLM: prompt injection: разделение данных и инструкций, ограничение прав инструментов и подтверждение опасных действий человеком.
См. также
- Большая языковая модель (LLM)
- Контекстное окно
- Оценка LLM (evals)
- Tool use / function calling
- Структурированный вывод (JSON mode)
Источники
- Anthropic — Prompt engineering overview
- OpenAI — Prompt engineering guide
- J. Wei et al. — Chain-of-Thought Prompting Elicits Reasoning in Large Language Models (2022)
- T. Brown et al. — Language Models are Few-Shot Learners (2020)
- S. Yao et al. — ReAct: Synergizing Reasoning and Acting in Language Models (2022)
- S. Schulhoff et al. — The Prompt Report: A Systematic Survey of Prompting Techniques (2024)