# Что такое промпт-инжиниринг
Промпт-инжиниринг — это методика составления запросов к языковым моделям.
От того, как ты сформулируешь вопрос, зависит качество ответа.
Плохой промпт дает размытый результат.
Хороший промпт задает контекст, уточняет формат и получает точный ответ.
Это не магия. Это понимание того, как модель обрабатывает текст, и умение с этим работать.
---
# Техническая основа: как это работает:
**Искусственный интеллект (ИИ)** — область компьютерной науки, где системы выполняют задачи, требующие человеческого интеллекта: распознают речь, анализируют изображения, принимают решения.
**Машинное обучение (ML)** — подраздел ИИ. Система учится на данных, а не по жестким правилам. Ты показываешь тысячи примеров, и она находит закономерности.
> [!example]- Пример:
> Загружаешь 10 000 фото кошек и собак с метками. Система анализирует признаки (уши, морда, размер) и учится различать животных без явных инструкций.
**Глубокое обучение (DL)** — подраздел ML. Использует многослойные нейронные сети. Каждый слой обрабатывает свой уровень информации.
> [!example]- Пример:
> Первый слой видит линии, второй — формы, третий — объекты, четвертый — лица. Так работает распознавание лиц в камере смартфона.
## Как работают языковые модели:
Языковая модель — это нейросеть, обученная на огромных объемах текста.
Она не «понимает» текст как человек.*Она предсказывает **вероятность** следующего слова на основе контекста.*
**Принцип работы:**
Ты пишешь: "Кошка сидит на..."
Модель анализирует контекст и вычисляет вероятности:
- "диване" — 35%
- "подоконнике" — 25%
- "стуле" — 20%
- "крыше" — 15%
- "двигателе" — 0.1%
Она выбирает слово с высокой вероятностью в данном контексте.
**Трансформеры** — архитектура нейросетей, лежащая в основе современных языковых моделей (GPT, Claude, Gemini). Ключевая особенность — механизм внимания (attention). *Модель оценивает, какие слова в тексте связаны между собой, даже если они далеко друг от друга.*
> [!example]- Пример:
> "Мария взяла книгу. Она была интересной."
> Модель понимает, что "она" относится к "книге", а не к "Марии", благодаря контексту.
> Это важно для промпт-инжиниринга: *модель учитывает весь твой запрос, а не только последние слова.*
---
# Основные принципы составления промптов:
> [!warning]- Проблемы ИИ:
>
> - Результат ИИ сильно зависит от того, насколько точно и чётко вы сформулируете запрос (промпт).
> - Модели ИИ обучаются на огромных объёмах данных и работают по принципу вероятностей — они не «думают» и не имеют интуиции как человек.
> - ИИ понимает только то, что вы ему ясно и прямо указываете, он не может догадываться или читать между строк.
### 1. **Контекст**:
Модель работает лучше, когда понимает ситуацию. ==Чем больше релевантной информации, тем точнее результат.==
*Плохо*:
```
Напиши статью про Python
```
*Хорошо*:
```
Напиши статью про использование Python для автоматизации рутинных задач. Аудитория — начинающие программисты с опытом 3-6 месяцев. Объем — 1500 слов. Включи 3 практических примера с кодом.
```
### 2. Конкретика:
Абстрактные формулировки дают абстрактные ответы. ==Уточняй детали.==
*Плохо:*
```
Как улучшить продуктивность?
```
*Хорошо:*
```
Я разработчик, работаю удаленно. Постоянно отвлекаюсь на уведомления и соцсети. Предложи 5 конкретных техник для фокусировки на задачах, которые можно применить сегодня.
```
### 3. Формат ответа:
Указывай желаемую структуру. Модель адаптирует стиль под запрос.
*Плохо:*
```
Расскажи про REST API
```
*Хорошо:*
```
Объясни REST API в формате:
1. Определение (1 абзац)
2. Ключевые принципы (список из 4 пунктов)
3. Пример GET-запроса с объяснением
4. Когда использовать REST, а когда нет (таблица)
```
### 4. Роль :
Задавай модели роль эксперта. Это меняет стиль и глубину ответа.
*Без роли:*
```
Объясни квантовые вычисления
```
*С ролью:*
```
Ты профессор физики с 20-летним опытом преподавания. Объясни квантовые вычисления студенту первого курса технического вуза. Используй аналогии из повседневной жизни.
```
### 5. Ограничения
Устанавливай рамки, чтобы избежать избыточности.
*Без ограничений:*
```
Напиши функцию сортировки на JavaScript
```
*С ограничениями:*
```
Напиши функцию сортировки массива чисел на JavaScript. Требования:
- Алгоритм: быстрая сортировка
- Без использования встроенного .sort()
- С комментариями к ключевым строкам
- Максимум 30 строк кода
```
>[!tip]- Советы по составлению промптов:
>- **Будьте релевантны и лаконичны:**
Указывайте только ту информацию, которая напрямую относится к задаче. Избегайте лишних деталей и водных слов, чтобы ИИ мог сфокусироваться на главном.
>
>- **Разбивайте сложные задачи**
Если ваш запрос содержит много данных или требует нескольких шагов, разделите его на несколько более мелких и управляемых этапов для последовательного выполнения.
>
>- **Стремитесь к интерактивности**
>Формулируйте промпты так, чтобы ИИ мог запрашивать дополнительную информацию или уточнения, если это необходимо, создавая динамический диалог.
---
# Техники промпт-инжиниринга:
### Zero-shot prompting
Модель решает задачу без примеров.
Подходит для простых запросов.
*Пример:*
```
Переведи на английский: "Я изучаю программирование уже полгода"
```
*Результат:*
```
I've been studying programming for six months
```
**Когда использовать:** ==для базовых задач== — перевод, простые объяснения, генерация идей.
### Few-shot prompting
Даешь модели несколько примеров нужного формата.
Она учится на них и применяет паттерн к новым данным.
**Пример:**
```
Преобразуй предложения в JSON-формат.
Пример 1:
Вход: "Иван купил яблоки в магазине"
Выход: {"действие": "купил", "объект": "яблоки", "место": "магазин", "субъект": "Иван"}
Пример 2:
Вход: "Мария читает книгу дома"
Выход: {"действие": "читает", "объект": "книгу", "место": "дома", "субъект": "Мария"}
Теперь преобразуй: Вход: "Петр пишет код в офисе"
```
*Результат:*
```
{"действие": "пишет", "объект": "код", "место": "в офисе", "субъект": "Петр"}
```
**Когда использовать:** ==когда нужен специфичный формат вывода или сложная структура ответа==.
### Chain-of-thought (цепочка рассуждений)
Просишь модель показать ход мыслей перед финальным ответом. ==Повышает точность в логических задачах.==
*Пример:*
```
Реши задачу пошагово:
У меня есть 3 яблока. Я купил еще 12 яблок.Затем съел 5 яблок и отдал половину оставшихся другу.
Сколько яблок у меня осталось?
Покажи каждый шаг вычисления.
```
*Результат:*
```
Шаг 1: Начальное количество = 3 яблока
Шаг 2: После покупки = 3 + 12 = 15 яблок
Шаг 3: После того как съел = 15 - 5 = 10 яблок
Шаг 4: Половина от 10 = 10 / 2 = 5 яблок (отдал другу)
Шаг 5: Осталось = 10 - 5 = 5 яблок Ответ: 5 яблок
```
**Когда использовать:** ==математические задачи, логические цепочки, отладка алгоритмов.==
### Self-consistency
Генеришь несколько ответов и выбираешь наиболее частый. Снижает вероятность ошибки.
*Пример*:
```
Реши задачу тремя разными способами и сравни результаты:
Задача: В комнате 4 угла. В каждом углу сидит кошка. Напротив каждой кошки по 3 кошки. Сколько всего кошек в комнате?
Способ 1: [логика]
Способ 2: [визуализация]
Способ 3: [математика]
Финальный ответ с обоснованием.
```
**Когда использовать:** ==критичные расчеты, проверка противоречивых данных.==
### ReAct (Reasoning + Acting)
Модель чередует рассуждения и действия. Подходит для многошаговых задач.
*Пример:*
```
Задача:
Найди информацию о последнем релизе Python и сравни его с предыдущей версией.
Процесс:
1.Рассуждение: Нужно узнать номер последнего релиза
2. Действие: [поиск информации]
3. Рассуждение: Теперь нужна информация о предыдущей версии
4. Действие: [поиск предыдущей версии]
5. Рассуждение: Есть данные, можно сравнивать
6. Действие: [составление сравнительной таблицы]
Выведи результат с объяснением каждого шага.
```
**Когда использовать:** ==исследовательские задачи, планирование проектов, анализ данных.==
### Tree of thoughts (дерево мыслей)
Модель исследует несколько путей решения параллельно, оценивает их и выбирает лучший.
**Пример:**
```
Задача:
Оптимизировать загрузку веб-страницы.
Рассмотри 3 варианта:
Вариант А: Оптимизация изображений
Вариант Б: Ленивая загрузка (lazy loading)
Вариант В: Минификация CSS/JS
Для каждого варианта:
1. Опиши реализацию
2. Оцени сложность (1-10)
3. Оцени эффект на производительность (1-10)
4. Укажи возможные риски
Выбери оптимальный вариант с обоснованием.
```
**Когда использовать:** ==принятие решений, архитектурный выбор, стратегическое планирование.==
# Типичные ошибки:
### Ошибка 1: Слишком общий запрос
*Плохо*:
```
Напиши код
```
Модель не знает язык, задачу, контекст.
*Хорошо:*
```
Напиши функцию на Python, которая принимает список чисел и возвращает список квадратов этих чисел.
Используй list comprehension.
```
### Ошибка 2: Противоречивые требования
*Плохо:*
```
Напиши подробную статью на 500 слов с глубоким анализом всех аспектов машинного обучения
```
500 слов не хватит для "подробного анализа всех аспектов".
*Хорошо:*
```
Напиши статью на 500 слов про линейную регрессию.
Фокус: основная идея, формула, один практический пример.
```
### Ошибка 3: Игнорирование формата
*Плохо:*
```
Расскажи про HTTP-методы
```
Получишь длинный текст неясной структуры.
*Хорошо:*
```
Опиши HTTP-методы в виде таблицы: | Метод | Назначение | Безопасный | Идемпотентный | Пример |
```
### Ошибка 4: Отсутствие контекста
*Плохо:*
```
Исправь этот код
[вставляешь код без объяснения, что он должен делать]
```
*Хорошо:*
```
Исправь этот код. Он должен сортировать массив по возрастанию, но сейчас выдает ошибку при пустом массиве.
[код]
```