Few-shot Prompting

[object Object]

Few-shot Prompting — это подача нескольких примеров прямо в запросе, чтобы модель уловила нужный паттерн. В 2026 few-shot используют не "везде на всякий случай", а там, где нужен точный формат, правильная классификация спорных кейсов или конкретный style guide.

Few-shot — это не обучение модели "навсегда". Вы просто показываете 2-10 образцов внутри текущего запроса.

Суть в двух словах

Вы показываете модели несколько пар вход -> хороший ответ, а потом даёте новый вход. Модель копирует не слова, а паттерн: формат, критерий классификации, стиль или уровень детализации.

ПромптGPT-5 mini
Классифицируй тикет как billing, technical или general.

Тикет: «Верните деньги за двойное списание» -> billing
Тикет: «После обновления не открывается экран оплаты» -> technical
Тикет: «Как изменить email в профиле?» -> general

Тикет: «Письмо для сброса пароля не приходит» ->
Ответ модели

technical

Few-shot нужен не для того, чтобы модель "стала умнее", а чтобы она быстрее поняла, как именно вы хотите решать эту конкретную задачу.

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

Few-shot особенно полезен в четырёх случаях:

Few-shot особенно ценен там, где задача уже понятна, но модель без калибровки "съезжает" к усреднённому общему поведению. Примеры в этом случае работают как быстрый локальный adapter.

Что few-shot не заменяет

Few-shot не решает всё. Если нужен:

  • жёсткий schema output, лучше structured outputs;
  • доступ к новым знаниям, лучше RAG;
  • постоянное изменение поведения на больших объёмах, возможно нужен fine-tuning.

То есть few-shot — это не универсальный ответ на все проблемы prompting, а самый дешёвый калибровочный слой перед более тяжёлыми техниками.

Как выбирать примеры

Плюсы

  • Быстро повышает точность на app-specific задачах
  • Хорошо калибрует модель на edge-case
  • Не требует обучения модели
  • Легко обновлять логику заменой примеров

Минусы

  • Слишком много примеров удорожает запрос
  • Плохие примеры ухудшают результат
  • Смещённый набор примеров искажает поведение модели
  • Не даёт строгих гарантий схемы

Хорошие few-shot примеры обычно:

  • короткие;
  • реалистичные;
  • покрывают спорные случаи;
  • одинаково оформлены;
  • не содержат скрытых противоречий.

Плохие few-shot примеры обычно:

  • почти одинаковые;
  • слишком длинные;
  • не покрывают edge-cases;
  • сами содержат ошибки;
  • случайно учат плохому shortcut.

Какие примеры обычно нужны

Полезная минимальная композиция few-shot набора:

  1. Один типичный case.
  2. Один ambiguous case.
  3. Один tricky edge-case.
  4. При необходимости один negative example или "что считать неправильным".

Такой набор почти всегда полезнее, чем пять однотипных положительных примеров подряд.

Примеры

Few-shot для extraction

ПромптClaude Sonnet 4.6
Извлеки город, компанию и год основания.

Текст: «Яндекс основан в 1997 году в Москве» -> company=Яндекс; city=Москва; year=1997
Текст: «Сбер появился в 1841 году в Санкт-Петербурге» -> company=Сбер; city=Санкт-Петербург; year=1841

Текст: «Ozon запущен в 1998 году в Москве» ->
Ответ модели

company=Ozon; city=Москва; year=1998

Few-shot для style calibration

ПромптGemini 2.5 Flash
Переписывай фразы в tone of voice бренда.

До: «Мы выпустили обновление продукта»
После: «Обновление уже в проде. Работает быстрее, выглядит чище.»

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

До: «Мы упростили интерфейс сервиса»
После:
Ответ модели

«Интерфейс стал проще: меньше шума, быстрее до нужного действия.»

Few-shot для triage policy

ПромптGPT-5 mini
Классифицируй обращения как access, billing, compliance или feature_request.

«Верните деньги за двойное списание» -> billing
«Нужна выгрузка логов для аудита» -> compliance
«Уволился сотрудник, срочно закройте доступ» -> access

«Добавьте экспорт в Parquet» ->
Ответ модели

feature_request

Частые ошибки

Без техники
Показать 5 почти одинаковых позитивных примеров и ждать, что модель поймёт всю задачу
С техникой
Показать короткий, сбалансированный набор примеров: типичный кейс, edge-case, негативный пример, ambiguous case
Few-shot часто ломают не модели, а сами примеры: они слишком длинные, противоречивые или случайно учат модель плохому shortcut-правилу.

Другие типовые ошибки:

  • добавлять слишком много примеров до проверки на eval;
  • смешивать в одном наборе разные форматы ответа;
  • менять правила между примерами;
  • пытаться few-shot-ом заменить schema constraints.

Few-shot vs zero-shot

Zero-shot обычно достаточно, если:

  • задача простая;
  • формат ответа нестрогий;
  • нет domain-specific edge-cases.

Few-shot нужен, когда:

  • важны ambiguous cases;
  • нужен reproducible output pattern;
  • ваш "правильный" ответ отличается от усреднённого поведения модели.

Техническая реализация

OpenAI Responses API

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5-mini",
    input=[
        {"role": "user", "content": "Тикет: «Верните деньги за двойное списание»"},
        {"role": "assistant", "content": "billing"},
        {"role": "user", "content": "Тикет: «После обновления не открывается экран оплаты»"},
        {"role": "assistant", "content": "technical"},
        {"role": "user", "content": "Тикет: «Как изменить email в профиле?»"},
        {"role": "assistant", "content": "general"},
        {"role": "user", "content": "Тикет: «Письмо для сброса пароля не приходит»"},
    ],
)

print(response.output_text)

Retrieval-augmented Few-shot

def select_examples(query, examples, k=4):
    """
    Псевдокод: подберите не случайные примеры,
    а ближайшие по смыслу к текущему запросу.
    """
    ranked = semantic_search(query, examples)
    return ranked[:k]

Этот паттерн особенно полезен, когда у вас есть 500+ хороших примеров, но в контекст надо положить только 4-8 самых релевантных.

Проверка качества примеров

def validate_example(example):
    assert "input" in example
    assert "output" in example
    assert example["input"].strip()
    assert example["output"].strip()

Даже простая валидация помогает не тащить в prompt мусорные или неполные examples.

Practical rule

Начинайте с 3-5 примеров. Увеличивайте число только если eval показывает реальный прирост. Для многих production-задач выигрыш после 8-10 примеров уже слабый, и дальше выгоднее идти в many-shot, RAG или fine-tuning.

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

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

1. Главная цель few-shot в production чаще всего какая?

2. Какой набор примеров обычно лучше?

3. Что делать, если после 5 примеров формат всё ещё нестабилен и нужен строгий JSON?