Разница между «AI выдал мусор» и «AI написал production-ready код» — это качество промпта. Промпт-инженерия для разработки — не про магические формулировки. Это навык декомпозиции, контекстуализации и итерации. И этот навык можно освоить системно.
Почему большинство промптов не работают
Типичный промпт начинающего: «Напиши мне интернет-магазин». AI честно пытается — и выдаёт 500 строк кода, который компилируется, но не работает как ожидается. Проблема не в модели, а в запросе. Вы бы не сказали подрядчику «построй мне дом» без чертежей, спецификаций и бюджета. AI — тот же подрядчик, только быстрее.
Исследования показывают, что 73% промптов от начинающих разработчиков слишком абстрактны: нет контекста, нет ограничений, нет примеров ожидаемого результата. AI заполняет пробелы своими предположениями — и эти предположения редко совпадают с вашим видением.
Анатомия хорошего промпта
Каждый эффективный промпт для разработки состоит из четырёх элементов. Пропуск любого из них снижает качество результата.
1. Контекст (Context)
Что уже существует? Какой стек? Какая архитектура? AI должен понимать, в какую среду вписывается новый код. «Напиши компонент на React» — плохо. «Напиши React-компонент для Next.js 14 App Router, используя TypeScript, Tailwind CSS и Prisma ORM для работы с PostgreSQL» — уже конкретика.
Контекст включает: технологический стек, структуру проекта, существующие паттерны, версии ключевых зависимостей. Чем больше контекста — тем меньше AI придумывает от себя.
2. Задача (Task)
Что именно нужно сделать? Не «авторизацию», а «JWT-авторизацию с access/refresh токенами, где access token живёт 15 минут, refresh — 7 дней, с возможностью отзыва refresh token при смене пароля». Конкретика в задаче — конкретика в результате.
3. Ограничения (Constraints)
Что нельзя делать? Какие границы? «Не используй any в TypeScript», «Все данные валидируются через zod», «Максимум 100 строк на файл», «Никаких внешних зависимостей кроме указанных». Ограничения — это рамки, которые не дают AI уйти в сторону.
4. Примеры (Examples)
Покажите, как должен выглядеть результат. Один пример стоит десяти описаний. Если вы хотите определённый стиль кода, покажите фрагмент. Если хотите определённую структуру API — дайте образец response. AI обучен на паттернах и отлично их повторяет.
Декомпозиция: ключевой навык
Большая задача = плохой результат. Это правило промпт-инженерии. AI лучше справляется с маленькими, чётко определёнными задачами, чем с одним огромным запросом.
Плохой подход: один промпт на всё
«Создай полное приложение для управления задачами с авторизацией, dashboard, drag-and-drop, уведомлениями, мобильной версией и деплоем на Vercel». Результат — каша из 2000 строк, которая не работает и не поддерживается.
Хороший подход: цепочка промптов
- Промпт 1: «Спроектируй схему базы данных для task manager с пользователями, проектами и задачами. Используй Prisma schema.»
- Промпт 2: «На основе этой схемы создай API routes для CRUD операций с задачами. Next.js App Router, TypeScript.»
- Промпт 3: «Создай React-компонент TaskBoard, который отображает задачи в колонках по статусу. Данные получай через fetch из API.»
- Промпт 4: «Добавь drag-and-drop к TaskBoard, используя @dnd-kit. При перетаскивании обновляй статус через API.»
- Промпт 5: «Добавь JWT-авторизацию. Middleware для проверки токена на API routes. Login page.»
Каждый промпт — маленький, конкретный, проверяемый. Вы видите результат каждого шага и можете скорректировать направление до того, как накопятся ошибки.
Типичные ошибки в промптах
Ошибка 1: Слишком абстрактно
«Сделай красиво» — не промпт. «Используй Tailwind: тёмная тема, #12121A для карточек, #FF6B35 для акцентов, Manrope для текста, 8px border-radius, 1px solid border с цветом #1E1E2E» — промпт. AI не читает мысли, он читает инструкции.
Ошибка 2: Противоречивые требования
«Сделай минималистично, но с множеством анимаций, простой интерфейс с продвинутыми функциями, быстро загружающийся с тяжёлыми библиотеками». Противоречия путают модель. Выберите приоритеты и укажите их явно.
Ошибка 3: Игнорирование итерации
Первый результат AI почти никогда не идеален. Это черновик, а не финальная версия. Промпт-инженерия — итеративный процесс: сгенерировали → проверили → уточнили → повторили. Ожидание идеального результата с первого раза — путь к разочарованию.
Ошибка 4: Нет отрицательных примеров
Показать, чего НЕ хотите — так же важно, как показать, что хотите. «Не используй useEffect для fetch — только server components или React Query», «Не пиши inline styles — только Tailwind classes». Отрицательные ограничения сужают пространство решений.
Продвинутые техники
Chain of Thought (Цепочка рассуждений)
Попросите AI сначала проанализировать задачу, потом составить план, и только потом писать код. «Прежде чем писать код, перечисли: 1) какие компоненты нужны, 2) как они взаимодействуют, 3) какие edge cases возможны. Затем напиши код.» Это заставляет модель «думать» перед генерацией — и результат значительно лучше.
Few-Shot Prompting (Примеры)
Дайте 2-3 примера существующего кода из вашего проекта. AI подстроит стиль, naming conventions, структуру файлов. Это работает лучше любых словесных описаний стиля.
Role Prompting (Роль)
«Ты — senior TypeScript разработчик, который пишет production-grade код с полной типизацией, error handling и тестами.» Назначение роли меняет «уровень» генерируемого кода. Это не магия — это активация определённых паттернов в модели.
Constraint Prompting (Ограничения)
Установите жёсткие рамки: «Только стандартная библиотека, никаких npm-пакетов», «Максимум 50 строк», «Используй только функциональные компоненты». Ограничения парадоксально улучшают качество — модель не может «схалтурить» громоздким решением.
Сравнение: плохой vs хороший промпт
«Напиши форму регистрации»
Хороший промпт:
«Создай форму регистрации для Next.js 14 App Router. TypeScript. Поля: email (валидация), пароль (мин. 8 символов, заглавная, цифра), имя. Используй react-hook-form + zod для валидации. Server Action для сабмита. Стили: Tailwind, тёмная тема. При успехе — redirect на /dashboard. При ошибке — показать inline error. Компонент максимум 80 строк, вынеси schema и action в отдельные файлы.»
Разница в результате — колоссальная. Плохой промпт даст HTML-форму без валидации. Хороший — production-ready компонент с типизацией, валидацией и обработкой ошибок.
Промпт-шаблоны для частых задач
- API endpoint: «Создай [метод] /api/[ресурс] endpoint. Input: [формат]. Output: [формат]. Валидация через zod. Error handling: [коды]. Auth: [тип].»
- React-компонент: «Компонент [имя] для [цель]. Props: [список]. Состояние: [что отслеживать]. Стили: [подход]. Accessibility: [требования].»
- Database migration: «Добавь [что] в схему. Отношение: [тип]. Индексы: [какие]. Default values: [значения]. Миграция без потери данных.»
- Тест: «Напиши тесты для [модуль]. Happy path: [сценарии]. Edge cases: [сценарии]. Error cases: [сценарии]. Mock: [что замокать].»
- Рефакторинг: «Отрефактори [что]. Проблема: [описание]. Цель: [метрика]. Ограничения: [что не менять]. Сохрани API совместимость.»
Промпт-инженерия как навык разработчика
Промпт-инженерия — это не замена программированию. Это усилитель. Разработчик, который понимает архитектуру, паттерны и best practices, напишет промпт, который выдаст production-ready код. Новичок без этих знаний получит от AI тот же результат, что получил бы от Stack Overflow: рабочий пример без понимания контекста.
В BRIQ.TEAM промпт-инженерия — не отдельный модуль, а способ мышления, который проходит через весь курс. Каждый проект начинается с промпта, каждый промпт анализируется ментором. За 2 месяца навык декомпозиции и формулировки становится автоматическим.