Few-shot для классификации и извлечения

Классификация и извлечение — задачи, где few-shot раскрывается полностью: примеры фиксируют и метки, и формат, и поведение на краю.

Извлечение (extraction) — выделение из текста структурированных сущностей (имена, даты, суммы, поля), обычно в строгий формат.

Классификация с фиксированными метками

Главная ловушка классификации — «свободные» метки: модель придумывает новые названия классов. Лекарство — закрытый список меток плюс примеры на каждый.

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

Тикет: "Кнопка оплаты не работает на iPhone"  -> баг
Тикет: "Хочу тёмную тему"                       -> фича
Тикет: "Как сменить пароль?"                    -> вопрос
Тикет: "Спасибо за сервис!"                     -> другое

Тикет: "Приложение вылетает при входе"          ->

Закрытый список + по примеру на класс почти гарантируют метку из множества и снимают разнобой формулировок.

Извлечение сущностей

Для извлечения примеры показывают и какие поля доставать, и что делать с отсутствующими. Единая разметка критична — иначе формат «поплывёт».

Извлеки поля: контрагент, сумма, дата. Формат — JSON.
Нет данных -> null.

Текст: "Оплата ООО Ромашка, 12000 руб, 5 мая"
-> {"контрагент": "ООО Ромашка", "сумма": 12000, "дата": "5 мая"}

Текст: "Перевод от Иванова"
-> {"контрагент": "Иванов", "сумма": null, "дата": null}

Текст: "Возврат 3500 рублей 1 июня"
->

Второй пример (с отсутствующими полями) важен: он учит модель ставить null, а не выдумывать сумму и дату.

Чек-лист few-shot для этих задач

ПриёмЗачем
Закрытый список метокНе плодить лишние классы
По примеру на каждый классБаланс и охват
Пример с пустыми полямиУчит ставить null, а не выдумывать
Единая разметка во всех примерахСтабильный формат
Граничный/каверзный примерПоведение на сложных входах

Связка с предыдущим

Эти задачи объединяют почти всё из курса: роль (опционально), few-shot, строгий формат вывода, обработку краевых случаев и проверяемость (метка из множества легко валидируется в коде). Именно так промптинг превращается в надёжный компонент системы.

Итог

  • Для классификации задавайте закрытый список меток и по примеру на класс.
  • Для извлечения показывайте поля и обязательно пример с пустыми значениями.
  • Держите единую разметку во всех примерах — иначе формат «поплывёт».
  • Эти задачи легко делать проверяемыми: метка из множества валидируется кодом.
Проверьте себя
1. Как не дать модели придумывать новые классы при классификации?
AПовысить температуру
BЗадать закрытый список меток и дать пример на каждый класс
CУбрать все примеры
DПопросить отвечать абзацем
2. Зачем в примерах извлечения нужен случай с отсутствующими полями?
AДля длины промпта
BЧтобы научить модель ставить null вместо выдумывания значений
CЭто запрещено
DЧтобы повысить стоимость
3. Почему классификация с закрытым списком меток легко проверяема?
AПотому что ответ длинный
BКод может проверить, что метка принадлежит заранее известному множеству
CПотому что используется высокая температура
DЕё нельзя проверить
Поддержать проект