Все уроки · 44
Путь 3 · Дорожная карта AI-инженера·Урок 9 из 33

Техники промптинга: Zero-shot, Few-shot, CoT, ReAct

Четыре основные техники промптинга, которыми пользуется каждый AI-инженер: zero-shot, few-shot, chain-of-thought и ReAct — с промптами, которые можно скопировать, и разбором того, когда какая помогает.

УровеньНовичокВремя~15 мин

Четыре техники — одна идея

Любая техника промптинга отвечает на один и тот же вопрос: что должна увидеть модель, чтобы дать правильный ответ? Иногда ничего лишнего, иногда примеры, иногда время на размышление, а иногда инструменты.

Четыре техники нужны потому, что «работает» и «работает каждый раз» — разные вещи. Большая часть разочарований от промптинга — это одна из четырёх проблем под маской: неверный формат (лечится примерами), неверный ответ (лечится рассуждением), недостающая информация (лечится инструментами) или вообще никакой проблемы. В последнем случае просто спросите прямо и перестаньте усложнять.

В реальных проектах вы будете использовать все четыре, обычно вперемешку. Разберём их по порядку сложности.

Это краткая версия

Четыре основные техники — этого достаточно, чтобы выпускать рабочие функции. Ищете конкретный приём — Tree of Thoughts, самосогласованность (self-consistency), step-back, автоматическое проектирование промптов? Все они собраны в уроке Полный каталог техник промптинга. Сначала прочитайте этот урок; обращайтесь к каталогу, когда промпт «почти работает» и нужен инструмент поточнее.

Zero-shot: просто спросите

Zero-shot означает просить модель выполнить задачу вообще без примеров — «ноль примеров», отсюда и название. Вы полагаетесь на всё, чему она научилась при обучении. Распространённые задачи, которых в обучающих данных было много, — кратко пересказать, перевести, определить тональность, исправить грамматику — современные модели решают без проблем.

zero-shot — классификация отзыва
Определи тональность этого отзыва: «positive»,
«negative» или «neutral».

Отзыв: «Батарея держит вечно, но приложение — катастрофа.»

Ответь одним словом.

Используйте zero-shot, когда задача простая и распространённая. Если нужен конкретный формат или у задачи есть необычные крайние случаи, берите приёмы посильнее.

Few-shot: покажите примеры

Few-shot-промптинг помещает несколько пар «вход — выход» прямо в промпт («несколько примеров» — обычно от двух до пяти). Модель повторяет увиденную закономерность. Это самый дешёвый способ управлять форматом и крайними случаями: никакого дообучения (fine-tuning — повторного обучения модели на ваших данных), никакого пайплайна обучающих данных — только текст. (Примеры — один из шести блоков в уроке Анатомия промпта: из чего он состоит; здесь мы превращаем этот блок в технику.)

Вот разница на практике. Одна и та же задача классификации, сначала без примеров:

Simulated conversation
press the button below to send the first message
sent to the modelnothing yet — every message is sent in full

Непоследовательно: сначала одна метка, затем фраза из четырёх слов. Модель гадает, какой стиль вам нужен. А теперь с двумя примерами:

Simulated conversation
press the button below to send the first message
sent to the modelnothing yet — every message is sent in full

Та же модель, та же задача — но теперь каждый ответ можно разобрать программой. Вот что даёт few-shot: единообразие.

Скопируйте этот пример и подставьте свои метки:

few-shot — классификация с примерами
Размечай каждое обращение в поддержку ровно одной меткой
из списка: billing, bug, how_to, refund, other.
Отвечай только меткой, без объяснений.

Обращение: «Приложение вылетает, когда я загружаю фото.»
Метка: bug

Обращение: «Как сменить пароль?»
Метка: how_to

Обращение: «С меня дважды списали деньги, верните, пожалуйста, один платёж.»
Метка: refund

Обращение: «У вас есть тариф для команд из 20 человек?»
Метка:

От двух деталей зависит успех: дайте модели закрытый список меток (иначе она выдумает новые) и оставьте последнюю строку Метка: пустой, чтобы модель продолжила шаблон, а не пересказывала его.

Chain-of-thought: дайте модели подумать

Для математики, логики, сравнений и многошаговых решений требование мгновенного ответа вредит качеству: модель вынуждена выбирать каждое слово, не успев «додумать» мысль до конца. Chain-of-thought (CoT, «цепочка рассуждений») просит модель рассуждать шаг за шагом перед ответом: она выписывает промежуточные шаги, и каждый шаг становится контекстом, облегчающим следующий.

Простейший вариант — одна строка:

chain-of-thought
В магазине блокноты продаются упаковками по 6 штук за 4 доллара
и по 10 штук за 6 долларов. Мне нужно 50 блокнотов.
Какая комбинация упаковок самая дешёвая и сколько она стоит?

Думай шаг за шагом: сначала посчитай, сколько нужно упаковок,
затем проверь, не окажется ли дешевле упаковка побольше,
затем дай окончательный ответ в последней строке в виде
«Ответ: ...».

Два практических замечания:

  • Рассуждение стоит токенов. Включайте CoT там, где задаче нужны шаги; для «перескажи этот абзац» оно лишнее.
  • Если вы не хотите показывать пользователям рассуждение, попросите модель поместить окончательный ответ в структурированное поле (например, в JSON) и показывайте только его.

Современные рассуждающие модели многое из этого делают внутри себя, но для обычных моделей — и чтобы увидеть, почему ответ неверен, — явный промптинг «по шагам» остаётся нужным инструментом.

ReAct: рассуждать и действовать с инструментами

ReAct (Reason + Act, «рассуждай и действуй») — это CoT плюс возможность что-то делать. Модель думает, вызывает инструмент (функцию, которую она может попросить запустить ваш код: найти заказ, узнать цену, поискать в интернете), наблюдает результат и повторяет, пока не сможет ответить. Этот цикл лежит в основе большинства AI-агентов.

Трассировка (trace) — журнал одного такого цикла — выглядит так:

  • Мысль: Мне нужен сегодняшний курс обмена, чтобы посчитать итог.
  • Действие: вызвать инструмент get_rate с параметрами EUR → USD.
  • Наблюдение: 1.09
  • Мысль: Теперь можно посчитать: 250 EUR — это 272,50 USD.
  • Ответ: Сумма заказа — 272,50 USD.

В ReAct промпт перестаёт быть одним сообщением и превращается в цикл: ответ модели становится вызовом инструмента, а результат инструмента — новым входом. Как строятся такие циклы, мы разберём в уроке Что такое AI-агенты, а сами вызовы инструментов подключим в уроке Инструменты и вызов функций.

Как выбрать

Начинайте с zero-shot. Если формат неверный или крайние случаи обрабатываются небрежно, добавьте few-shot-примеры; если рассуждение неверно — chain-of-thought; если задаче нужны данные из реального мира или действия, вам нужен ReAct.

Проверьте себя

Проверьте себя

Ваш классификатор всё время выдумывает новые метки вместо ваших пяти. Какая техника это исправит и как?

Задаче нужен сегодняшний курс обмена валют. Какая техника необходима?

Когда chain-of-thought — это трата денег впустую?

Одними промптами нельзя дать модели знания, которых у неё нет: ваши документы, ваши продукты, данные ваших пользователей. Это уже другая проблема, и дальше в этой дорожной карте мы решим её с помощью эмбеддингов (способа, которым модели превращают смысл в числа) и RAG.

А когда этих четырёх недостаточно, полный каталог техник продолжает с того места, где заканчивается этот урок.

Есть вопросы?

Присоединяйтесь к Telegram-каналу — с радостью обсудим техники и поделимся примерами.