Мульти-шот: когда примеров нужно больше
Мульти-шот: когда примеров нужно больше
В стандартном 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
Если у тебя много примеров, но контекстное окно ограничено, используй динамический подбор примеров:
- У тебя есть база из 50 примеров (по несколько на каждую категорию).
- Для каждого нового запроса ты выбираешь не случайные примеры, а те, которые наиболее похожи на текущий запрос.
- В промпт попадают только 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 освоена. В следующем уроке — практика. Ты возьмёшь реальную задачу и пошагово добавишь примеры в промпт, наблюдая, как меняется качество ответа модели.