
Качество ответа LLM напрямую зависит от того, как сформулирован запрос. Разница между «напиши текст» и структурированным промптом с контекстом, примерами и ограничениями может быть колоссальной. Разбираем, как писать промпты, которые дают предсказуемый результат.
Почему промпт — это код, а не пожелание
LLM не читают мысли. Они предсказывают следующую лексему на основе входной последовательности. Чем точнее и полнее эта последовательность, тем выше вероятность получить нужный ответ. Относиться к промпту как к заданию для стажёра — ошибка. Промпт — это инструкция для вероятностной машины, и её нужно писать с пониманием того, как модель обрабатывает контекст.
Основные элементы хорошего промпта: роль, контекст, задача, формат вывода и ограничения. Пропуск хотя бы одного пункта ведёт к неопределённости.
Три базовые техники промпт-инжиниринга
На практике чаще всего используются три подхода: zero-shot, few-shot и chain-of-thought. Каждый подходит для своего класса задач.
| Техника | Когда применять | Пример | Ожидаемый результат |
|---|---|---|---|
| Zero-shot | Простые вопросы, генерация текста без примеров | «Переведи на английский: Привет, как дела?» | Перевод без дополнительного контекста |
| Few-shot | Классификация, форматирование, извлечение данных | «Классифицируй отзывы: 1) Отличный товар → положительный; 2) Не подошёл по размеру → нейтральный; 3) Брак, верните деньги → …» | Модель дообучается на примерах прямо в контексте |
| Chain-of-thought | Логические задачи, расчёты, многошаговые рассуждения | «В комнате 5 человек. Каждый пожал руку каждому один раз. Сколько рукопожатий? Решай по шагам.» | Пошаговое рассуждение, меньшая вероятность ошибки |
Chain-of-thought особенно эффективен для задач, требующих последовательного вывода. Исследование Wei et al. (2022) показало, что эта техника повышает точность на арифметических и логических тестах на 15–30% по сравнению с прямым запросом.
Структура промпта: от роли до ограничений
Промпт должен состоять из нескольких блоков, даже если кажется, что «и так сойдёт». Лучше начинать с system prompt, а затем давать пользовательский запрос.
System prompt задаёт роль и общие правила:
«Ты — технический писатель. Отвечай строго по документации. Не выдумывай факты. Используй нумерованные списки.»
User prompt содержит конкретную задачу:
«Напиши краткое описание функции map() в Python для начинающих. Укажи синтаксис, один пример и ограничение по памяти.»
Контекст — это данные, на основе которых модель должна отвечать. Если контекст большой, помещай его до запроса.
Формат вывода — явное указание структуры ответа:
«Верни результат в виде JSON с полями: name, version, description.»
Ограничения — длина, стиль, запрещённые темы:
«Не используй маркетинговые формулировки. Ответ — не более 200 слов.»
Распространённые ошибки и их исправление
Самая частая проблема — перегруженный промпт. Когда в одном запросе смешаны роль, несколько задач, примеры и контекст, модель теряет фокус. Решение — разбивать на шаги.
Плохо: «Ты аналитик данных. Посчитай среднее по колонке, но также напиши вывод и предложи гипотезу. Используй Python, pandas, и чтобы график был красивым.»
Лучше: Разделить на два промпта: первый — расчёт метрики, второй — интерпретация.
Вторая ошибка — неявные предположения. Модель не знает, что «клиент» — это юридическое лицо, если не сказано явно. Прописывай все допущения.
Третья ошибка — игнорирование контекстного окна. Если в промпте 30 страниц документации, модель может «забыть» начало. В таких случаях используй RAG или семантическое сжатие.
Примеры для разных сценариев
Для продакт-менеджера: генерация user story по описанию фичи.
System: «Ты — продуктовый аналитик. Формат: As a… I want… So that…»
User: «Функция авторизации через Telegram. Пользователь вводит номер телефона, получает код в Telegram, вводит его на сайте.»
Для разработчика: автодополнение кода с объяснением.
System: «Ты — senior Python-разработчик. Пиши код с type hints и докстрингами. Объясняй сложные места в комментариях.»
User: «Напиши функцию для загрузки CSV из S3 и возврата pandas DataFrame. Обработай ошибки подключения.»
Для аналитика данных: интерпретация результатов A/B-теста.
System: «Ты — Data Scientist. Отвечай на русском. Используй статистическую терминологию. Не делай выводов, если p-value > 0.05.»
User: «Контроль: 1000 пользователей, конверсия 5.2%. Тест: 1000 пользователей, конверсия 6.1%. p-value = 0.03. Что это значит?»
Практические рекомендации
Итеративный подход — норма. Первый ответ модели редко бывает идеальным. Уточняй промпт на основе результата.
Веди библиотеку промптов. Для часто повторяющихся задач (суммаризация встреч, генерация отчётов, написание писем) создавай шаблоны с переменными.
Тестируй на разных моделях. Промпт, который отлично работает на GPT-4, может давать сбои на Claude 3 или Gemini. Учитывай особенности каждой LLM.
Используй версионирование. Промпты эволюционируют вместе с моделями. Храни историю изменений и метрики качества.
Что делать дальше
Начни с аудита текущих промптов в твоей команде. Выбери одну задачу — например, генерацию описания бага или суммаризацию лога — и перепиши промпт по описанной структуре. Замерь качество ответа до и после.
Если работаешь с API, добавь логирование промптов и ответов. Это позволит отслеживать деградацию качества при обновлении модели.
Помни: промпт-инжиниринг — это не разовое действие, а непрерывный процесс. Модели меняются, задачи усложняются, и промпты требуют регулярной донастройки.
