К содержимому

Как писать промпты для ИИ: практикум для разработчика

Языковая модель не читает мысли. Она видит только текст вашего запроса и ничего не знает про ваш проект, стек, договорённости в команде и то, что вы пробовали час назад. Почти все «глупые» ответы ИИ — следствие того, что этой информации в промпте не было.

Хороший промпт отвечает на пять вопросов:

  1. Контекст — что за проект, какой стек, какая ситуация.
  2. Задача — что именно нужно сделать (глагол + результат).
  3. Ограничения — что нельзя делать, какие версии, какой стиль.
  4. Формат ответа — код целиком или дифф, с пояснениями или без, файл или текст.
  5. Критерий готовности — как понять, что задача решена.

Полезный тест: представьте, что отдаёте этот текст новому коллеге, который видит проект впервые. Сможет ли он сделать задачу без уточняющих вопросов?

Задача 1 Лёгкая

Переписать плохой промпт

Исходный промпт:

Плохо
Напиши авторизацию

Что получим: случайный язык, случайный фреймворк, хранение паролей «как получится». Перепишите промпт.

Показать решение Скрыть решение
Хорошо
Контекст: сайт на чистом PHP 8.3 без фреймворка, MySQL 8, PDO.
Таблица users уже есть: id, email (unique), password_hash, created_at.

Задача: напиши обработчик логина login.php, который принимает POST
с полями email и password и стартует сессию при успешном входе.

Ограничения:
- пароли проверять только через password_verify;
- запросы только подготовленные (prepared statements);
- после входа вызвать session_regenerate_id(true);
- при ошибке не сообщать, что именно неверно — email или пароль.

Формат: один файл целиком, комментарии на русском, без пояснений вне кода.

Каждая строка здесь убирает одно неверное предположение модели.

Задача 2 Лёгкая

Дать пример желаемого результата

Нужно, чтобы ИИ сгенерировал описания коммитов в стиле команды. Объяснять стиль словами долго и неточно.

Показать решение Скрыть решение

Покажите 2–3 примера. Модель отлично копирует формат по образцу:

Промпт с примерами
Сгенерируй сообщение коммита для диффа ниже в нашем стиле.

Примеры нашего стиля:
feat(auth): добавлен вход через Яндекс ID
fix(articles): приватные статьи больше не попадают в RSS
refactor(editor): вынесен рендер Markdown в отдельный сервис

Дифф:
<diff>
...вставьте дифф...
</diff>

Ответь только одной строкой сообщения.

Обратите внимание на теги <diff>...</diff>. Когда в промпте есть и инструкции, и данные (код, лог, документ), оберните данные в теги. Так модель не перепутает, где ваша просьба, а где содержимое файла.

Задача 3 Лёгкая

Попросить ревью кода, а не похвалу

Запрос «проверь мой код» часто даёт общие слова. Сформулируйте промпт так, чтобы получить конкретные замечания.

Показать решение Скрыть решение
Промпт для ревью
Ты — строгий ревьюер PHP-кода. Проверь функцию ниже.

Ищи в первую очередь:
1. Уязвимости (SQL-инъекции, XSS, небезопасная работа с сессией).
2. Ошибки, из-за которых код упадёт или вернёт неверный результат.
3. Только потом — стиль и читаемость.

Для каждой проблемы укажи: строку, что не так, почему это опасно,
исправленный фрагмент. Если проблем нет — так и напиши, не придумывай.

<code>
...ваш код...
</code>

Фраза «если проблем нет — так и напиши» важна: без неё модель склонна найти хоть что-нибудь.

Задача 4 Лёгкая

Разбить большую задачу на шаги

Промпт «сделай интернет-магазин» даёт поверхностный результат. Как получить качественный код для большого проекта?

Показать решение Скрыть решение
  1. Сначала попросите план, а не код: «Предложи структуру БД и список модулей. Код пока не пиши».
  2. Поправьте план — это дешевле, чем переписывать код.
  3. Дальше запрашивайте по одному модулю, каждый раз напоминая контекст: стек, принятые решения, уже готовые части.
  4. Для агентов вроде Claude Code сложите контекст в файл (CLAUDE.md, PROMPT.md). Агент перечитывает его и не «забывает» договорённости.
Шаг 1: только план
Я делаю каталог товаров на Laravel 12 + MySQL.
Нужны: категории с вложенностью, товары с характеристиками, фильтр.
Предложи схему таблиц и список классов (модели, контроллеры, сервисы).
Код не пиши. Если чего-то не хватает для решения — задай вопросы.
Задача 5 Лёгкая

Исправить ответ, а не начинать заново

ИИ выдал код, но он использует устаревший API. Что делать?

Показать решение Скрыть решение

Не пишите «неправильно, переделай»: так модель не понимает, что именно исправлять. Укажите конкретику:

Уточнение
Ты использовал mysql_query — эта функция удалена в PHP 7.
Перепиши на PDO с prepared statements. Остальную логику не меняй.

Если разговор ушёл далеко не туда, проще начать новый чат с улучшенным первым промптом, чем распутывать длинную ветку.

Шпаргалка

Вместо Пишите
«Сделай быстрее» «Время ответа сейчас 2 с, нужно меньше 200 мс. Узкое место — запрос на строке 40»
«Сделай красиво» «Bootstrap 5.3, карточки в 3 колонки, на мобиле в 1»
«Не работает» Текст ошибки, команда запуска, ожидаемое и фактическое поведение
«Напиши тесты» «Pest, покрой успешный вход, неверный пароль и заблокированного пользователя»

Итог

  • Модель знает только то, что написано в промпте. Контекст — главное.
  • Примеры работают лучше длинных объяснений.
  • Данные отделяйте от инструкций тегами.
  • Большие задачи: сначала план, потом код по частям.