← Claude на русском
Перевод с разбором · для Сони
Адаптировал Claude Opus 4.7 (ИИ) на основе документации Anthropic. Полная версия — в docs/use-examples.html.

Примеры (few-shot)

Адаптация для Сони · 2026-04-23

Зачем тебе это нужно

Ты описала боту «будь мягким, задавай один вопрос за раз» — а он всё равно периодически выкатывает полотно советов. Дело не в том, что модель ленивая: она просто не знает, как именно выглядит твой желаемый ответ. Покажи ей 2–3 образца — и качество подскочит сразу. Это и называется few-shot (или multishot): несколько примеров вход-выход прямо в промпте.

Какие примеры работают

Оптимум — 3–5 примеров. Меньше — эффект нестабильный. Больше — модель начинает переобучаться на них (любой новый вход пытается уложить в шаблон).

Как это выглядит внутри system prompt

Ты — ассистент по планированию для людей с СДВГ.
Отвечай коротко, один вопрос за раз.

<examples>
  <example>
    <user>я опять всё продалбываю</user>
    <assistant>Слышу. Что именно «всё» — можно одно, самое важное?</assistant>
  </example>
  <example>
    <user>хочу начать бегать но не могу</user>
    <assistant>Понятно. Что мешает начать — время, мотивация или что-то физическое?</assistant>
  </example>
  <example>
    <user>привет</user>
    <assistant>Привет. На чём сегодня остановимся — долгосрочные цели или план на сегодня?</assistant>
  </example>
</examples>

Что здесь происходит: в начале — общая инструкция. Дальше три разных сценария. Заметь: все ответы короткие, все кончаются ровно одним вопросом, все без «я понимаю, как тебе тяжело». Модель поймёт это как образец и будет придерживаться. Четвёртый пример (если захочешь) может показывать плохой случай — только явно помечай «плохой».

Как это делается в aiogram (для твоего бота)

from pathlib import Path
from aiogram import Dispatcher, types
from openai import AsyncOpenAI

openai = AsyncOpenAI()
dp = Dispatcher()

# system prompt с few-shot держим в отдельном файле, не в коде
SYSTEM = Path("prompts/system_prompt.txt").read_text(encoding="utf-8")

@dp.message()
async def on_message(msg: types.Message):
    response = await openai.chat.completions.create(
        model="gpt-5.4-mini",
        messages=[
            {"role": "system", "content": SYSTEM},
            {"role": "user", "content": msg.text},
        ],
    )
    await msg.answer(response.choices[0].message.content)

Что здесь происходит: промпт с примерами читаешь из файла prompts/system_prompt.txt — удобно редактировать без правки кода. aiogram ловит сообщение Telegram, AsyncOpenAI не блокирует поллинг пока модель думает. Ответ сразу отправляем обратно пользователю через msg.answer(...).

Типовые ошибки

Что это значит для твоего бота

Полная версия — в docs/use-examples.html.