Как подбирать примеры: релевантность и разнообразие

Как подбирать примеры: релевантность и разнообразие

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

Принцип 1: Релевантность

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

Нерелевантные примеры (вход):

Классифицируй обращения клиентов по категориям: "доставка", "качество",
"возврат".

Пример 1:
Обращение: "Курьер привёз не тот заказ."
Категория: доставка

Пример 2:
Обращение: "Телефон перестал включаться на второй день."
Категория: качество

Теперь классифицируй:
Обращение: "Пицца приехала холодная."

Выход (ошибка модели):

Категория: качество

Модель ошиблась, потому что примеры не покрыли важный нюанс: холодная еда при доставке — это проблема доставки (время в пути), а не качества приготовления. Релевантный пример про доставку еды исправил бы ситуацию.

Исправленный набор примеров (релевантные):

Пример 1:
Обращение: "Курьер опоздал на час, еда остыла."
Категория: доставка

Пример 2:
Обращение: "В пицце не хватает заявленных ингредиентов."
Категория: качество

Пример 3:
Обращение: "Привезли пиццу с грибами, хотя я заказывал без."
Категория: доставка (ошибка сборки заказа)

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

Принцип 2: Разнообразие

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

Однообразные примеры (вход):

Извлеки имя и город из обращения.

Пример 1: "Меня зовут Иван, я из Москвы." → Имя: Иван, Город: Москва
Пример 2: "Меня зовут Мария, я из Петербурга." → Имя: Мария, Город: Петербург

Теперь: "Я Олег, живу в Казани."

Выход (вероятная ошибка из-за узкого паттерна):

Имя: Олег, Город: Казани

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

Разнообразные примеры (вход):

Извлеки имя и город из обращения.

Пример 1: "Меня зовут Иван, я из Москвы." → Имя: Иван, Город: Москва
Пример 2: "Анна, Санкт-Петербург" → Имя: Анна, Город: Санкт-Петербург
Пример 3: "Я Олег, проживаю в Казани." → Имя: Олег, Город: Казань
Пример 4: "Город — Новосибирск, имя — Елена." → Имя: Елена, Город: Новосибирск

Теперь: "Из Воронежа пишет вам Сергей."

Выход:

Имя: Сергей, Город: Воронеж

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

Сколько примеров нужно

Эмпирическое правило:

  • 1 пример — только для простых, линейных паттернов (например, перевод одного конкретного слова).
  • 2–3 примера — оптимально для большинства задач. Достаточно для демонстрации паттерна, но не перегружает контекстное окно.
  • 4–5 примеров — для сложных задач, где много вариаций или нюансов.
  • Больше 5 — редко оправдано. Каждый новый пример съедает контекстное окно и даёт убывающую отдачу.

Выбор примеров: алгоритм

  1. Определи границы задачи. Что входит в задачу, а что нет? Какие формулировки бывают у пользователей?
  2. Выдели категории вариаций. Например, для задачи «извлечения имени» вариации: «Меня зовут X», «Я X», «Имя — X», «X, город Y».
  3. Выбери по одному примеру на категорию. Покрой основные варианты.
  4. Добавь один краевой случай. Ситуация на границе условия: неоднозначная формулировка, отсутствие данных, нестандартный формат.

Пример: подбор примеров для анализа отзывов

Задача: определить тональность отзыва о фильме.

Шаг 1. Границы: только русскоязычные отзывы о фильмах. Тональности: позитивная, негативная, смешанная.

Шаг 2. Вариации: явно позитивный, явно негативный, смешанный (и понравилось, и нет), саркастичный позитив (формально хвалит, но на самом деле нет), короткий без деталей.

Шаг 3. Примеры:

Пример 1 (явно позитивный):
Отзыв: "Отличный фильм! Смотрел на одном дыхании, игра актёров
потрясающая."
Тональность: позитивная

Пример 2 (явно негативный):
Отзыв: "Скучнейший фильм. Уснул на середине. Деньги на билет —
в помойку."
Тональность: негативная

Пример 3 (смешанный):
Отзыв: "Идея интересная, но реализация подкачала. Первая половина —
огонь, вторая — вода."
Тональность: смешанная

Пример 4 (краевой — сарказм):
Отзыв: "Ну просто шедевр. Особенно понравилось, как актёры
забывали текст."
Тональность: негативная

Пример 4 критически важен — он учит модель распознавать сарказм, когда слова позитивные, а смысл негативный.

Проверь себя

Ты создаёшь промпт для извлечения цены из описания товара. Какие вариации формулировок нужно покрыть примерами?

Пример ответа: «Цена: 1000 руб.», «Стоимость — 999 ₽», «Всего за 500 рублей», «от 1 200 руб./мес.», «Цена без скидки: 2 000, со скидкой: 1 500». Каждая вариация — разный паттерн, модель должна уметь извлекать цену из любого.

Итог

  • Примеры должны быть релевантны реальным данным, с которыми будет работать модель.
  • Разнообразие примеров учит модель паттерну, а не конкретным формулировкам.
  • Оптимально 2–5 примеров: достаточно для демонстрации паттерна, но не перегружает контекст.
  • Добавляй краевые случаи — ситуации на границе, где модель может ошибиться.
  • Алгоритм подбора: границы задачи → категории вариаций → по примеру на категорию → краевой случай.

Что дальше

Ты знаешь, как подбирать качественные примеры. Но что делать, если двух-трёх примеров не хватает, а задача требует более тонкой настройки? В следующем уроке — multi-shot prompting и когда примеров нужно больше.

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

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

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