Почему промпт-инжиниринг — главный навык вайбкодера
В вайбкодинге качество результата на 80% определяется качеством промпта. Одну и ту же задачу можно описать так, что AI выдаст нерабочий код, или так, что получится production-ready решение. Промпт-инжиниринг для кодинга — это навык, который отличает вайбкодера-любителя от вайбкодера-профессионала.
В этой статье собраны 15 техник, проверенных на реальных проектах. Каждая техника проиллюстрирована примерами «до» и «после» для наглядного сравнения.
Базовые техники
1. Указание технологического стека
Всегда явно указывайте технологии, версии и зависимости. AI-модель обучена на коде разных эпох и может генерировать устаревшие паттерны.
Плохо: «Создай API для управления пользователями»
Хорошо: «Создай REST API на FastAPI (Python 3.12) для управления пользователями. Используй Pydantic v2 для валидации, SQLAlchemy 2.0 с async-сессиями для работы с PostgreSQL. Формат ответов — JSON».
2. Описание структуры проекта
Если вы работаете с существующим проектом, опишите его структуру. В Claude Code это решается через CLAUDE.md, в Cursor — через .cursorrules.
Плохо: «Добавь новый эндпоинт в проект»
Хорошо: «В проекте используется следующая структура: src/routes/ для роутов, src/models/ для моделей SQLAlchemy, src/schemas/ для Pydantic-схем, src/services/ для бизнес-логики. Добавь эндпоинт GET /api/v1/analytics/dashboard, следуя этой структуре».
3. Примеры ввода-вывода
Один пример стоит тысячи слов. Покажите AI, какой результат вы ожидаете.
Плохо: «Создай функцию для форматирования дат»
Хорошо: «Создай функцию format_date, которая принимает datetime и возвращает строку. Примеры: format_date(datetime(2026, 2, 18, 14, 30)) → "18 февраля 2026, 14:30", format_date(datetime(2026, 1, 1)) → "1 января 2026, 00:00". Месяцы — на русском языке, в родительном падеже».
Продвинутые техники
4. Chain-of-Thought (пошаговое рассуждение)
Попросите AI-модель «думать вслух» перед генерацией кода. Это особенно полезно для сложных алгоритмов.
Пример: «Прежде чем писать код, опиши пошагово алгоритм: 1) какие данные нужны на входе, 2) какие промежуточные шаги, 3) какой результат на выходе. Затем реализуй этот алгоритм».
Эта техника заставляет модель структурировать решение перед кодированием, что снижает количество логических ошибок на 40-60%.
5. Role-Playing (ролевая игра)
Задайте AI конкретную роль с определённой экспертизой.
Пример: «Ты — senior Python-разработчик с 10-летним опытом в высоконагруженных системах. Ты пишешь чистый, типизированный код, всегда обрабатываешь ошибки и следуешь принципам SOLID. Создай сервис для обработки платежей…»
Ролевая игра задаёт «уровень качества» генерируемого кода. Без роли модель генерирует усреднённый код, с ролью — приближается к экспертному уровню.
6. Few-Shot с кодом проекта
Покажите AI фрагменты существующего кода проекта как образец стиля.
Пример: «Вот пример существующего сервиса в проекте: [вставляете код UserService]. Создай аналогичный OrderService, следуя тому же паттерну: наследование от BaseService, использование репозитория через DI, логирование через structlog».
В Claude Code и Cursor AI-агент может сам читать файлы проекта, но явное указание образца ускоряет работу и гарантирует соответствие стилю.
7. Негативные ограничения
Укажите, чего делать НЕ нужно. Это предотвращает типичные ошибки AI.
Пример: «Создай функцию парсинга HTML. НЕ используй регулярные выражения для парсинга HTML — используй BeautifulSoup. НЕ перехватывай исключения молча (bare except). НЕ хардкодь URL — принимай его как параметр».
Негативные ограничения особенно полезны, если вы знаете типичные ошибки модели на вашем типе задач.
8. Декомпозиция задачи
Разбивайте сложные задачи на подзадачи и решайте их последовательно.
Плохо: «Создай полноценный чат-бот для Telegram с авторизацией, базой данных и административной панелью»
Хорошо: Последовательность промптов:
- «Создай базовую структуру Telegram-бота на aiogram 3.x с обработкой команд /start и /help»
- «Добавь подключение к PostgreSQL через SQLAlchemy. Модели: User (id, telegram_id, username, created_at)»
- «Добавь middleware для авторизации: проверка telegram_id в таблице users»
- «Создай административный интерфейс на Flask-Admin для управления пользователями»
9. Контекстное окно — используйте его правильно
AI-модели имеют ограниченный контекст. Не загружайте в промпт весь проект — давайте только релевантную информацию.
Советы:
- Включайте в промпт только файлы, которые непосредственно затрагиваются задачей
- Используйте резюме для больших файлов: «В файле database.py есть функция get_connection(), которая возвращает async connection pool»
- В Claude Code используйте CLAUDE.md для постоянного контекста
10. Запрос тестов вместе с кодом
Всегда просите AI генерировать тесты вместе с основным кодом. Это улучшает качество обоих.
Пример: «Создай функцию validate_email и юнит-тесты к ней. Тесты должны покрывать: валидный email, невалидный формат, пустая строка, email с кириллическими символами, email длиной > 254 символов».
Когда AI пишет тесты одновременно с кодом, он лучше продумывает граничные случаи и обработку ошибок.
Экспертные техники
11. Meta-Prompting (промпт для создания промптов)
Используйте AI для генерации оптимальных промптов.
Пример: «Я хочу создать систему автоматической генерации SEO-контента. Составь детальный промпт, который я должен дать AI-ассистенту для создания такой системы. Промпт должен включать: описание архитектуры, технический стек, ограничения, критерии успеха».
Meta-prompting особенно полезен, когда вы не знаете, как правильно сформулировать сложную задачу. AI помогает структурировать ваши мысли.
12. Итеративное уточнение
Вместо одного идеального промпта используйте серию уточняющих промптов.
Последовательность:
- «Создай базовую версию» — получаете MVP
- «Добавь обработку ошибок» — улучшаете надёжность
- «Оптимизируй запросы к БД» — улучшаете производительность
- «Добавь логирование» — улучшаете наблюдаемость
- «Рефакторинг: выдели общую логику в базовый класс» — улучшаете архитектуру
Каждая итерация фокусируется на одном аспекте, что даёт лучший результат, чем попытка учесть всё сразу.
13. Архитектурные промпты
Для сложных систем начинайте с промпта об архитектуре, а не о коде.
Пример: «Опиши архитектуру системы мониторинга цен конкурентов. Компоненты: сборщик данных (crawler), хранилище (database), анализатор (analyzer), уведомлятель (notifier). Для каждого компонента укажи: ответственность, интерфейс (входы/выходы), технологию. Код пока не пиши».
После утверждения архитектуры переходите к реализации каждого компонента отдельно.
14. Промпты для отладки
Когда код не работает, правильный промпт для отладки экономит часы.
Пример: «Вот код [вставляете код]. Вот ошибка [вставляете traceback]. Проанализируй: 1) Что именно вызывает ошибку. 2) Почему это происходит (root cause). 3) Как исправить. 4) Как предотвратить подобные ошибки в будущем. Покажи исправленный код».
Структурированный промпт для отладки заставляет AI анализировать причину, а не просто «заглушать» ошибку.
15. Self-Reflection (самопроверка)
Попросите AI проверить собственный код на ошибки.
Пример: «Вот код, который ты сгенерировал. Проведи code review: 1) Есть ли логические ошибки? 2) Есть ли уязвимости безопасности (SQL injection, XSS, SSRF)? 3) Обрабатываются ли все граничные случаи? 4) Можно ли упростить код без потери функциональности? Исправь найденные проблемы».
Self-reflection выявляет 20-30% ошибок, которые модель допустила при первоначальной генерации.
Шаблоны промптов для типовых задач
Шаблон для API-эндпоинта
«Создай [HTTP метод] [путь] эндпоинт на [фреймворк]. Принимает: [параметры с типами]. Возвращает: [формат ответа с примером]. Валидация: [правила]. Ошибки: [коды и описания]. Авторизация: [тип]. Следуй паттерну из [файл-образец]».
Шаблон для скрипта автоматизации
«Создай Python-скрипт, который [действие]. Входные данные: [источник и формат]. Обработка: [шаги]. Выходные данные: [формат и место сохранения]. Обработка ошибок: [стратегия]. Логирование: [уровень детализации]. Запуск: [как часто, через что]».
Шаблон для фронтенд-компонента
«Создай React-компонент [название]. Props: [список с типами]. Состояние: [описание]. Поведение: [описание взаимодействий]. Стили: [подход — CSS modules / Tailwind / styled-components]. Доступность: [требования a11y]».
Типичные ошибки промптинга
Ошибка: слишком длинный промпт
Промпт на 2000 слов с подробностями обо всём — это не всегда лучше, чем краткий и чёткий. AI-модель может «потерять» важные детали в потоке текста.
Решение: Разбивайте на несколько промптов. Один промпт — одна задача.
Ошибка: отсутствие контекста о существующем коде
Если вы просите «добавь фичу», но не показываете существующий код, AI создаст решение, несовместимое с вашим проектом.
Решение: Используйте CLAUDE.md или .cursorrules для постоянного контекста. Для конкретных задач — ссылайтесь на файлы.
Ошибка: принятие первого результата
AI-генерируемый код часто работает, но не оптимален. Если принимать первый результат, качество кодовой базы будет деградировать.
Решение: Всегда делайте хотя бы одну итерацию рефакторинга и попросите AI провести self-review.
Выводы
- Промпт-инжиниринг — это навык, который развивается с практикой. Начните с базовых техник (стек, примеры, структура) и постепенно осваивайте продвинутые (chain-of-thought, meta-prompting, self-reflection).
- Указание технологического стека и ограничений — самое простое и эффективное улучшение промптов. Это одна строка, которая кардинально меняет результат.
- Декомпозиция задачи на подзадачи даёт лучший результат, чем один огромный промпт. AI работает лучше с фокусированными задачами.
- Few-shot примеры с кодом из вашего проекта гарантируют соответствие стилю и архитектуре.
- Self-reflection — обязательная финальная техника. Попросите AI проверить собственный код перед тем, как принять результат.
