Few-shot prompting: примеры в шаблоне
Урок о том, как примеры в промпте задают модели нужный формат и стиль ответа.
Few-shot prompting — приём, при котором в промпт включают несколько примеров «вход → выход», чтобы модель повторила нужный формат на новом входе.
Зачем нужны примеры
Иногда инструкции словами недостаточно: модель понимает задачу, но выдаёт ответ в произвольном виде. Самый надёжный способ задать формат — показать примеры. Это и есть few-shot: «делай вот так, как в этих образцах». Особенно полезно для классификации, извлечения полей, нестандартного формата вывода.
FewShotPromptTemplate
LangChain даёт специальный шаблон, который берёт список примеров и подставляет их по единому под-шаблону, а затем добавляет текущий вопрос.
from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate
example_prompt = PromptTemplate.from_template("Текст: {text}\nТон: {tone}")
examples = [
{"text": "Всё сломалось, ужасно!", "tone": "негативный"},
{"text": "Спасибо, очень помогли!", "tone": "позитивный"},
]
prompt = FewShotPromptTemplate(
examples=examples,
example_prompt=example_prompt,
suffix="Текст: {input}\nТон:",
input_variables=["input"],
)
print(prompt.format(input="Заказ пришёл вовремя"))Логику сборки few-shot-промпта легко показать на чистом Python:
examples = [
("Всё сломалось, ужасно!", "негативный"),
("Спасибо, очень помогли!", "позитивный"),
]
lines = [f"Текст: {t}\nТон: {tone}" for t, tone in examples]
query = "Заказ пришёл вовремя"
prompt = "\n\n".join(lines) + f"\n\nТекст: {query}\nТон:"
print(prompt)Вывод:
Текст: Всё сломалось, ужасно! Тон: негативный Текст: Спасибо, очень помогли! Тон: позитивный Текст: Заказ пришёл вовремя Тон:
Как работает под капотом
FewShotPromptTemplate прогоняет каждый пример через example_prompt, склеивает результаты, добавляет необязательный prefix сверху и suffix с текущим вводом снизу. На выходе — обычный текстовый промпт. Никакой магии: модель видит цельный текст, где после нескольких пар «вход → выход» идёт новый вход без ответа, и достраивает ответ по образцу. Чем согласованнее формат примеров, тем стабильнее ответ.
Частые ошибки
- Слишком много примеров. Каждый пример — это токены и деньги; обычно хватает 2–5 хорошо подобранных.
- Несогласованный формат примеров. Если образцы оформлены по-разному, модель «теряется».
- Примеры не покрывают краевые случаи. Подбирайте показательные, а не случайные образцы.
Итог
- Few-shot задаёт формат и стиль через примеры «вход → выход».
FewShotPromptTemplateсобирает примеры по единому под-шаблону плюс текущий ввод.- 2–5 согласованных примеров обычно эффективнее десятков случайных.