Перейти к содержимому

Промпт-инжиниринг: как грамотно ставить задачи ИИ

Промпт-инжиниринг: как грамотно ставить задачи ИИ

Промпт-инжиниринг — это искусство разговаривать с ИИ так, чтобы получать именно то, что нужно. Не “поговори с ChatGPT”, а системный подход: правильная структура, контекст, техники.

Разница между плохим и хорошим промптом — это разница между джуном и сеньором. Один получает мусор, другой — работающий код с первого раза.

В 2026 году промпт-инжиниринг — это базовый навык разработчика. Без него ты используешь инструмент на 10% его мощности.

Хороший промпт состоит из четырёх компонентов:

Кто ты, что за проект, какой стек. ИИ не телепат — он знает только то, что ты ему сказал.

❌ Плохо:
"Добавь авторизацию"
✅ Хорошо:
"Я строю SaaS-дашборд на Next.js 15 (App Router), TypeScript,
Prisma + PostgreSQL, NextAuth v5. Нужно добавить OAuth через GitHub
с сохранением сессии в JWT."

Конкретное действие. Глагол в начале: напиши, исправь, рефактори, объясни, сравни.

❌ Плохо:
"Что-то не работает с API"
✅ Хорошо:
"Найди баг в функции fetchUserData() — она возвращает 401
при валидном токене. Вот код: [вставить]"

Скажи, что хочешь получить: код, список, таблицу, пояснение, или всё вместе.

✅ Примеры:
"Ответь кодом без объяснений"
"Дай список из 5 вариантов с плюсами и минусами"
"Объясни просто, как будто я не знаю TypeScript"
"Верни только изменённые строки, не весь файл"

Few-shot обучение: покажи ИИ один-два примера — он подхватит паттерн.

Переименуй переменные в camelCase:
user_name → userName
is_active → isActive
Теперь сделай то же для:
order_total, created_at, user_email

Попроси ИИ думать вслух перед ответом. Повышает качество на сложных задачах.

"Прежде чем написать код, объясни своё решение:
1. Как ты понял задачу?
2. Какой подход выбираешь и почему?
3. Есть ли альтернативы?
Потом пиши код."

Работает особенно хорошо для алгоритмических задач, архитектурных решений и отладки.

Задай ИИ роль — он начинает отвечать в соответствующем стиле и с нужным уровнем экспертизы.

"Ты — старший бэкенд-разработчик с 10 годами опыта
в highload-системах. Я покажу тебе мой API endpoint,
а ты найдёшь потенциальные проблемы под нагрузкой."
"Ты — техлид, проводишь code review. Будь жёстким:
укажи на все проблемы — производительность,
безопасность, читаемость."

Несколько примеров “вход → выход” вместо объяснений. ИИ понимает паттерн лучше чем длинные описания.

Конвертируй компоненты в новый формат:
БЫЛО:
export default function Button({ label }) {
return <button>{label}</button>
}
СТАЛО:
export const Button = ({ label }: { label: string }) => (
<button>{label}</button>
)
Теперь конвертируй: [вставить компонент]

Не пытайся получить идеальный результат с первого раза. Работай итерациями:

Итерация 1: "Напиши функцию аутентификации"
→ получаешь базовый вариант
Итерация 2: "Добавь обработку ошибок для expired token"
→ улучшаешь конкретный аспект
Итерация 3: "Сделай это асинхронным с retry логикой"
→ докручиваешь
Итерация 4: "Напиши тесты для edge cases"
→ покрываешь тестами
Я хочу создать [описание приложения].
Стек: Next.js 15, TypeScript, Tailwind, Prisma, PostgreSQL.
Целевая аудитория: [кто пользователи].
Создай:
1. Структуру папок и файлов
2. Базовые компоненты (layout, navbar, footer)
3. Prisma схему для основных моделей
4. Начальные страницы (главная, дашборд)
Фокус на минимальный рабочий вариант, без переусложнений.
Вот код из репозитория [ссылка/вставить].
Объясни что он делает, простым языком:
1. Что на входе, что на выходе?
2. Какие основные шаги?
3. Есть ли неочевидные части, на которые стоит обратить внимание?
Получаю ошибку: [текст ошибки]
Stack trace: [вставить]
Код функции: [вставить]
Окружение: Node 22, Next.js 15, PostgreSQL 17
Найди причину и предложи исправление.
Если нужна дополнительная информация — спроси.
Отрефактори этот код. Требования:
- НЕ меняй поведение функции
- Улучши читаемость
- Убери дублирование
- Добавь TypeScript типы где их нет
- Не усложняй: если что-то работает — не трогай
Код: [вставить]
Мне нужно [описать задачу].
Текущая архитектура: [описать].
Ограничения: [что нельзя менять].
Предложи 2-3 варианта решения с:
- Плюсами и минусами каждого
- Сложностью реализации (1-10)
- Рекомендацией и обоснованием
Потом подожди моего выбора перед тем как писать код.
❌ "Сделай приложение лучше"
✅ "Оптимизируй SQL-запрос в getUserDashboardData() —
сейчас выполняется 800мс, хочу < 100мс"
❌ "Как добавить авторизацию?"
✅ "Как добавить JWT авторизацию в Express 5 + MongoDB?"
❌ "Создай приложение для управления задачами: авторизация,
дашборд, CRUD для тасков, уведомления, темная тема,
экспорт в PDF, мобильная версия..."
✅ Разбей на шаги. Сначала схема БД и авторизация.
Потом CRUD. Потом UI. Потом дополнения.

ИИ помнит разговор только в пределах контекстного окна. Для длинных сессий:

"Суммируй что мы уже сделали в этом чате:
архитектура, принятые решения, текущее состояние кода.
Используй это как основу для следующих задач."

Всегда проверяй и уточняй. ИИ может ошибиться, использовать устаревшие паттерны или не учесть твой стек.

Если работаешь через API или настраиваешь Cursor — вынеси постоянные инструкции в системный промпт:

Ты — старший Full-Stack разработчик.
Стек проекта: Next.js 15, TypeScript strict, Prisma, PostgreSQL, Tailwind.
Всегда:
- Используй TypeScript с явными типами
- Предпочитай Server Components где возможно
- Обрабатывай ошибки явно (no silent fails)
- Пиши код с учётом масштабируемости
Никогда:
- Не используй any в TypeScript
- Не пиши сырые SQL запросы (только Prisma)
- Не предлагай устаревшие пакеты

Явные ограничения улучшают качество ответа:

Напиши React компонент. Ограничения:
- Только функциональный компонент
- Без useState если можно обойтись
- Без useEffect если не нужен side effect
- Без внешних зависимостей кроме React
- Максимум 50 строк

Попроси ИИ улучшить твой же промпт:

Вот мой промпт: [вставить промпт]
Улучши его так, чтобы получить более точный и качественный ответ.
Объясни что ты изменил и почему.
Создай Next.js 15 App Router API endpoint:
POST /api/tasks
Body: { title: string, priority: "low" | "medium" | "high" }
- Валидация через zod
- Сохранение в PostgreSQL через Prisma
- Возврат созданного объекта
- Обработка ошибок: 400 (невалидные данные), 500 (сервер)
- TypeScript типы
Функция должна возвращать уникальных пользователей из массива.
Вот код и тест который не проходит:
[код]
[тест]
[ошибка]
Найди баг. Покажи только исправленную строку.
Сделай code review этого PR.
Фокус: безопасность, производительность, читаемость.
Оцени каждую проблему: критичная / улучшение / нитпик.
Предложи конкретные исправления с кодом.
[diff]

Лучший способ прокачать промпт-инжиниринг — практиковаться систематически:

  1. Сохраняй рабочие промпты — создай личную библиотеку в Notion или просто в текстовом файле
  2. Анализируй что сработало — если получил хороший результат, пойми почему
  3. Экспериментируй с одной задачей — попробуй 3 разных промпта для одного и того же, сравни результаты
  4. Используй Cursor Rules — то что работает, перенеси в системные правила проекта

Промпт-инжиниринг — это мышца. Чем больше качаешь, тем меньше времени тратишь на итерации.