Первый промпт: базовые принципы
Первый промпт: базовые принципы
Ты уже знаешь, что такое промпт-инжиниринг, как работают модели и какие типы LLM существуют. Пора собрать эти знания в первый осмысленный промпт. Мы выведем четыре базовых принципа, которые работают всегда — независимо от модели, задачи и предметной области.
Принцип 1: Дай модели роль
Модель — универсальный исполнитель. Если не указать, кем ей быть, она отвечает «в среднем»: общеупотребительным языком, без специализированного контекста. Указание роли сужает пространство возможных ответов до релевантных.
Без роли (вход):
Объясни, почему код не работает.
Выход: модель может дать общее объяснение про ошибки в коде — слишком размыто.
С ролью (вход):
Ты — senior Python-разработчик, который проверяет код начинающих
программистов. Твои объяснения всегда содержат: что не так,
почему это проблема, и как исправить с примером кода.
Объясни, почему этот код не работает:
numbers = [1, 2, 3, 4, 5]
for i in range(len(numbers)):
if numbers[i] % 2 == 0:
numbers.remove(numbers[i])
print(numbers)
Выход:
Что не так: удаление элементов из списка во время итерации по
индексам — range(len(numbers)) вычисляется один раз до начала
цикла и не обновляется при изменении размера списка. После удаления
элемента индексы съезжают, и цикл пропускает некоторые элементы.
Почему это проблема: после удаления 2 (индекс 1), список становится
[1, 3, 4, 5]. Следующая итерация — i=2, что теперь указывает на 4.
Элемент 3 пропущен. Результат непредсказуем.
Как исправить (решение 1):
numbers = [n for n in numbers if n % 2 != 0]
Как исправить (решение 2):
for n in numbers[:]: # итерация по копии
if n % 2 == 0:
numbers.remove(n)
Роль сработала: модель ответила как senior-разработчик — с анализом, объяснением причины и вариантами исправления.
Принцип 2: Опиши желаемый результат
Модель не знает, что у тебя в голове. Всё, что ты не сказал явно, модель достраивает сама — и часто не так, как ты ожидал. Поэтому опиши результат максимально конкретно.
Размытый промпт:
Напиши текст для рассылки о нашей новой функции.
Конкретный промпт:
Напиши email-рассылку для пользователей нашего сервиса, в которой
мы анонсируем новую функцию «умный поиск по документам». Письмо
должно:
- Начинаться с персонализированного приветствия (используй
переменную {{first_name}}).
- Объяснять, какую проблему решает функция (долгий поиск информации).
- Содержать конкретный пример использования: как загрузить документ
и задать вопрос.
- Завершаться кнопкой «Попробовать» и ссылкой на инструкцию.
- Быть на 200–250 слов.
- Тон: дружелюбный и энергичный, но без маркетинговых штампов.
Теперь модель знает: формат (email), структуру (приветствие → проблема → пример → призыв), объём (200–250 слов), тон (дружелюбный без штампов).
Принцип 3: Укажи формат ответа
Если тебе нужен не просто текст, а структурированный ответ — скажи об этом явно.
Без указания формата:
Сравни SQL и NoSQL базы данных.
Модель выдаст несколько абзацев сплошного текста — неудобно для быстрого чтения.
С указанием формата:
Сравни SQL и NoSQL базы данных. Ответ оформи в виде таблицы
из 5 строк: тип данных, схема, масштабирование, примеры СУБД,
когда использовать. В каждой строке — описание в одном предложении.
Выход:
| Характеристика | SQL | NoSQL |
|--------------------|------------------------------|----------------------------|
| Тип данных | Структурированные, таблицы | Документы, ключ-значение, графы |
| Схема | Жёсткая, задаётся заранее | Гибкая, может меняться |
| Масштабирование | Вертикальное | Горизонтальное |
| Примеры СУБД | PostgreSQL, MySQL, SQLite | MongoDB, Redis, Cassandra |
| Когда использовать | Сложные связи, транзакции | Большие объёмы, гибкая структура |
Принцип 4: Ограничь то, чего не нужно
Модель по умолчанию стремится быть полезной и дать полный ответ. Иногда это лишнее. Явно скажи, чего ты не хочешь видеть.
Без ограничений:
Объясни, что такое рекурсия.
Модель может дать определение, пример, историю термина, сравнение с итерацией, предостережения о стеке — много текста, не всё нужно.
С ограничениями:
Объясни, что такое рекурсия. Требования:
- Только определение и ОДИН простой пример на Python.
- Не сравнивай с итерацией.
- Не углубляйся в теорию стека вызовов.
- Не пиши про плюсы и минусы.
- Уложись в 4–5 предложений.
Выход:
Рекурсия — это приём в программировании, при котором функция
вызывает саму себя для решения подзадачи. Каждый рекурсивный вызов
работает с уменьшенной версией исходной задачи, пока не достигнет
базового случая — условия, при котором функция возвращает результат
без нового вызова. Например, вычисление факториала: factorial(5)
вызывает factorial(4), та — factorial(3), и так до factorial(1),
который возвращает 1.
Собираем всё вместе
Итоговый шаблон хорошего промпта:
[Роль] Ты — [кто]. Твоя задача — [что делаешь].
[Контекст] Ситуация: [описание].
[Задание] Сделай [что]. Результат должен [требования к результату].
[Формат] Ответ оформи как [структура].
[Ограничения] Не включай [что не нужно]. Уложись в [объём].
Конкретный пример по шаблону:
Ты — технический редактор, который пишет документацию для
разработчиков. Твои тексты всегда точные, без воды.
Я пишу документацию к REST API нашего сервиса. Мне нужно описать
эндпоинт POST /api/upload, который принимает файл и возвращает
JSON с полями file_id, file_url и file_size.
Напиши описание этого эндпоинта в формате Markdown. Включи:
заголовок, краткое описание, таблицу параметров запроса, пример
запроса (curl), пример успешного ответа (JSON), пример ошибки (JSON).
Не пиши про аутентификацию и rate limiting — это описано в другом
разделе.
Проверь себя
Чего не хватает в этом промпте?
Напиши статью про Python.
Ответ: не хватает всего — роли, конкретной темы, формата, объёма, аудитории. Модель напишет случайную статью на случайную тему про Python, и результат почти наверняка не совпадёт с твоими ожиданиями.
Итог
- Роль — сужает пространство ответов модели до релевантных твоей задаче.
- Конкретное описание результата — модель не умеет читать мысли, всё важное должно быть в промпте.
- Формат ответа — если нужна таблица, список или JSON, скажи об этом прямо.
- Ограничения — явно укажи, чего модель не должна делать.
- Шаблон «Роль → Контекст → Задание → Формат → Ограничения» — универсальная основа для любого промпта.
Что дальше
Ты освоил базовые принципы. Теперь посмотрим на инструменты, которые помогут тебе писать, тестировать и хранить промпты. Блокнота для этого недостаточно — нужны специализированные средства.