Теги существуют в промпте по одной причине: сделать однозначной границу между инструкциями и содержимым. Эта граница важнее всего, когда содержимое не ваше — вставленный документ, обращение в поддержку, что угодно от пользователя, — потому что текст, закрывающий раздел, в котором он находится, будет прочитан как инструкция. Экранирование содержимого этому препятствует, и это тот шаг, который в собранных вручную промптах пропускают чаще всего. Здесь разделы оборачиваются, их содержимое экранируется, имена приводятся к допустимым тегам — и всё работает в обратную сторону: вставьте размеченный промпт и вытащите разделы, чтобы править один из них отдельно.
Возможности
Содержимое экранируется и не может закрыть собственный раздел
Имена тегов приводятся в порядок и показываются по мере ввода
Обёртка блоком или в строку
Вытаскивает разделы из уже размеченного промпта
Находит теги, открытые и не закрытые
Загружает извлечённые разделы прямо в редактор
Пустые разделы опускаются, а не выводятся
Полный круг: обернуть, извлечь, поправить, обернуть снова
Как использовать XML-разделы промпта
Назовите каждый раздел и вставьте его содержимое
Оставьте экранирование включённым для всего, что писали не вы
Скопируйте размеченный промпт
Либо вставьте готовый, чтобы разобрать его на разделы
Пример
Ввод
Customer Ticket
Результат
<customer-ticket>…</customer-ticket>
Имена приводятся в порядок: в тегах нет пробелов и заглавных.
Частые ошибки и устранение неполадок
Имя тега меняется. — В тегах не может быть пробелов и заглавных, и они не начинаются с цифры. Приведённый вариант показан рядом с полем.
Раздел не извлекается. — Для извлечения нужен парный закрывающий тег. Незакрытые теги перечисляются отдельно, поскольку обычно они и есть настоящая поломка.
Экранировать ли собственные инструкции? — Для написанного вами это редко важно, для чужого — всегда. Оставить включённым — безопасное умолчание.
Помогают ли теги вообще? — Больше всего там, где встречаются содержимое и инструкции. Для короткого промпта без вложенного содержимого заголовки не менее ясны и стоят меньше токенов.
Часто задаваемые вопросы
Почему теги, а не заголовки?
Заголовки размечают структуру для читателя; теги размечают границу, которую содержимое не может пересечь. Когда вы вкладываете документ или текст от пользователя, важно именно второе свойство.
Останавливает ли это инъекцию промпта?
Оно убирает один конкретный путь: содержимое закрывает собственный раздел и продолжается как инструкции. Против содержимого, которое просто содержит убедительные инструкции внутри раздела, это не помогает.
Это XML?
Выглядит так и как XML не разбирается. Поэтому экранируются только три символа, которые сломали бы границу, а не производится строго правильный документ.
Можно вернуть разделы обратно?
Да — вставьте размеченный промпт, разделы будут извлечены, а затем при желании загружены в редактор, чтобы поправить один и собрать заново.
Важны ли имена тегов?
Говорящие помогают. <customer-ticket> сообщает читателю о содержимом куда больше, чем <data>, а стоит столько же.