/
Вопросы и ответы
/
Промт-инжиниринг
/

Что такое few-shot prompting и как это работает?

Что такое few-shot prompting и как это работает?

11 часов назад

Никита Вихров

Ответы

0

Что такое few-shot prompting и как это работает

Модель не знает, что именно ты от неё хочешь — пока ты не покажешь. Few-shot prompting — это обучение на примерах прямо в промпте: даёшь несколько пар «вход → выход», и модель понимает паттерн.


Zero-shot: без примеров

from anthropic import Anthropic

client = Anthropic()

response = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=256,
    messages=[{
        "role": "user",
        "content": "Классифицируй отзыв: 'Приложение вылетает каждые 5 минут, невозможно работать'"
    }]
)

print(response.content[0].text)
# → "Этот отзыв является негативным. Пользователь испытывает технические проблемы..."
# Модель ответила правильно, но в своём формате — многословно и непредсказуемо

Few-shot: с примерами

few_shot_prompt = """Классифицируй отзыв на одно из: positive / negative / neutral.
Отвечай только одним словом.

Отзыв: "Отличное приложение, пользуюсь каждый день"
Категория: positive

Отзыв: "Ничего особенного, работает как работает"
Категория: neutral

Отзыв: "Постоянно вылетает, удалил"
Категория: negative

Отзыв: "Приложение вылетает каждые 5 минут, невозможно работать"
Категория:"""

response = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=16,
    messages=[{"role": "user", "content": few_shot_prompt}]
)

print(response.content[0].text)
# → "negative"
# Теперь модель отвечает в нужном формате

Где few-shot особенно важен

Нестандартный формат вывода. Если нужен конкретный JSON, CSV, или специфическая структура — покажи примеры.

prompt = """Извлеки данные из текста в JSON.

Текст: "Иван Петров, 35 лет, backend-разработчик в Яндексе"
JSON: {"name": "Иван Петров", "age": 35, "role": "backend-разработчик", "company": "Яндекс"}

Текст: "Мария Сидорова, senior PM, работает в Тинькофф, 8 лет опыта"
JSON: {"name": "Мария Сидорова", "age": null, "role": "senior PM", "company": "Тинькофф"}

Текст: "Алексей, 28, фронтендер-фрилансер"
JSON:"""

Специфическая классификация. Когда категории неочевидны и граница между ними тонкая — примеры граничных случаев помогают модели.

Нужен конкретный стиль. Хочешь короткие ответы без вводных слов — покажи несколько таких ответов.


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

1–2 примера — модель понимает формат. 3–5 примеров — модель понимает паттерн и граничные случаи. Больше 10 — редко даёт прирост, но увеличивает стоимость запроса.

Правило: начни с 2–3, проверь на реальных данных, добавляй примеры только если ошибается на конкретных типах входных данных.


Few-shot через роли — чище и удобнее

Вместо примеров в одном сообщении — чередуй роли user/assistant:

response = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=16,
    system="Классифицируй отзывы. Отвечай только: positive / negative / neutral",
    messages=[
        {"role": "user", "content": "Отличное приложение, пользуюсь каждый день"},
        {"role": "assistant", "content": "positive"},
        {"role": "user", "content": "Постоянно вылетает, удалил"},
        {"role": "assistant", "content": "negative"},
        {"role": "user", "content": "Приложение вылетает каждые 5 минут, невозможно работать"},
    ]
)

print(response.content[0].text)  # → "negative"

Этот подход чище: примеры отделены от задачи, легче добавлять и убирать.

11 часов назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845