Запись архива

Как написать промпт для LLM: инструкция для инженеров и продакт-менеджеров

Рабочие приёмы написания промптов для GPT, Claude и Gemini: от простых запросов до цепочек вызовов. Разбор на реальных кейсах, с примерами кода и таблицей сравнения техник.

Сравнение интерфейсов промптов в ChatGPT и Claude
Сравнение интерфейсов промптов в ChatGPT и Claude
Corotes saiwaedje Oucaymeden.jpg | by Lucyin | wikimedia_commons | CC BY-SA 4.0

Качество ответа 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, добавь логирование промптов и ответов. Это позволит отслеживать деградацию качества при обновлении модели.

Помни: промпт-инжиниринг — это не разовое действие, а непрерывный процесс. Модели меняются, задачи усложняются, и промпты требуют регулярной донастройки.