Примеры учат форме ответа куда надёжнее, чем её описание. Сложность в сборке: собранные вручную блоки примеров — то самое место, где случайный разделитель внутри чужого содержимого молча закрывает раздел, который должен был его вмещать. Здесь содержимое экранируется, предлагаются четыре стоящих формата — с тегами, Markdown, массив JSON или прошлые ходы разговора — и весь набор проверяется на две ошибки, делающие примеры вредными. Если все выходы одинаковы, они учат константе, а не правилу. Если они расходятся в собственной форме, они не учат ничему.
Возможности
Четыре формата: XML-теги, Markdown, массив JSON или ходы разговора
Содержимое экранируется, чтобы угловая скобка не закрыла тег раньше времени
Имена элементов приводятся к допустимым тегам
Предупреждает, когда у всех примеров одинаковый выход
Предупреждает, когда выходы расходятся в формате
Замечает, когда пример один — или их слишком много
Свои подписи для входной и выходной половины
Необязательная нумерация
Как использовать Конструктор few-shot примеров
Добавьте каждый вход с нужным выходом
Выберите формат по тому, куда пойдут примеры
Прочтите предупреждения о наборе в целом
Скопируйте блок в свой промпт
Пример
Ввод
The export button does nothing on Safari.
Результат
{"category": "bug", "severity": "medium"}
Согласованная форма выхода между примерами и есть то, что учит формату.
Частые ошибки и устранение неполадок
В примерах есть угловые скобки, и промпт ломается. — Здесь они экранируются, в этом и суть. Именно на вручную собранных блоках всё и ломается.
Предупреждает, что все выходы одинаковы. — Одинаковые выходы учат постоянному ответу. Разнесите их по случаям, которые вы действительно хотите различать.
Предупреждает, что выходы разной формы. — Один пример возвращает JSON, другой прозу — это противоречивые указания о формате. Выберите одно.
Сколько примеров использовать? — Двух-трёх обычно хватает, чтобы закрепить поведение. За дюжиной вы платите реальными токенами на каждом запросе, и последние должны это оправдывать.
Часто задаваемые вопросы
Какой формат работает лучше?
Примеры с тегами — самое безопасное умолчание: границы переживают содержимое с Markdown или фигурными скобками. Ходы разговора часто ещё сильнее, поскольку это форма, которую модель и так понимает, но их дороже собирать.
Зачем экранировать содержимое примеров?
Потому что пример с закрывающим тегом завершил бы раздел, в котором находится, и всё после него читалось бы как инструкции, а не как содержимое. Тот же класс проблемы, что SQL-инъекция, только внутри промпта.
Работают ли примеры лучше описания?
Для формата — почти всегда. Проработанный пример закрепляет форму ответа так, как не закрепляет абзац с её описанием. Там, где нужно суждение, описанное правило обычно обобщается лучше.
Есть ли цена у большого числа примеров?
Есть: они уходят с каждым запросом. Несколько штук не проблема, за дюжиной стоит пересмотреть, — поэтому число и отмечается, а не копится молча.
Должны ли примеры быть настоящими случаями?
Настоящие лучше: выдуманные обычно опрятнее реальности и учат опрятному случаю. Проверьте только, нет ли в них того, чего вы не хотели бы в многократно отправляемом промпте.
Связанные инструменты
XML-разделы промпта — Оберните разделы в теги, из которых содержимое не вырвется.