Учебник Промпт-инжиниринг для начинающих
Большие языковые модели мощные, но капризные: один и тот же вопрос, заданный по-разному, даёт результат от мусора до готового решения. Этот курс — про то, как формулировать запросы так, чтобы модель стабильно выдавала нужное. Мы разберём, почему формулировка вообще решает всё (через предсказание токенов), пройдём базовые техники (few-shot, роли, делимитеры), научимся управлять рассуждением (chain-of-thought, декомпозиция, self-consistency), получать строгий структурированный вывод (JSON, таблицы), бороться с галлюцинациями, а в конце соберём промпты как часть приложения: шаблоны, версионирование, тесты, защита от инъекций и оптимизация по токенам. Курс для разработчиков и продвинутых пользователей LLM. Везде — конкретные примеры «плохой промпт → хороший» с разбором, почему лучше.
Курс «Промпт-инжиниринг» состоит из 6 разделов и 25 уроков: Основы промптинга, Базовые техники, Рассуждение и декомпозиция, Структурированный вывод и контроль, Продвинутые паттерны и Практика и продакшн. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Основы промптинга
- Что такое промпт и почему формулировка решает всё
Промпт — это весь вход модели. Почему мелкая разница в формулировке меняет результат и как думать о промпте как об интерфейсе к LLM.
- Как LLM «понимает» инструкцию: предсказание токенов
Модель не исполняет инструкции, а предсказывает следующий токен. Что это значит для промптинга и почему контекст направляет вывод.
- Анатомия хорошего промпта
Пять кирпичей сильного промпта: роль, задача, контекст, формат вывода и ограничения. Разбор на примере плохой → хороший.
- Типичные ошибки и итеративная отладка промпта
Расплывчатость, противоречия, перегруз — главные ошибки промптинга. Как отлаживать промпт итеративно, меняя по одному фактору.
- Что такое промпт и почему формулировка решает всё
2 Базовые техники
- Zero-shot и few-shot: почему примеры работают
Разница между zero-shot и few-shot промптингом. Почему 2–3 примера в промпте резко повышают точность и формат ответа.
- Качество и подбор примеров
Какие примеры класть в few-shot: разнообразие, граничные случаи, сбалансированность классов, единый формат. Частые ошибки подбора.
- Роль и персона: system prompt
Что такое system prompt, чем он отличается от обычного сообщения и как роль/персона задаёт стиль, экспертизу и правила поведения модели.
- Формат вывода и делимитеры
Как явно задавать формат ответа и зачем отделять инструкции от данных делимитерами — для надёжности и защиты от промпт-инъекций.
- Zero-shot и few-shot: почему примеры работают
3 Рассуждение и декомпозиция
- Chain-of-thought: думай пошагово
Почему просьба рассуждать пошагово повышает точность на задачах с логикой и арифметикой. Механика chain-of-thought на примерах.
- Zero-shot CoT и few-shot CoT
Два способа включить пошаговое рассуждение: магическая фраза zero-shot CoT и примеры с рассуждениями few-shot CoT. Когда что выбирать.
- Декомпозиция сложных задач
Как разбивать большую задачу на подзадачи и решать их последовательными промптами. Цепочка вместо одного перегруженного запроса.
- Self-consistency и границы CoT
Self-consistency: несколько прогонов с голосованием за ответ. И обратная сторона — когда chain-of-thought не нужен или даже вреден.
- Chain-of-thought: думай пошагово
4 Структурированный вывод и контроль
- Строгий JSON и табличный вывод
Как заставить LLM возвращать валидный JSON по схеме: пример структуры, правила для пустых полей, «только JSON без пояснений».
- Контроль длины, стиля и отказов
Как управлять длиной и стилем ответа измеримо и как бороться с лишними оговорками, хеджированием и необоснованными отказами модели.
- Снижение галлюцинаций
Почему LLM выдумывают факты и как это снизить: заземление на контекст, разрешение говорить «не знаю», просьба ссылок и проверяемость.
- Краевые случаи и проверяемость
Как заранее описать поведение модели на пустом, неоднозначном и некорректном вводе и как делать вывод самопроверяемым.
- Строгий JSON и табличный вывод
5 Продвинутые паттерны
- Промпт-цепочки: выход → вход
Как строить пайплайны из промптов, где результат одного шага подаётся в следующий. Преимущества по сравнению с одним мегапромптом.
- ReAct: рассуждение и действия
Паттерн ReAct — чередование рассуждения и вызова инструментов (поиск, калькулятор, API). Как идея позволяет модели действовать, а не только говорить.
- Длинный контекст и мета-промптинг
Где размещать важное в длинном промпте (эффект середины), как структурировать большой контекст и что такое мета-промптинг.
- Few-shot для классификации и извлечения
Как применять few-shot для надёжной классификации и извлечения сущностей: фиксированные метки, единая разметка, краевые примеры.
- Промпт-цепочки: выход → вход
6 Практика и продакшн
- Промпт как часть приложения: шаблоны и переменные
Как собирать промпт из шаблона и переменных в коде. Запускаемый пример на Python: подстановка данных, разделение шаблона и контента.
- Версионирование и тестирование промптов
Почему промпт нужно версионировать и тестировать как код. Eval-наборы, метрики качества и регрессионные проверки при изменениях.
- Безопасность: инъекции и jailbreak
Промпт-инъекции и jailbreak: как пользовательский ввод перехватывает инструкции и какие приёмы защиты реально снижают риск.
- Токены, стоимость и переносимость моделей
Как промпт влияет на стоимость через токены, приёмы оптимизации и почему один промпт по-разному работает на разных моделях.
- Чек-лист хорошего промпта
Сводный чек-лист промпт-инжиниринга: от анатомии и примеров до формата, заземления, безопасности и тестов. Финальная памятка курса.
- Промпт как часть приложения: шаблоны и переменные