Разработка с AI
Prompt Engineering: Искусство правильных вопросов
Два программиста используют ChatGPT для одной задачи. Один получает идеальный код за 2 минуты. Другой - мусор после часа мучений. Разница? Не в AI, а в промптах. Prompt engineering - это skill, который определяет твою продуктивность с AI.
- **'Напиши API'** vs **'Напиши REST API на FastAPI с JWT auth, rate limiting, OpenAPI docs'**
- **'Сделай быстрее'** vs **'Текущая сложность O(n²). Оптимизируй до O(n log n) используя...'**
- **Role matters:** 'Как security эксперт, найди уязвимости' даёт другой результат, чем просто 'проверь код'
- **Итерации:** Первый ответ редко идеален. Уточняй, строй на контексте.
Предварительные знания
GIGO: Качество входа = качество выхода
**Garbage In, Garbage Out (GIGO)** - фундаментальный принцип computing. Для AI он критичен: качество промпта определяет качество ответа.
**Формула хорошего промпта:** `Контекст + Задача + Constraints + Формат = Качественный ответ`
AI не читает мысли. Он работает с тем, что ты написал. Всё неявное - будет додумано случайным образом.
**Типичная ошибка:** Предполагать, что AI 'понимает' контекст. AI не знает твой проект, твои требования, твою инфраструктуру. Всё важное нужно сказать явно.
Промпт: 'Сделай авторизацию'. Что не так?
Контекст - это всё
**Контекст** - это информация о среде, в которой будет использоваться код. Чем точнее контекст, тем релевантнее ответ.
**Четыре слоя контекста:** 1. **Технический**: язык, фреймворк, версии, зависимости 2. **Архитектурный**: как код вписывается в систему 3. **Бизнес**: зачем это нужно, какую проблему решает 4. **Constraints**: производительность, безопасность, совместимость
| Что указать | Пример | Почему важно |
|---|---|---|
| Язык и версия | Python 3.11 | Синтаксис разный |
| Фреймворк | FastAPI | Разные паттерны |
| Зависимости | SQLAlchemy 2.0 | API меняется |
| Целевая среда | AWS Lambda | Ограничения |
| Объём данных | 1M записей | Performance |
| Уровень security | PCI DSS | Требования |
Ты просишь AI написать API endpoint. Что из контекста КРИТИЧНО указать?
Структурированные промпты
Хаотичный промпт → хаотичный ответ. **Структурированный промпт** помогает и тебе организовать мысли, и AI понять задачу.
**Шаблон CRISP:** **C**ontext - Где это будет использоваться? **R**ole - Кем должен быть AI? **I**nstructions - Что конкретно сделать? **S**pecifications - Какие требования/ограничения? **P**refernces - Формат, стиль, примеры?
**Альтернативные шаблоны:**
- **RACE**: Role, Action, Context, Expectations
- **STAR**: Situation, Task, Action, Result
- **Chain of Thought**: 'Думай пошагово, объясняя каждый шаг'
**Не переусердствуй:** Шаблоны помогают, но не делай промпт бюрократией. Для простых вопросов достаточно контекста и чёткой задачи.
Какой элемент CRISP чаще всего пропускают, хотя он критичен?
Итеративное уточнение
Редко первый промпт даёт идеальный результат. **Итеративное уточнение** - это нормальный процесс работы с AI.
**Стратегия уточнения:** 1. Начни с базового промпта 2. Оцени ответ: что хорошо, что нет? 3. Уточни конкретный аспект 4. Повтори пока не достигнешь цели
**Техники уточнения:**
- **'Измени X на Y'** — точечная правка
- **'Добавь обработку случая Z'** — расширение
- **'Объясни почему ты выбрал A, а не B'** — понимание
- **'Перепиши с учётом constraint C'** — рефакторинг
- **'Что может пойти не так?'** — проверка edge cases
**Важно:** Не начинай заново при каждой проблеме. AI помнит контекст диалога. Строй на предыдущем, уточняй, корректируй.
Нужно написать идеальный промпт с первого раза
Хороший результат достигается через итерации
Даже эксперты редко получают идеал с первой попытки. Итеративный процесс - это норма. AI помнит контекст, используй это.
AI сгенерировал функцию, но она не обрабатывает null. Как лучше уточнить?
Ключевые идеи
- **GIGO:** Качество промпта = качество ответа
- **Контекст критичен:** Язык, фреймворк, constraints, бизнес-требования
- **CRISP шаблон:** Context, Role, Instructions, Specifications, Preferences
- **Итерации нормальны:** Строй на предыдущем, уточняй конкретные аспекты
- **AI помнит контекст:** Используй это для эффективного уточнения
Куда дальше?
Промпты - это фундамент. Дальше - применение в конкретных сценариях:
- Code Review с AI — Как формулировать промпты для ревью кода
- AI для архитектуры — Промпты для обсуждения trade-offs
- Debugging с AI — Как описывать баги для эффективной помощи
Вопросы для размышления
- Вспомни последний неудачный промпт. Какого контекста не хватало?
- Попробуй CRISP шаблон для своей текущей задачи. Что изменилось?
- Как бы ты объяснил задачу новому коллеге? Это и есть хороший промпт.