Практические паттерны
Role-play, Constraints, Step-Back и другие
Проблема: Вы знаете Chain-of-Thought и Few-Shot, но повседневные задачи часто требуют более простых и целевых паттернов — назначение роли, ограничения или переформулировка вопроса.
Решение: 8 практических паттернов на каждый день
Эти паттерны — строительные блоки промпт-инженерии, маленькие переиспользуемые инструкции, которые ты добавляешь почти к любому запросу, чтобы управлять поведением модели. В отличие от тяжёлых методов вроде Chain-of-Thought или Few-Shot, каждый паттерн закрывает один конкретный сбой: Role-Playing включает нужные знания, говоря модели, кто она; Constraints фиксируют длину, формат и стиль, чтобы ответ можно было использовать как есть; Negative Instructions отсекают ошибки, которые ты видишь снова и снова; а Step-Back заставляет модель сначала назвать общий принцип, а уже потом разбирать частный случай.
Как это работает
Языковая модель предсказывает следующий токен (token) из всего, что есть в контексте, поэтому слова в промпте буквально сдвигают распределение вероятностей ответа. Роль вроде «Ты senior-инженер по безопасности» смещает модель к лексике, оговоркам и стилю рассуждения, которые в обучающих данных встречаются рядом с этой фразой — ты не даёшь ей новых знаний, а выбираешь область того, что она уже знает. Ограничения (constraints) работают так же: фраза «ответь ровно тремя пунктами, без вступления» делает эти токены гораздо вероятнее, чем растёкшееся эссе. Поэтому паттерны дёшевы и комбинируются — стоят несколько лишних токенов и складываются друг с другом. Главная ловушка — переограничение: навесишь десять правил, и модель начнёт часть терять, так что добавляй ограничения постепенно и оставляй только те, что реально меняют вывод. Негативные инструкции тоже могут сыграть против тебя, подсказывая запрещённое («не упоминай цену» как раз вставляет слово «цена»); лучше прямо описать желаемое поведение.
Разбор примера
Допустим, голый промпт «Проверь эту функцию» выдаёт расплывчатый, ободряющий абзац. Наслаиваем паттерны: роль («Ты senior-ревьюер на Go»), ограничение («перечисли максимум пять проблем по убыванию серьёзности, каждая в одну строку») и step-back («сначала сформулируй, что эта функция должна гарантировать, потом проверь её относительно этого»). Та же модель теперь выдаёт приоритизированное, конкретное ревью. Сначала освой каждый паттерн по отдельности, чтобы понимать, какой именно починил вывод, а потом комбинируй — именно эта привычка отличает надёжный промптинг от метода тыка.
Представьте это как набор инструментов, где у каждого своё назначение:
- 1. Role-Playing: Назначь экспертизу — "Ты senior-инженер"
- 2. Constraints: Задай границы — длина, формат, стиль
- 3. Step-Back: Начни с принципов, потом решай
- 4. Rephrase & Respond: Дай AI переформулировать для точности
Где это используется?
- Повседневный промптинг: Быстрые целевые улучшения любого промпта
- Создание контента: Роли + Ограничения для стабильного качества
- Код-ревью: Персона + Негативные инструкции для глубокого анализа
- Исследования: Step-Back + Emotion Prompting для глубоких инсайтов
Интересный факт: Исследования показывают, что эмоциональные призывы вроде "Это очень важно для моей карьеры" улучшают ответы LLM на 8-10% на некоторых задачах! Это называется EmotionPrompt.
Попробуйте сами!
Изучи каждый паттерн в интерактивном примере ниже и попробуй шаблоны промптов.
8 простых, но мощных паттернов для повседневной работы с LLM. Каждый решает конкретную проблему — выбери паттерн, чтобы узнать больше!
Role-Playing / Persona
Попроси модель "стать" экспертом в нужной области
Модель принимает роль и отвечает с точки зрения этого персонажа, используя соответствующие знания и стиль.
"Ты — senior разработчик с 15-летним опытом. Проведи код-ревью..."
SQL-запросы можно оптимизировать разными способами. Используйте индексы, избегайте SELECT *, оптимизируйте JOIN... (общие советы без глубины)
Как DBA с 15-летним стажем, рекомендую: 1) EXPLAIN ANALYZE — сначала профилируйте. 2) Покрывающие индексы снижают IO на 80%. 3) Для N+1 используйте batch loading. Пример: CREATE INDEX idx_orders_user ON orders(user_id) INCLUDE (total);
| Паттерн | Когда использовать | Сложность |
|---|---|---|
| Role-Playing / Persona | Экспертные задачи, консалтинг | 1/3 |
| Constraint Prompting | Форматирование, краткость | 1/3 |
| Negative Instructions | Контроль стиля, избежание ошибок | 1/3 |
| Step-Back Prompting | Обучение, концептуальное понимание | 2/3 |
| Directional Stimulus | Управление содержанием, ключевые темы | 2/3 |
| Graph Prompting | Анализ зависимостей, системное мышление | 3/3 |
| Emotion Prompting | Повышение качества, детализация | 1/3 |
| Rephrase and Respond | Неоднозначные вопросы, точность | 2/3 |
Эти паттерны — строительные блоки промптинга. Освой каждый по отдельности, а затем комбинируй их для максимального эффекта (см. урок "Комбинирование техник").
Частые вопросы
Что такое паттерны промптинга и зачем они нужны?
Паттерны промптинга — это короткие переиспользуемые инструкции, которые добавляются почти к любому запросу, чтобы управлять поведением модели. Каждый паттерн закрывает один конкретный сбой: роль (Role-Playing) включает нужную область знаний, ограничения (Constraints) задают длину, формат и стиль, негативные инструкции отсекают типовые ошибки, а Step-Back заставляет сначала назвать общий принцип. Они дёшевы, стоят несколько лишних токенов и легко комбинируются между собой.
Чем role-playing отличается от few-shot и chain-of-thought?
Few-shot и Chain-of-Thought — это тяжёлые методы: первый даёт модели несколько примеров, второй просит расписать рассуждение по шагам. Role-Playing и другие практические паттерны легче: они не добавляют новых знаний, а лишь смещают модель к нужной лексике и стилю. Роль вроде «Ты senior-инженер по безопасности» выбирает область того, что модель уже знает. Поэтому паттерны удобны для повседневных задач, где разворачивать полный few-shot избыточно.
Как правильно использовать ограничения (constraints) в промпте?
Указывай конкретные границы: длину, формат и стиль — например «ответь ровно тремя пунктами, без вступления». Такие слова делают нужные токены вероятнее и дают ответ, который можно использовать как есть. Главная ошибка — переограничение: если навесить десять правил, модель начнёт часть терять. Добавляй ограничения постепенно и оставляй только те, что реально меняют вывод.
Почему негативные инструкции в промпте иногда не работают?
Запрет может сыграть против тебя: фраза «не упоминай цену» сама вставляет в контекст слово «цена» и подсказывает модели именно то, что ты пытаешься исключить. Языковая модель предсказывает следующий токен из всего контекста, поэтому упомянутое слово становится вероятнее. Надёжнее описывать желаемое поведение в позитивной форме — что именно должна сделать модель, а не чего избегать.
Попробуй сам
Интерактивное демо этой техники
Объясни Docker для начинающего разработчика
Конечно! Отличный вопрос! Docker — это платформа контейнеризации, которая использует виртуализацию на уровне ОС с помощью cgroups и namespaces. Она позволяет упаковывать приложения в изолированные контейнеры для деплоя...
Docker — это "коробка" для вашего приложения. Представьте: вы переезжаете и упаковываете всю комнату в один контейнер — мебель, одежда, всё на месте. На новом месте вы открываете контейнер и всё работает как раньше.
Так же работает Docker: он упаковывает ваш код, библиотеки и настройки в один контейнер. Этот контейнер одинаково работает на вашем ноутбуке, у коллеги и на сервере.
Попробуйте: docker run -d -p 5432:5432 postgres — и база данных готова за 3 секунды.
Negative Instructions ("НЕ ДЕЛАЙ") часто эффективнее позитивных — они предотвращают конкретные ошибки, которые LLM допускает по умолчанию (жаргон, многословие, шаблонные фразы).
Создайте бесплатный аккаунт для решения челленджей
4 челленджей с AI-проверкой для этого урока
Этот урок — часть структурированного курса по LLM.
Мой путь обучения