Зачем отделять инструкции от данных в промпте и как добавлять примеры (few-shot)?
- Что такое few-shot промпт?
- Как оформить документ внутри промпта?
Данные (документ, письмо, ввод пользователя) оборачивают в явные границы — теги вроде <document>…</document> или блоки с заголовками, — чтобы модель понимала, где инструкция, а где материал для обработки. Это повышает качество и немного снижает риск инъекций. Few-shot — несколько примеров «вход → выход» в промпте: показывают формат и стиль лучше описания. Примеры должны быть разнообразными и похожими на реальные входы.
- В инструкции указать, что делать при нехватке данных: «если ответа нет в документе — скажи об этом»
- Одинаковые примеры приводят к копированию их содержания
- Примеры занимают контекст и стоят токенов — 2–5 обычно достаточно
А ещё Границы данных не защищают от инъекций полностью — это лишь один слой
Подробно
Пример промпта:
Извлеки из письма дату встречи и участников. Ответь JSON.
Если даты нет — "date": null.
<example>
Письмо: Встретимся 5 марта с Анной и Петром.
Ответ: {"date": "2026-03-05", "people": ["Анна", "Пётр"]}
</example>
<email>
{текст письма}
</email>
Ошибки:
- инструкции перемешаны с данными — модель выполняет фразы из письма как команды;
- все примеры про один случай — модель плохо работает на других;
- не сказано, что делать без данных — модель выдумывает.
Что хотят услышать
- Явные границы данных.
- Few-shot: разнообразные, реалистичные примеры.
- Поведение при нехватке данных.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Обернуть данные в явные границы, а формат показать несколькими разнообразными примерами «вход → выход»
- ✗Вставлять данные прямо в текст инструкции без границ — так модель лучше их видит
- ✗Вставить данные прямо в инструкцию без границ и дать полсотни одинаковых примеров — повторение надёжнее закрепляет формат
- ✗Границы данных полностью защищают от prompt injection
Разбор темы
- Промпты и структурированный вывод
Как написать промпт, который стабильно работает, отделить инструкции от данных, получить от модели строгий JSON и когда разбивать задачу на цепочку вызовов.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.