Поговорим немного о конекст - инжиниринге. Хотел напомнить про простую, но крайне эффективную технику, которую можно применять в промптах, меморибанке, агентах.
Это XML-like теги. Рекомендации от "лучших собаководов" прилагаются!
https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/use-xml-tags
❓ Почему я пришу XML-like, а не XML? Потому что это не "классический" XML со схемой, атрибутами тэгов, нет - без этих усложнений. Усложнения в виде схемы путают модель без очевидной необходимости. Атрибуты - по желанию, если семантика подходит.
▶️ Мы просто используем тэги в угловых скобках для разметки структуры промптов. Какие задачи наиболее эффективно решаются:
- явная разметка начала и конца некоего семантического блока
- явное и однозначное указание вложенности блоков друг в друга
Этого достаточно, чтобы пользоваться этим почти в каждом промпте.
❓Какие теги применять? Конечно, семантические, что даёт дополнительный плюс. Пример:
<инструкции>
...
<некий_блок>
...
<вложенный_блок>
...
</вложенный_блок>
...
<и_еще_один>
...
</и_еще_один>>
</некий_блок>
...
</инструкции>
Думаю, идея понятна. В сложных случаях: <элемент_списка порядковый_номер="1" важность="обычная">
❓ Зачем такие сложности? Чтобы явно показать структуру, когда она не тривиальная. С тривиальной и маркдаун вполне подходит, а вот вложденные многоуровневые списки модель иногда "парсит" с ошибками: проверка может быть очень простая - попросите модель составить структуру вашего промпта с многоуровневыми нумерованными элементами структуры, можно иногда удивится!
❓ А как же маркдаун? Такие теги с ним вполне совместимы. Я пишу обычные md файлы и добавляю xml-like теги в "сложные места", где модель можнт неоднозначно определить логическое начало и конец блоков.
❓Можешь пояснить "за фрактальный промптинг"? Конечно, и, как ни странно - сабж и xml теги вполне себе имеют место быть: для авторегрессионных казуальных моделей (а это почти все современные трансформеры, с треуголными масками внимания на всех этапах обработки, включая prefill) - они "условно" читают текст слева направо, поэтому наличие уникального закрывающего тега для них "удобно".
ℹ️ Удобно в кастомной слеш команде делать так:
some_command.md:
Вот команда пользователя:
<команда_пользователя>
$ARGUMENTS
</команда_пользователя>
И дополнительно делай так: ...
❓ Что именно улучшают тэги? Только восприятие моделью
структуры промпта - содержательно тэги сами по себе не будут какой то магической «пилюлей».
#post
@deksden_notes