Few-shot примеры как надо
- Что такое few-shot-промптинг и почему примеры лучше описаний
- Как читать чистый few-shot-промпт, который модель завершает
- Как подбирать, форматировать и упорядочивать примеры (включая пограничные случаи)
- Когда использовать zero-shot, а когда few-shot
- Почему небрежный пример хуже, чем отсутствие примера
Few-shot-промптинг означает показ модели нескольких разобранных примеров задачи, прежде чем попросить выполнить новую. Сделанный хорошо, это самый быстрый способ зафиксировать формат, стиль или поведение в пограничных случаях — зачастую лучше, чем описывать желаемое словами.
Почему примеры лучше описаний
«Будь кратким и дружелюбным» расплывчато. Показ двух кратких, дружелюбных выводов однозначен. Модель сопоставляет паттерн примеров и продолжает его.
Чистый few-shot-промпт
Обратите внимание на форму: несколько пар Message → Label в одинаковом формате, затем финальное сообщение с пустым Label:, которое модель должна заполнить.
Few-shot-промпт для классификации
Classify each support message as: billing, bug, or feature. Message: "I was charged twice this month." Label: billing Message: "The app crashes when I upload a photo." Label: bug Message: "Can you add dark mode?" Label: feature Message: "My subscription renewed at the wrong price." Label:
У модели есть паттерн; она завершает последнюю строку.
Как подбирать и форматировать примеры
- Включайте пограничные случаи, которые вам важны. Если категория редкая или каверзная, включите её.
- Одна структура, одни метки, одни разделители. Несогласованность учит несогласованности.
- 2–5 часто достаточно. Больше помогает для сложных/разнородных задач, но стоит токенов и может привести к переобучению на особенностях примеров.
- Порядок может иметь значение — ставьте самые понятные примеры первыми; для классификации не группируйте все примеры одной метки вместе.
- Используйте разделители (или XML-теги), чтобы отделить примеры от ввода, который вы действительно хотите разметить.
Стоимость токенов, упомянутая выше, реальна — смотрите Токены и контекст. Для подхода с разделителями XML-теги — это чистый и надёжный разделитель.
Zero-shot против few-shot
Сначала попробуйте zero-shot (просто спросите) — современные модели сильны. Добавляйте примеры, когда вам нужен конкретный формат/стиль или задача неоднозначна. Если zero-shot уже справляется на отлично, не платите за примеры.
- Примеры — это данные, держите их чистыми. Неверный или небрежный пример активно учит неправильному. Курируйте их, как обучающие данные.
- Показывайте, а не рассказывайте: разобранные примеры лучше расплывчатых описаний.
- Охватывайте разнообразие, особенно пограничные случаи, и держите каждый пример в одинаковом формате.
- 2–5 примеров обычно достаточно; больше может привести к переобучению и стоит токенов.
- Порядок имеет значение — самые понятные первыми, и не группируйте одну метку вместе.
- Начинайте с zero-shot; добавляйте примеры только ради конкретного формата/стиля или при неоднозначности.