Мульти-шот: когда примеров нужно больше

Мульти-шот: когда примеров нужно больше

В стандартном few-shot ты даёшь 2–5 примеров, и модель схватывает паттерн. Но есть задачи, где этого недостаточно. Когда и зачем добавлять больше примеров — тема этого урока.

Когда двух примеров мало

Few-shot (2–5 примеров) отлично работает для простых паттернов: «вот вход — вот выход». Но в некоторых ситуациях модели нужно больше данных, чтобы «нащупать» закономерность:

1. Много классов или категорий

Если ты классифицируешь обращения не на 3 категории, а на 15, двух примеров недостаточно — модель не увидит всех категорий.

2. Тонкие различия между категориями

Категории «жалоба» и «конструктивная критика» похожи. Модели нужно несколько примеров, чтобы уловить разницу.

3. Нестандартный или редкий формат вывода

Если ты хочешь, чтобы модель генерировала ответ в необычном формате (например, специфическая JSON-схема с вложенными объектами), пара примеров может не покрыть всех деталей структуры.

4. Высокие требования к точности

Если ошибка стоит дорого (медицинская классификация, финансовая аналитика), дополнительные примеры снижают вероятность промаха.

Сколько примеров добавить

Исследования показывают, что качество растёт с числом примеров, но с убывающей отдачей:

Качество
  ↑
  │     ╭────────────────────
  │   ╱
  │ ╱
  │╱
  └──────────────────────→ Число примеров
       2-3    5-8   10+
  • 0 → 2 примера: огромный скачок качества.
  • 2 → 5 примеров: заметное улучшение для сложных задач.
  • 5 → 10 примеров: небольшое улучшение, оправдано только для высокоточных задач.
  • 10+ примеров: минимальная отдача. Контекстное окно переполняется.

Проблема: контекстное окно

Каждый пример «съедает» токены. Если твои примеры длинные (скажем,全文 документы по 500 токенов), то 5 примеров — это 2 500 токенов только на примеры. Добавь сюда инструкцию и сам запрос — промпт может занять 3 000+ токенов, оставляя мало места для ответа.

Правило: считай токены в примерах. Если сумма примеров + инструкция > 50% контекстного окна — сокращай примеры, а не добавляй.

Пример: 2-shot vs 6-shot

Задача: классифицировать новости по 6 темам (политика, экономика, спорт, технологии, культура, наука).

2-shot версия (вход — 2 примера на 6 тем):

Классифицируй новость по теме: политика, экономика, спорт, технологии,
культура или наука.

Пример 1: "Центробанк повысил ключевую ставку до 18%."
Тема: экономика

Пример 2: "Сборная выиграла товарищеский матч со счётом 3:1."
Тема: спорт

Новость: "Учёные обнаружили новую экзопланету."

Модель видела только «экономику» и «спорт». Темы «наука», «культура», «технологии», «политика» остались без примеров. Высок риск, что модель неверно классифицирует новость про экзопланету.

6-shot версия:

...
Пример 1: "Центробанк повысил ключевую ставку до 18%." → экономика
Пример 2: "Сборная выиграла товарищеский матч со счётом 3:1." → спорт
Пример 3: "Парламент принял закон о защите данных." → политика
Пример 4: "Вышел новый процессор с рекордной производительностью." → технологии
Пример 5: "В Третьяковке открылась выставка авангардистов." → культура
Пример 6: "Учёные расшифровали геном редкого вида растений." → наука

Новость: "Учёные обнаружили новую экзопланету."

Выход: наука — уверенно и правильно.

Шесть примеров дали модели по одному примеру на каждую тему. Модель «увидела» все категории и может выбирать между ними.

Техника: active example selection

Если у тебя много примеров, но контекстное окно ограничено, используй динамический подбор примеров:

  1. У тебя есть база из 50 примеров (по несколько на каждую категорию).
  2. Для каждого нового запроса ты выбираешь не случайные примеры, а те, которые наиболее похожи на текущий запрос.
  3. В промпт попадают только 4–5 самых релевантных примеров.

Это программируется (мы не будем углубляться в код), но принцип важен: качество примеров > их количество. Лучше 4 релевантных примера, чем 10 случайных.

Типичная ошибка: переобучение на примерах

Слишком много похожих примеров может «переобучить» модель на узкий паттерн:

Пример 1: "Цена: 1000 руб." → 1000
Пример 2: "Цена: 500 руб." → 500
Пример 3: "Цена: 750 руб." → 750
... (ещё 7 примеров в том же формате)

Модель выучит, что цена — это число после «Цена: ... руб.». А если встретится «Стоимость — 999 ₽» — ошибётся. Три разнообразных примера были бы лучше десяти одинаковых.

Проверь себя

Ты делаешь промпт для извлечения 10 полей из резюме (имя, телефон, навыки, образование...). Сколько примеров нужно?

Ответ: минимум 2–3 примера, покрывающих разные стили резюме (хронологическое, функциональное, краткое). Главное — не количество, а покрытие вариаций. Один пример на каждую вариацию формата. Если вариаций 3 — 3 примеров достаточно. Если 10 — возможно, лучше разбить задачу на подзадачи, чем давать 10 примеров в один промпт.

Итог

  • Multi-shot (4–10+ примеров) нужен, когда много категорий, тонкие различия между ними или высокие требования к точности.
  • Больше примеров = лучше, но с убывающей отдачей. После 5–8 примеров прирост минимален.
  • Следи за контекстным окном: примеры съедают токены. Если > 50% окна уходит на примеры — сокращай.
  • Лучше 4 разнообразных и релевантных примера, чем 10 одинаковых.
  • При большом количестве примеров используй динамический подбор — выбирай самые релевантные к текущему запросу.

Что дальше

Теория few-shot освоена. В следующем уроке — практика. Ты возьмёшь реальную задачу и пошагово добавишь примеры в промпт, наблюдая, как меняется качество ответа модели.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике