XML Tags Prompting — это способ разделить сложный prompt на именованные блоки: контекст, инструкции, ограничения, примеры и формат выхода. В 2026 эта техника особенно полезна для длинных, compositional и agentic prompt-цепочек, где plain text быстро превращается в кашу.
XML-теги — это просто ярлыки для частей промпта. Вместо одного длинного абзаца вы явно показываете модели: вот контекст, вот задача, вот правила, вот ожидаемый формат.
<context>У нас B2B SaaS для бухгалтерии малого бизнеса.</context>
<task>Сформулируй 3 гипотезы для роста trial-to-paid conversion.</task>
<constraints>Не предлагай скидки как основной механизм. Смотри на onboarding и activation.</constraints>
<output_format>Для каждой гипотезы: hypothesis, why it may work, experiment.</output_format>
Ответ модели
hypothesis: сократить time-to-first-value через guided onboarding
why it may work: пользователи быстрее увидят пользу до момента оплаты
experiment: A/B тест с чек-листом первых 3 действий
hypothesis: добавить шаблоны типовых операций для первого входа
why it may work: снизит friction на пустом аккаунте
experiment: сравнить activation rate новых аккаунтов
hypothesis: триггерить contextual help в критических местах настройки
why it may work: меньше отказов на сложных шагах импорта и подключения
experiment: измерить completion rate setup funnel
На практике XML-tags — это способ заставить prompt выглядеть как интерфейс между несколькими смысловыми слоями, а не как один большой текст.
XML становится особенно полезен там, где prompt уже перестаёт быть "ручным вопросом" и превращается в составной объект с несколькими независимыми слоями:
policy;
user request;
retrieved context;
tool results;
output contract.
Если эти слои не разделять, модель начинает путать:
XML теги помогают только тогда, когда отражают реальную структуру задачи. Если структура фиктивная, пользы почти нет.
Плохие паттерны:
Вкладывать теги слишком глубоко без необходимости.
Дублировать одну и ту же инструкцию в context и constraints.
Помещать retrieved documents внутрь того же тега, где лежат policy rules.
Использовать нестандартные теги вроде <super_important_secret_context_block> вместо простых имён.
Пытаться решать XML-тегами задачу, где нужен уже schema-constrained output.
Отдельная проблема — отсутствие экранирования данных. Если вы программно подставляете в XML пользовательский текст, полезно думать не только о prompt clarity, но и о том, чтобы payload не ломал структуру шаблона.
def choose_structure(input_complexity: str, output_needs_schema: bool) -> str:
if output_needs_schema:
return "schema"
if input_complexity == "high":
return "xml"
return "markdown"
Это хорошая ментальная модель:
XML в первую очередь структурирует вход;
schema в первую очередь структурирует выход.
Если prompt в основном пишется руками и читается людьми, чаще достаточно markdown. Если prompt собирается кодом и живёт в agent pipeline, XML часто удобнее.