AmigaОбучение ИИ
Модуль 2 · Средний уровень · урок 8 из 13

Примеры в промпте

9 мин чтения▶ есть видеоверсия

Попробуйте описать словами тон, в котором поддержка отвечает клиентам: «дружелюбно, но не панибратски, коротко, но без сухости, с извинениями, но без самоуничижения». Три строки — и всё равно неточно. А один настоящий ответ хорошего оператора объясняет всё сразу. Этот урок про примеры в промпте — приём, который в документации называют одним из самых надёжных способов управлять форматом, тоном и структурой ответа.

Что такое few-shot

Термин пришёл из исследований: zero-shot — задача без примеров, one-shot — с одним, few-shot — с несколькими. «Shot» здесь — это показанный образец. В повседневной работе всё сводится к простому: в промпт кладут несколько пар «вход — правильный выход», и модель продолжает в том же духе.

Примеры хороши для двух вещей: получить правильный ответ (модель видит, как рассуждать и что считать верным) и получить правильный формат (модель видит, как должен выглядеть результат, вплоть до знаков препинания).

Пример: тон, который не описать

В туториале есть сценарий «бот-родитель», отвечающий на детские вопросы. На «принесёт ли Дед Мороз подарки?» модель по умолчанию отвечает формально и по существу — и это разбивает ребёнку сердце. Вместо длинного описания тона в промпт кладут одну пару: вопрос про зубную фею и тёплый ответ в духе «конечно, положи зуб под подушку». Следующий ответ выходит в том же ключе.

Наш аналог — ответы поддержки. Вместо абзаца про тон:

text
Ответь на обращение клиента так же, как в примерах.

<examples>
<example>
Обращение: Второй день не приходит код подтверждения, что делать?
Ответ: Здравствуйте! Проверила: коды уходят, но ваш оператор задерживает СМС. Отправила код на почту, указанную в профиле, — проверьте, пожалуйста, и папку «Спам». Если не дойдёт за 10 минут, напишите, подключу вход по ссылке.
</example>
<example>
Обращение: Списали деньги дважды!!!
Ответ: Здравствуйте, понимаю, это неприятно. Вижу два списания от 12 числа, второе уже помечено к возврату — деньги вернутся на карту в течение 3–5 рабочих дней. Извините за беспокойство; если к 18 числа не вернутся, напишите мне напрямую.
</example>
</examples>

<message>
Не могу найти, где отключить автопродление.
</message>

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

Пример: формат, который проще показать

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

Наш вариант: извлечение требований из письма клиента в формате «номер, требование, приоритет в скобках, источник — цитата из письма». Два примера — и формат зафиксирован надёжнее, чем любым описанием.

Сколько и каких примеров

Документация рекомендует три-пять примеров. Один пример модель может воспринять как единственно правильный ответ и скопировать слишком буквально; десять — лишние токены без прироста качества.

Примеры должны быть релевантными: похожими на реальные входы, которые вы будете подавать. Примеры про кухонные приборы не помогут классифицировать обращения в банк.

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

Оформляйте примеры в теги: каждый в <example>, все вместе в <examples>. Так модель не спутает пример с реальными данными и с инструкцией. Если примеры показывают рассуждение (см. «Рассуждение по шагам»), покажите и его: модель воспроизведёт не только ответ, но и ход мысли.

Чем примеры опасны

Модель копирует из примеров всё, включая то, чего вы не имели в виду. Три примера, где ответ начинается с «Здравствуйте, Анна» — и модель будет писать «Анна» всем. Примеры длиной по пять предложений — и ответ будет по пять предложений, даже если нужно одно. Примеры только с положительными отзывами — и негативный отзыв будет истолкован положительно.

Поэтому после добавления примеров прогоните промпт на входах, которые от них отличаются. Если ответ «залип» на паттерне примеров — примеры недостаточно разнообразны.

Второй риск — примеры с ошибками. Опечатка в примере станет опечаткой в ответе. Неправильная категория в примере научит модель ошибаться так же. Примеры нужно вычитывать внимательнее, чем инструкции.

Примеры как диалог

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

Пример из работы

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

Попробуйте сами

10–15 мин на рабочем месте
  1. Вернитесь к классификации обращений из прошлого урока. Уберите рассуждение и вместо него дайте три-четыре примера «обращение → буква категории», включая пограничный случай. Проверьте на новых обращениях: держит ли модель формат «только буква» и справляется ли с пограничными?
  2. Соберите три настоящих (или правдоподобных) ответа поддержки в нужном вам тоне, положите в <examples> и попросите ответить на новое обращение. Затем намеренно сделайте все три примера однотипными (только про оплату) и подайте обращение про баг. Заметьте, как модель «тянет» паттерн.
  3. Возьмите любой формат, который вам сложно описать словами (структура тест-кейса, карточка задачи, пункт в чендж-логе), и вместо инструкции дайте два примера. Сравните точность попадания в формат с вариантом «только инструкция».

Коротко

  • Пример показывает тон и формат точнее, чем описание; few-shot — самый надёжный способ управлять ими.
  • Берите три-пять примеров, похожих на реальные входы и разнообразных, включая краевые случаи.
  • Оформляйте каждый пример в <example>, все — в <examples>; при необходимости показывайте и рассуждение.
  • Модель копирует из примеров всё, включая ошибки и случайные паттерны — вычитывайте и проверяйте на непохожих входах.
  • Через API примеры можно подать как ходы диалога; в чате хватает текстовых.

Видеоверсия

Сценарий озвучки · 475 слов, ≈ 4 мин

Попробуйте описать словами тон, в котором поддержка отвечает клиентам. «Дружелюбно, но не панибратски, коротко, но не сухо, с извинениями, но без самоуничижения». Три строки — и всё равно неточно. А один настоящий ответ хорошего оператора объясняет всё сразу. Этот урок про примеры в промпте.

Термин из исследований: без примеров — «зеро-шот», с одним — «уан-шот», с несколькими — «фью-шот». На практике всё просто: в промпт кладут несколько пар «вход — правильный выход», и модель продолжает в том же духе. Примеры хороши для двух вещей — получить правильный ответ и получить правильный формат.

В туториале есть сценарий «бот-родитель». На вопрос ребёнка «принесёт ли Дед Мороз подарки» модель отвечает формально и по существу. Вместо описания тона в промпт кладут одну пару: вопрос про зубную фею и тёплый ответ. Следующий ответ выходит в том же ключе. Наш аналог — ответы поддержки. Два настоящих ответа в тегах, и модель вытаскивает из них всё: приветствие, конкретику вместо общих слов, признание проблемы без оправданий, чёткий следующий шаг, длину. Описать это словами было бы дольше и хуже.

То же с форматом. Извлечь из письма клиента требования в виде «номер, требование, приоритет в скобках, цитата из письма» — инструкция на пять строк с оговорками. Два готовых примера — и формат зафиксирован надёжнее.

Сколько примеров. Документация рекомендует три-пять. Один — модель скопирует слишком буквально, десять — лишние токены. Примеры должны быть релевантными: похожими на реальные входы. И разнообразными — это самое частое упущение. Если все примеры — жалобы, модель решит, что всё на свете жалоба. Если во всех ответ «Б», она начнёт отвечать «Б» независимо от содержания. Покройте разные категории, длину, тон, и обязательно пограничные случаи. Оформляйте каждый пример в тег «example», все вместе — в «examples».

Чем примеры опасны. Модель копирует из них всё, включая то, чего вы не имели в виду. Три примера с обращением «здравствуйте, Анна» — и она будет писать «Анна» всем. Примеры по пять предложений — и ответ будет по пять предложений, даже если нужно одно. Опечатка в примере станет опечаткой в ответе. Поэтому вычитывайте примеры внимательнее, чем инструкции, и после добавления прогоняйте промпт на входах, которые от примеров отличаются. Если ответ залип на паттерне — примеры недостаточно разнообразны.

Через API примеры можно оформить как ходы диалога: вопрос пользователя, идеальный ответ ассистента, и так несколько раз перед реальным вопросом. В чате так не сделать, но текстовые примеры в тегах работают не хуже.

Пример из работы. Дизайнер просит Claude писать микротексты интерфейса: кнопки, ошибки, пустые состояния. Первые попытки — то канцелярит, то слишком игриво. Он берёт пять настоящих текстов из готового продукта и кладёт в инструкции проекта. С этого момента все новые тексты выходят в том же голосе.

Примеры хорошо сочетаются с остальными приёмами. Роль задаёт, кто отвечает, правила — чего нельзя, а примеры показывают, как выглядит хороший результат. Когда описание не помогает, пример обычно решает.

Попробуйте: вернитесь к классификации обращений и вместо рассуждения дайте три-четыре примера, включая пограничный. Потом намеренно сделайте примеры однотипными и посмотрите, как модель тянет паттерн. В следующем уроке — про галлюцинации и как их сократить.

Отметка хранится только в вашем браузере