COMRAD404 / HOWTO

Как применить Few-Shot Learning: примеры и шаблоны

Пошаговая инструкция, как превратить zero-shot промпт в few-shot шаблон: выбрать 3–5 примеров, разделить инструкции и контекст, закрепить версию модели и проверить результат через evals.

Понадобится

20–35 минут
  • Доступ к LLM через API, Playground или консоль поставщика
  • Ваш текущий zero-shot промпт или описание задачи
  • Несколько реальных входов для сравнения zero-shot и few-shot
  • Понимание желаемого формата ответа
  • Готовность проверить результат на фиксированной версии модели

После выполнения этой инструкции вы сможете превратить нестабильный zero-shot промпт в воспроизводимый few-shot шаблон: с 3–5 релевантными примерами, разделением инструкций и контекста, а также проверкой результата на закреплённой версии модели.

Короткий ответ на вопрос «как применять few-shot learning на практике»: начните с zero-shot, зафиксируйте, где модель ошибается, добавьте 3–5 релевантных и разнообразных примеров в явной структуре, отделите инструкции от контекста и затем проверьте шаблон через повторяемые тесты или evals. Именно такой порядок рекомендуют OpenAI и Anthropic.

Сводка

  • ⏱️ Время: 20–35 минут
  • 🎯 Сложность: средний
  • 💰 Стоимость: зависит от выбранной модели и платформы; в процитированных источниках цены не указаны, проверяйте официальные pricing pages
  • 🛠️ Что потребуется: доступ к LLM через API или консоль, ваш текущий zero-shot промпт, несколько реальных входов для теста, понимание целевого формата ответа
  • 📌 Актуальность: рекомендации OpenAI и Anthropic, проверено по официальным источникам на 2026-08-17; конкретные названия latest model и цены в этой инструкции не фиксируются

Практический вердикт: few-shot имеет смысл применять, когда zero-shot уже понимает задачу, но плохо держит формат, тон, структуру или границы классификации. Если после 3–5 качественных примеров поведение всё ещё нестабильно, OpenAI советует рассматривать fine-tuning только как следующий шаг, а не как стартовую точку.

Редакционное ограничение: в статье нет пошаговых описаний конкретных кнопок интерфейса и нет цен, потому что в предоставленных источниках они либо не зафиксированы, либо могут зависеть от региона, endpoint и модели. Для терминов можно отдельно свериться с материалами Few-shot prompting: что это и как работает и Zero-shot prompting.

Когда few-shot действительно нужен

Согласно OpenAI, оптимальный порядок такой: сначала zero-shot, затем few-shot, и только если этого недостаточно — fine-tuning. Это полезно помнить, потому что few-shot не меняет веса модели: вы управляете поведением через демонстрации внутри самого prompt, то есть через in-context learning в смысле статьи GPT-3.

Ситуация Что делать
Модель в целом понимает задачу, но ломает формат Добавьте few-shot примеры нужного формата вывода
Модель путает близкие категории или стиль ответа Покажите 3–5 релевантных и разнообразных примеров
Инструкции смешаны с данными и ответ нестабилен Разделите инструкции, контекст, примеры и вход разделителями или XML-тегами
Качество плавает между релизами модели Закрепите версию модели и прогоняйте evals
Даже после few-shot много регрессий Переходите к формальным evals и только затем решайте, нужен ли fine-tuning

Пошагово: как применить few-shot learning

  1. Зафиксируйте zero-shot базу.

    Возьмите ваш текущий запрос без примеров и прогоните его на нескольких реальных входах. На этом шаге вам не нужно ничего улучшать: задача — увидеть, где именно модель ошибается.

    Для OpenAI полезно уже здесь разнести роль и правила по сообщениям: role guidance — в System message, а задачу и вход — в User message. Ожидаемый результат: у вас есть baseline и понятен тип ошибки — формат, тон, классификация или пропуск ограничений.

    System:
    Вы — ассистент, который отвечает только в JSON.
    
    User:
    Задача: классифицируйте обращение клиента по категории и приоритету.
    Вход:
    {{input}}
  2. Отберите 3–5 релевантных примеров.

    Anthropic прямо рекомендует обычно начинать с 3–5 релевантных и разнообразных примеров. Не берите случайные примеры «для объёма»: каждый должен показывать нужный формат, корректную границу решения или важный крайний случай.

    Ожидаемый результат: у вас есть компактный набор демонстраций, которые действительно похожи на будущие входы.

    Пример набора для задачи классификации:
    - короткий и однозначный вход
    - вход с двусмысленной формулировкой
    - вход с негативным тоном
    - вход, где важно не придумать лишние поля
    - вход на пограничной категории
  3. Отделите инструкции от контекста, примеров и нового входа.

    OpenAI советует разделять инструкции и контекст разделителями, а Anthropic — использовать XML-теги, чтобы развести instructions, context, examples и input. Это снижает риск того, что модель смешает демонстрации с новым заданием.

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

    <instructions>
    Верните только JSON с полями category и priority.
    Не добавляйте пояснения.
    </instructions>
    
    <examples>
    ...
    </examples>
    
    <input>
    {{input}}
    </input>
  4. Соберите few-shot шаблон в нужном формате.

    Если вы работаете по рекомендациям OpenAI, держите постоянные правила в System message, а task-specific details и examples — в User message. Если вы работаете по рекомендациям Anthropic, используйте XML-структуру и при необходимости добавьте self-check по тест-критериям.

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

    Шаблон OpenAI-style messages

    System:
    Вы — ассистент для классификации обращений.
    Следуйте правилам:
    1. Отвечайте только в JSON.
    2. Используйте только поля category и priority.
    3. Если данных недостаточно, не выдумывайте новые поля.
    
    User:
    Задача: классифицируйте обращение клиента.
    Требуемый формат ответа показывается в примерах.
    
    Examples:
    - input: "Не могу скачать счёт за прошлый месяц"
      output: {"category":"billing","priority":"medium"}
    - input: "Сервис не открывается после входа"
      output: {"category":"technical","priority":"high"}
    - input: "Хочу изменить адрес доставки"
      output: {"category":"shipping","priority":"low"}
    
    Now process this input:
    {{input}}

    Шаблон XML-style для Claude-подхода

    System:
    Вы — ассистент для классификации обращений.
    
    User:
    <instructions>
    Верните только JSON с полями category и priority.
    Не добавляйте объяснений.
    </instructions>
    
    <examples>
      <example>
        <input>Не могу скачать счёт за прошлый месяц</input>
        <output>{"category":"billing","priority":"medium"}</output>
      </example>
      <example>
        <input>Сервис не открывается после входа</input>
        <output>{"category":"technical","priority":"high"}</output>
      </example>
      <example>
        <input>Хочу изменить адрес доставки</input>
        <output>{"category":"shipping","priority":"low"}</output>
      </example>
    </examples>
    
    <input>
    {{input}}
    </input>
    
    <self_check>
    Перед ответом проверьте, что JSON валиден и содержит только два поля.
    </self_check>

    Если вам нужен более строгий контроль над шаблоном, в OpenAI Playground prompt management можно хранить prompt на уровне проекта, использовать variables, историю версий, rollback, Prompt ID и закрепление конкретной версии.

  5. Прогоните шаблон на фиксированном наборе входов.

    Теперь сравните zero-shot и few-shot на одном и том же наборе ваших реальных запросов. Не меняйте одновременно и prompt, и модель: иначе вы не поймёте, что именно улучшило результат.

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

    Критерий Что считать успехом
    Формат Ответ строго соответствует показанному примеру
    Точность задачи Категория или структура совпадают с вашими ожиданиями
    Устойчивость Похожий вход даёт похожий ответ
    Дисциплина ответа Нет лишних комментариев вне требуемого формата
  6. Закрепите рабочую версию и настройте повторную проверку.

    OpenAI отдельно предупреждает, что prompting-поведение может меняться между snapshot-версиями модели. Поэтому после того как шаблон заработал, закрепите конкретную версию модели и не полагайтесь только на latest в критичных сценариях.

    Если вы используете OpenAI Playground prompt management, сохраняйте версию prompt и после публикации повторно запускайте linked Eval. Если вам нужна программная проверка качества и регрессий, используйте Evals API для создания, управления и запуска evals. Ожидаемый результат: у вас есть не просто «удачный prompt», а управляемая и проверяемая конфигурация.

Как проверить, что всё работает

  1. Возьмите фиксированный набор ваших входов и сохраните эталонные ожидания по каждому из них.
  2. Прогоните этот набор через zero-shot и through few-shot шаблон на одной и той же модели.
  3. Сравните, где few-shot реально улучшил формат, тон или структуру, а где добавил новые ошибки.
  4. Закрепите snapshot-версию модели и повторите тот же прогон, чтобы исключить дрейф поведения между версиями.
  5. Если используете OpenAI Playground, после публикации шаблона повторно запустите linked Eval; если работаете через API, используйте Evals API для проверки регрессий.

Хороший признак: few-shot не только даёт «красивый» единичный ответ, но и стабильно проходит ваши повторяемые критерии на тех же входах.

Частые ошибки и исправления

  • Ошибка: вы начинаете с few-shot, не проверив zero-shot.
    Решение: сначала соберите baseline без примеров. OpenAI рекомендует двигаться от zero-shot к few-shot, а не наоборот.
  • Ошибка: вы вставляете слишком много примеров.
    Решение: начните с 3–5 релевантных и разнообразных примеров. Именно такой диапазон обычно рекомендует Anthropic.
  • Ошибка: инструкции, примеры и новый вход смешаны в одном абзаце.
    Решение: отделите их разделителями или XML-тегами, чтобы модель не спутала правила с данными.
  • Ошибка: примеры показывают один формат, а инструкция требует другой.
    Решение: выровняйте examples и правила. Для модели демонстрация формата часто сильнее абстрактного описания.
  • Ошибка: вы считаете шаблон стабильным, хотя тестировали его только на latest model.
    Решение: закрепите версию модели и повторите evals, потому что поведение может меняться между snapshot-версиями.

Безопасность и ограничения

  • Few-shot — это in-context learning: вы не дообучаете модель и не меняете её веса. Если задача требует устойчивого поведения на множестве крайних случаев, одного few-shot может не хватить.
  • Для OpenAI API данные по умолчанию не используются для обучения модели, но abuse-monitoring logs могут храниться до 30 дней; также действуют региональные и endpoint-specific ограничения. Не вставляйте чувствительные данные, пока не проверите применимые политики для вашего аккаунта и региона.
  • Рекомендации Anthropic сформулированы для latest Claude models и могут меняться вместе с новыми релизами. То, что работает сегодня, нужно перепроверять после обновлений.
  • Цены в процитированных источниках не раскрыты. Стоимость few-shot зависит от вашей модели, объёма prompt и режима использования, поэтому сверяйтесь с официальными pricing pages отдельно.
  • Даже удачный few-shot шаблон нельзя считать готовым без собственных evals на ваших данных. Это ограничение прямо следует из того, что результат зависит от задачи, модели и версии.

Что делать дальше

Источники

Вопросы и ответы

Сколько примеров добавлять в few-shot prompt?

Практическая стартовая точка из рекомендаций Anthropic — 3–5 релевантных и разнообразных примеров. Больше не всегда лучше: сначала проверьте, что каждый пример действительно нужен.

Few-shot — это уже обучение модели?

В смысле статьи GPT-3 это in-context learning: модель решает задачу по демонстрациям внутри prompt без обновления весов. Поэтому few-shot и fine-tuning — не одно и то же.

Где хранить инструкции, а где примеры?

OpenAI рекомендует держать role guidance в System message, а task-specific details и examples — в User message. Anthropic рекомендует дополнительно отделять примеры и вход XML-тегами.

Нужно ли закреплять версию модели?

Да, если вам нужна воспроизводимость. OpenAI предупреждает, что prompting-поведение может меняться между snapshot-версиями, поэтому рабочий шаблон лучше проверять на pinned version и через evals.

Можно ли обойтись без evals?

Для разовой ручной задачи — иногда да, но для повторяемого процесса это слабый подход. И OpenAI, и Anthropic в разных формах сводят практику к одному: задайте критерии успеха и проверяйте prompt эмпирически на ваших данных.

Шаги

HOW-TO
  1. Зафиксируйте zero-shot базу

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

  2. Отберите 3–5 релевантных примеров

    | Соберите компактный набор релевантных и разнообразных примеров, которые показывают правильный ответ и важные пограничные случаи.

  3. Разделите инструкции, контекст, примеры и вход

    | Отделите части prompt явными разделителями или XML-тегами, чтобы модель не смешивала правила, демонстрации и новый запрос.

  4. Соберите few-shot шаблон

    | Поместите role guidance в System message, а task-specific details и examples — в User message, либо используйте XML-структуру со self-check.

  5. Проверьте шаблон на фиксированном наборе входов

    | Сравните zero-shot и few-shot на одной и той же модели и оцените соблюдение формата, точность и устойчивость результата.

  6. Закрепите рабочую версию и настройте evals

    | Сохраните версию prompt, закрепите snapshot-версию модели и запускайте linked Eval или Evals API для контроля регрессий.

Источники

SOURCES

Вопросы и ответы

FAQ
Сколько примеров добавлять в few-shot prompt?

Стартовая точка из рекомендаций Anthropic — 3–5 релевантных и разнообразных примеров. Затем проверяйте качество на ваших данных.

Few-shot — это уже обучение модели?

В статье GPT-3 few-shot описан как in-context learning: задача решается через демонстрации в prompt без обновления весов модели.

Где хранить инструкции, а где примеры?

OpenAI рекомендует держать role guidance в System message, а task-specific details и examples — в User message. Anthropic рекомендует дополнительно отделять части XML-тегами.

Нужно ли закреплять версию модели?

Да, если вам нужна воспроизводимость. OpenAI указывает, что prompting-поведение может меняться между snapshot-версиями, поэтому лучше pin model versions и прогонять evals.

Можно ли обойтись без evals?

Для разовой ручной проверки иногда можно, но для стабильного процесса лучше использовать повторяемые тесты или Evals API и сравнивать результаты на фиксированном наборе входов.

Читайте также

LINKS