# Что такое промпт-инжиниринг Промпт-инжиниринг — это методика составления запросов к языковым моделям. От того, как ты сформулируешь вопрос, зависит качество ответа. Плохой промпт дает размытый результат. Хороший промпт задает контекст, уточняет формат и получает точный ответ. Это не магия. Это понимание того, как модель обрабатывает текст, и умение с этим работать. --- # Техническая основа: как это работает: **Искусственный интеллект (ИИ)** — область компьютерной науки, где системы выполняют задачи, требующие человеческого интеллекта: распознают речь, анализируют изображения, принимают решения. **Машинное обучение (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: Отсутствие контекста *Плохо:* ``` Исправь этот код [вставляешь код без объяснения, что он должен делать] ``` *Хорошо:* ``` Исправь этот код. Он должен сортировать массив по возрастанию, но сейчас выдает ошибку при пустом массиве. [код] ```