Представьте, что вы даёте задание дизайнеру:
“Сделай красиво.”
Что именно нужно сделать? Какой стиль? Какие цвета? Формат — картинка, слайд, плакат? Без контекста — слишком много вариантов. Так же и с LLM. Чем четче и структурнее вы формулируете промпт, тем лучше результат.
В этом уроке вы научитесь:
- строить понятные, управляемые промпты;
- использовать типовые конструкции, которые воспринимаются LLM надёжно;
- и избегать ошибок, которые приводят к “расплывчатым” или бессмысленным ответам.
📌 Пример: вы хотите, чтобы модель написала e-mail. Но вместо “Напиши письмо” вы скажете: “Напиши деловое письмо для клиента, в котором сообщается об успешной доставке заказа #4532. Используй вежливый тон, упомяни дату доставки, добавь подпись менеджера.”
Вероятность получить нужный результат растёт в разы — благодаря правильной структуре промпта.
Что вы узнаете в рамках статьи
- Что входит в хорошую структуру промпта
- Почему важно давать контекст, а не просто команду
- Как работают zero-shot, few-shot и chain-of-thought промпты
- Когда полезна self-reflection стратегия
- Какие ошибки чаще всего встречаются и как их избежать
🧩 Ключевые термины
- Контекст — дополнительная информация, которая помогает модели “понять” ситуацию или роль.
- Инструкция — чёткая команда, что нужно сделать.
- Примеры (few-shot) — образцы входа и желаемого выхода.
- Формат вывода — ожидаемый стиль, структура или тип данных.
- Zero-shot — промпт без примеров.
- Few-shot — промпт с 1–3 примерами.
- Chain-of-thought — подход, при котором модель генерирует пошаговые размышления.
- Self-reflection — приём, где модель оценивает и уточняет свой собственный ответ.
📐 Формула хорошего промпта — подробно и на аналогиях
1. Контекст — «где мы и кто мы»
Аналогия: GPS-координаты для таксиста Если вы просто скажете «Подвезите меня домой», водитель будет гадать, какой это район и как туда доехать. Назовите точный адрес — и маршрут построен верно с первой попытки.
Что даёт контекст LLM-у:
- задаёт роль модели («ты — SMM-специалист», «ты — наставник по SQL»);
- описывает аудиторию и цель (молодёжный бренд, HR-отчёт для руководства);
- ограничивает «вселенную» фактов, чтобы снизить галлюцинации.
2. Инструкция — «что именно нужно сделать»
Аналогия: кнопка «режим» на микроволновке Указывая мощность и время, вы говорите прибору как разогревать еду. Без этого он выберет случайный режим.
Хорошая инструкция:
- начинается с глагола действия («напиши», «сравни», «проанализируй»);
- содержит минимально необходимую детализацию («в 3 абзацах», «используй список»);
- включает оговорки типа «если данных нет — скажи об этом».
3. Примеры (Few-shot) — «покажи и повтори»
Аналогия: образцовая строка в таблице Когда бухгалтер видит заполненный образец, риск ошибки в формате сразу падает.
Почему пара примеров творит чудеса:
| Ситуация | Без примеров | С примерами |
|---|---|---|
| Перевод терминов | Может подобрать не тот оттенок | Подстраивается под показанный глоссарий |
| Генерация кода | Использует «любимый» стиль скобок | Клонирует ваш стиль и именования |
| Заголовки статей | Слишком креативно/сухо | Держит нужный тон |
💡 Совет: примеры должны быть короткими и типичными, иначе они «съедят» контекстное окно.
4. Формат вывода — «как упаковать результат»
Аналогия: коробка нужного размера Курьер спросит: «Упаковать подарок в бумагу или положить в пакет?» Если не ответить — решит сам.
- Чётко задавайте тип (JSON, таблица Markdown, абзац текста).
- Ограничивайте длину (до 300 символов, не более пяти пунктов).
- Для машинной обработки перечисляйте ключи строго («title», «description», «cta»).
🔗 Вся цепочка в действии
| Шаг | Пример для поста о летней коллекции |
|---|---|
| Контекст | «Ты — SMM-специалист молодёжного бренда уличной одежды». |
| Инструкция | «Напиши продающий пост для Instagram, подчёркивая лёгкость и яркость новой коллекции». |
| Пример | «Лето уже здесь — а ты готов к жаре? Встречай наш свежий дроп!» |
| Формат | «До 300 символов, энергичный стиль, 2–3 эмодзи, один хэштег #FreshDrop». |
Что получает модель? Чёткий «бриф»: кто говорит, с какой целью, в какой манере и в каком виде должен быть результат.
🛑 Типичные промахи и быстрые фиксы
| Ошибка | Как выглядит | Как исправить |
|---|---|---|
| Нет контекста | «Сделай презентацию». | Добавьте «для инвесторов FinTech-стартапа, 10 слайдов». |
| Расплывчатая инструкция | «Оптимизируй код». | Уточните: «сократи сложность, избегая сторонних библиотек». |
| Отсутствие формата | Ожидали JSON, получили эссе. | Явно требуйте: {"title": "...", "body": "..."}. |
| Слишком длинные примеры | Переполняют окно контекста. | Оставьте 1-2 ключевых строки. |
🔄 Типы промптов: как выбирать способ общения с моделью
Представьте, что вы даёте задание разным людям. Одному достаточно сказать "сделай", другому нужно показать пример, а третьему — сначала объяснить логику. Точно так же и с языковыми моделями: они могут работать в разных режимах, и от того, как вы подадите запрос, зависит результат.
В промпт-инжиниринге принято выделять несколько типов промптов, каждый из которых решает свою задачу:
- Zero-shot — когда вы просто формулируете задание без примеров;
- Few-shot — когда добавляете 1–2 образца для ориентира;
- Chain-of-thought — когда просите рассуждать пошагово;
- Self-reflection — когда модель проверяет и уточняет свой собственный ответ.
Эти подходы не конкурируют между собой — они дополняют друг друга. В зависимости от цели и сложности задачи, вы можете выбрать наиболее подходящий формат. Далее разберём каждый из них подробнее.
🔹 Zero-shot: “Сделай без примеров”
Zero-shot промпт — это самый простой и быстрый способ взаимодействия с моделью. Вы просто даёте инструкцию, не приводя примеров, шаблонов или пояснений. Модель сама пытается понять, что вы хотите, и выдать результат на основе общих знаний, полученных при обучении.
📌 Пример: Промпт: «Переведи на испанский: Добро пожаловать в наш магазин!» Ответ: «¡Bienvenidos a nuestra tienda!»
📚 Аналогия: попросить официанта без уточнений
Представьте, что вы пришли в кафе и сказали:
«Принесите что-нибудь вкусное.»
Если повар опытный — он догадается и принесёт популярное блюдо. Но если вы добавите уточнения («вегетарианское», «без специй», «на завтрак») — шанс получить именно то, что вы хотите, будет выше.
Так и с LLM: zero-shot — это как общая просьба, надеющаяся на интуицию модели. Она «угадывает» ваш смысл, но не всегда точно попадает в ожидания.
🧠 Как модель обрабатывает zero-shot
Модель полагается на то, что уже “читала” в процессе обучения. Она не знает, как именно вы хотите получить результат, но делает выводы из огромного корпуса текстов, диалогов, статей и переводов.
💡 Zero-shot лучше всего работает, когда:
- задача однозначна (например, перевод, пересказ, извлечение сущностей);
- результат имеет общеизвестную структуру (например, список, вопрос-ответ, описание товара);
- важна скорость взаимодействия (например, чат-бот для коротких ответов).
✅ Примеры zero-shot промптов
| Задача | Промпт | Ожидаемый результат |
|---|---|---|
| Перевод | Переведи на английский: "Мне нравится учиться" | I like studying |
| Краткое описание | Сформулируй краткое описание товара — кофеварка. | Компактная кофеварка на 2 чашки с функцией автоматического отключения |
| Продолжение | Продолжи текст: «Однажды в тёмном лесу…» | я услышал шорох, и кто-то вышел из тени |
⚠️ Ограничения zero-shot
Несмотря на простоту, zero-shot может:
- приводить к неоднозначным формулировкам, особенно в сложных задачах;
- игнорировать формат, если вы не уточнили явно;
- не удерживать стиль, если не указана цель и аудитория.
📉 Пример ошибки: Промпт: «Напиши деловое письмо» Ответ: слишком неформальное или чрезмерно длинное письмо — модель не знала, кому и зачем писать.
🔧 Как усилить zero-shot без перехода к few-shot
Чтобы получить более точный ответ, вы можете:
-
Добавить контекст:
“Ты — помощник по маркетингу. Составь слоган для весенней коллекции.”
-
Уточнить формат:
“Ответь в виде списка из 5 пунктов.”
-
Указать ограничения:
“Используй не больше 20 слов. Без эмодзи.”
Таким образом, вы остаетесь в рамках zero-shot, но делаете промпт управляемым.
🔸 Few-shot: “Вот пример — повтори по шаблону”
Few-shot prompting — это метод, при котором вы не просто даёте задание, а ещё и показываете модели 1–3 примера, как должен выглядеть ответ. Это позволяет точнее управлять форматом, стилем и логикой генерации.
📌 Пример:
Q: What is the capital of France? A: Paris Q: What is the capital of Germany? A:Модель “видит” структуру и выдаёт:
A: Berlin
📚 Аналогия: обучение через образец
Представьте, что вы обучаете ассистента оформлять отчёты. Вместо того чтобы объяснять правила словами, вы просто даёте ему уже готовый шаблон:
«Вот так надо делать. Продолжи по этому образцу.»
Точно так же работает и few-shot: вы не описываете правила, а показываете результат, на который стоит равняться.
🧠 Как модель воспринимает few-shot
LLM не «запоминает» примеры как правило. Она ищет в них шаблоны:
- порядок слов,
- стиль написания,
- формат ответа,
- форму представления данных (таблица, JSON, маркированный список).
И дальше пытается продолжить в том же стиле.
🔧 Когда few-shot особенно полезен
| Сценарий | Почему работает |
|---|---|
| Генерация кода | Модель понимает, какой синтаксис и стиль оформления нужен |
| Имитация стиля | Модель “впитывает” манеру речи, тональность, структуру |
| Заполнение форм | Можно задать чёткий шаблон — и получить аналогично оформленные блоки |
| Работа с JSON/XML | Модель копирует структуру, не забывает запятые и кавычки |
✅ Примеры few-shot промптов
💬 Перевод:
Translate the following sentences into German:
Q: Hello!
A: Hallo!
Q: How are you?
A:
→ A: Wie geht’s dir?
🔠 Генерация словаря:
Q: Define the word "curiosity"
A: A strong desire to know or learn something.
Q: Define the word "resilience"
A:
→ A: The capacity to recover quickly from difficulties; toughness.
🧾 Ответы в формате JSON:
Input: "I need to book a table for 2 on Friday at 7 PM."
Output:
{
"action": "book_table",
"people": 2,
"day": "Friday",
"time": "7 PM"
}
Input: "Reserve a spot for 4 people on Saturday at noon."
Output:
→ Модель продолжает структуру в том же формате.
⚠️ Что может пойти не так
- Слишком длинные примеры → уменьшается доступный контекст.
- Смешанные стили → модель не понимает, какой из них воспроизводить.
- Слишком сложные примеры без пояснений → возможны сбои.
💡 Совет: выбирайте короткие, репрезентативные примеры и следите за их единообразием.
📊 Few-shot против zero-shot: в чём разница
| Характеристика | Zero-shot | Few-shot |
|---|---|---|
| Простота | + | − |
| Предсказуемость | − | + |
| Гибкость | − | + |
| Использование токенов | мало | больше |
| Подходит для нестандартных задач | не всегда | да |
🧠 Chain-of-thought: “Думай по шагам”
Иногда, чтобы получить правильный ответ от модели, недостаточно просто задать вопрос. Нужно попросить её подумать вслух — разбить задачу на шаги, проговорить ход рассуждений и только потом выдать результат. Такой подход называется Chain-of-thought (CoT) — «цепочка рассуждений».
📌 Пример: Промпт: “Реши пошагово: если у Пети было 12 яблок, он отдал 3 Маше, а затем поделил остаток на 3 друга, сколько получил каждый?”
Ответ модели с CoT:
У Пети было 12 яблок. Он отдал 3 Маше → осталось 9. 9 / 3 = 3 яблока на каждого. Ответ: 3
📚 Аналогия: решение задачи на черновике
Вспомните школьную математику. Если вы просто пишете в контрольной “Ответ: 3”, учитель может снизить балл. Почему? Потому что не видно, как вы пришли к выводу. А если вы распишете:
12 - 3 = 9
9 / 3 = 3
Ответ: 3
— видно, что вы понимаете, а не угадали.
Chain-of-thought делает то же самое: модель объясняет сама себе, прежде чем ответить.
🧠 Как это работает
LLM умеет “размышлять”, но по умолчанию она стремится к краткости. Если вы не попросите, она может сразу прыгнуть к финальному ответу — и ошибиться.
Добавив фразу “Решай пошагово”, “Подумай прежде, чем отвечать”, или “Поясни свой вывод”, вы включаете внутренний диалог модели. Это резко повышает точность в сложных задачах.
✅ Где особенно полезен CoT
-
Логика и дедукция:
“Если А больше В, а В больше С, то кто самый маленький?”
-
Математика и проценты:
“В магазине была скидка 25% на товар за 800 рублей. Сколько он стоит со скидкой?”
-
Пошаговый анализ текста:
“Прочитай отзыв и выдели три причины недовольства покупателя.”
-
Инструкции с несколькими условиями:
“Если клиент не подписался, но оставил email, предложи скидку. Если подписался — отправь благодарность.”
🔁 Сравнение: обычный промпт vs Chain-of-thought
| Промпт | Результат |
|---|---|
| “Сколько будет (8 + 2) × 3?” | Ответ: 30 (ошибка) |
| “Реши пошагово: (8 + 2) × 3” | Рассуждение: 8 + 2 = 10 → 10 × 3 = 30 → Ответ: 30 ✅ |
🔍 Даже простые вычисления становятся надёжнее, если модель “думает”.
🛠 Примеры промптов с CoT
Пример 1:
“Подумай шаг за шагом: 5 друзей делят 2 пиццы. Если каждая пицца разделена на 8 частей, сколько кусков получит каждый?”
Ответ:
2 пиццы × 8 = 16 кусков
16 / 5 = 3.2
Каждый получит по 3 куска, и ещё 1 кусок останется.
Ответ: 3 куска, 1 в остатке
Пример 2:
“Решай пошагово. В тексте сказано, что ‘Мария приехала в 8:00, а Алексей на 15 минут позже’. Во сколько приехал Алексей?”
Ответ:
Мария приехала в 8:00
Алексей — на 15 минут позже → 8:15
Ответ: 8:15
💡 Советы по применению CoT
-
Явно добавляйте фразы:
“Поясни шаг за шагом” “Реши пошагово и обоснуй” “Сначала рассуждение, потом вывод”
-
Можно комбинировать с few-shot: сначала дать пару примеров пошаговых решений.
-
Уместно использовать в задачах, где ошибка “на лету” может испортить всё — например, в расчётах, логике, обработке условий.
🔁 Self-reflection: “Оцени свой ответ”
Иногда модель отвечает быстро, уверенно… и неправильно. Но что если попросить её саму проверить себя?
Self-reflection prompting — это приём, при котором модель сначала генерирует черновой ответ, а затем сама его перепроверяет, находит возможные ошибки и корректирует.
📚 Аналогия: вторая попытка после черновика
Представьте, что студент сдаёт контрольную. Сначала он решает задачу, а потом пересматривает решение:
«Стоп. А ведь я ошибся во втором шаге. Сейчас перепишу правильно.»
То же делает модель, если вы скажете:
«Ответь на вопрос. Затем оцени свой ответ и исправь, если нужно.»
🧠 Как это работает
По умолчанию LLM генерирует текст линейно: от начала к концу, не оглядываясь. Но если вы попросите:
- разбить процесс на два этапа, и
- задать себе уточняющий вопрос или провести проверку, модель способна пересмотреть свой собственный вывод — и улучшить его.
✅ Пример self-reflection-промпта
Промпт:
Вопрос: Какие страны входят в ЕС?
Сначала дай быстрый ответ. Затем проанализируй, есть ли в нём ошибки. Если есть — предложи исправленный вариант.
Ответ модели:
Ответ: Франция, Германия, Норвегия, Испания.
Проверка: Норвегия не входит в ЕС. Остальные страны — входят.
Исправленный ответ: Франция, Германия, Испания.
🔍 Когда self-reflection особенно полезен
| Ситуация | Почему это работает |
|---|---|
| ❗ Ответ должен быть точным | Модель перепроверяет сама себя, снижая риск “галлюцинации” |
| 📋 Длинные списки | Можно отловить “затесавшихся” лишних элементов |
| 🧠 Сложные рассуждения | Модель может найти логическую ошибку в цепочке |
| 📄 Структурированные данные | Можно проверить соответствие формату или требованиям |
🛠 Формулы для запуска self-reflection
Включить самопроверку можно с помощью фраз вроде:
- “Оцени свой ответ. Найди возможные ошибки.”
- “Проверь результат и уточни, если нужно.”
- “Дай черновой ответ, затем улучши его.”
- “Представь, что ты проверяешь сам себя. Видишь ли ты неточности?”
🧾 Ещё примеры использования
📦 Пример 1: Проверка списка
Промпт:
Назови 5 стран, где официальным языком является испанский. Потом оцени, все ли они действительно соответствуют условию.
Ответ:
Испания, Мексика, Бразилия, Аргентина, Чили.
Рефлексия: Бразилия — португалоязычная страна, а не испаноязычная.
Исправленный список: Испания, Мексика, Аргентина, Чили, Колумбия.
💬 Пример 2: Проверка формулировки
Промпт:
Напиши деловое письмо клиенту, сообщающее об отказе в возврате средств. Затем оцени стиль письма: вежлив ли он? Не звучит ли грубо?
Ответ:
... (письмо) ...
Рефлексия: Формулировка "Вы не получите деньги обратно" звучит резко. Лучше переформулировать.
Улучшенный вариант: "К сожалению, согласно условиям, возврат в данном случае невозможен..."
⚠️ Что стоит учитывать
-
Модель может "запутаться", если первая версия уже хорошая — иногда она начнёт придумывать «ошибки на всякий случай».
-
Лучше явно указать:
“Исправляй только в случае очевидной ошибки.”
-
Дополнительная генерация тратит токены — self-reflection немного дороже по объёму вывода.
❌ Типовые ошибки и как их избежать
1. Слишком короткий промпт
“Напиши текст.” Результат — абстрактный или банальный.
Решение: добавьте роль, цель, стиль и ограничение.
2. Непоследовательность
Сначала просим “на ты”, потом “в деловом стиле”.
Решение: заранее указать стиль общения в явной форме.
3. Ожидание конкретной формы, но не указание её
Ожидаете JSON — получаете абзац.
Решение: явно напишите:
“Ответ верни в виде JSON с полями: name, age, city.”
4. Промпт без уточнения “если не уверен — скажи”
Модель начинает галлюцинировать.
Решение: добавляйте инструкции вроде:
“Если информации нет — скажи об этом прямо.”
5. Слишком общие или абстрактные формулировки
“Сделай красиво”, “напиши гениально”, “пусть будет эффектно”.
Решение: замените метафору на конкретные критерии: стиль, длина, аудитория, формат.
❓ Частые вопросы
Q: Нужно ли всегда использовать примеры?
A: Нет. Для простых задач zero-shot подходит. Но few-shot стабилизирует результаты.
Q: Что важнее — стиль или структура?
A: Структура важнее: даже сухой текст в нужной форме полезнее “красивого, но неправильного”.
Q: Можно ли комбинировать подходы?
A: Да, и даже желательно: контекст + инструкция + примеры + формат — это основа.
📌 Итоги
Сегодня вы узнали:
- Как строить надёжные промпты с понятной структурой
- Почему важно указывать контекст, инструкцию, примеры и формат вывода
- Какие типы промптов существуют и когда их применять
- Какие ошибки встречаются чаще всего — и как их избегать
Эта тема лежит в основе всего промпт-инжиниринга. Чем лучше вы научитесь общаться с моделью, тем больше она сможет работать на вас. В следующем уроке мы разберём, как модели воспринимают таблицы, списки, JSON и Markdown — и как подать данные так, чтобы LLM их поняла.