XML-теги для организации контента

XML-теги для организации контента

Разделители, которые мы освоили в прошлом уроке, отлично работают для простых случаев. Но когда промпт становится сложным — много секций, вложенные данные, несколько примеров — на помощь приходят XML-подобные теги. Они создают древовидную структуру, которую модель понимает почти так же хорошо, как программист — код.

Почему XML, а не что-то другое

Современные языковые модели обучались на огромном количестве текстов, содержащих XML и HTML. Они «понимают» концепцию открывающих и закрывающих тегов, вложенности и атрибутов на очень глубоком уровне. Когда модель видит <document>...</document>, она автоматически воспринимает содержимое как единый блок с определённым смыслом.

Базовый синтаксис

<тег>содержимое</тег>

В отличие от настоящего XML, в промптах не нужно соблюдать строгую валидность. Достаточно:

  • Открывающий тег: <instruction>
  • Закрывающий тег: </instruction>
  • Вложенность: <section><subsection>...</subsection></section>

Пример: от разделителей к XML

С разделителями (из прошлого урока):

## ЗАДАЧА
Проанализируй документ.

## ДАННЫЕ
[ДОКУМЕНТ_НАЧАЛО]
...текст документа...
[ДОКУМЕНТ_КОНЕЦ]

## ТРЕБОВАНИЯ
- Краткость
- Деловой стиль

То же с XML-тегами:

<task>Проанализируй документ.</task>

<document>
...текст документа...
</document>

<requirements>
- Краткость
- Деловой стиль
</requirements>

Преимущества XML: теги короче, легко вкладываются, модель «знает» этот формат из обучения.

Вложенные структуры

Настоящая сила XML — во вложенности. Вот пример промпта для анализа нескольких документов:

<task>Сравни два документа и найди расхождения.</task>

<documents>
  <document id="1">
    <title>Договор аренды от 15.01.2025</title>
    <content>
    Арендодатель передаёт помещение площадью 50 кв.м.
    Арендная плата: 30 000 руб./мес.
    </content>
  </document>

  <document id="2">
    <title>Дополнительное соглашение от 01.03.2025</title>
    <content>
    Арендная плата повышается до 35 000 руб./мес.
    Площадь аренды увеличивается до 55 кв.м.
    </content>
  </document>
</documents>

<requirements>
- Выпиши только расхождения в виде таблицы.
- В таблице 3 колонки: параметр, документ 1, документ 2.
</requirements>

Модель видит иерархию: <documents> содержит два <document>, у каждого есть <title> и <content>. Она не спутает заголовок первого документа со вторым.

XML для few-shot примеров

Особенно полезны теги для организации примеров:

<instruction>
Классифицируй обращение клиента.
Категории: жалоба, вопрос, предложение.
</instruction>

<examples>
  <example>
    <input>Почему мой заказ до сих пор не отправлен?</input>
    <output>вопрос</output>
  </example>
  <example>
    <input>Курьер нахамил и бросил пакет у двери!</input>
    <output>жалоба</output>
  </example>
  <example>
    <input>Было бы удобно, если бы вы добавили оплату через СБП.</input>
    <output>предложение</output>
  </example>
</examples>

<query>
<input>Когда уже исправите баг с авторизацией?</input>
</query>

Теги <example>, <input>, <output> явно определяют, что есть что. Модель не спутает пример с реальным запросом.

Когда использовать XML, а когда разделители

СитуацияЧто выбрать
Одна секция данныхРазделители (###, ---, [TEXT])
Несколько однотипных блоковXML теги
Вложенные данныеТолько XML
Few-shot с примерамиXML (чётко отделяет примеры друг от друга)
Короткий промпт (< 100 слов)Ничего, достаточно абзацев

Типичная ошибка: незакрытые теги

Если открыл <document>, обязательно закрой </document>. Модель может воспринять незакрытый тег как границу, и весь последующий текст окажется «внутри» тега.

Плохо:

<document>
...текст документа...

<instruction>Напиши краткое содержание.</instruction>

Модель может решить, что <instruction> — это часть документа, а не команда для неё.

Хорошо:

<document>
...текст документа...
</document>

<instruction>Напиши краткое содержание.</instruction>

Проверь себя

У тебя задача: модель должна обработать 5 студенческих эссе, для каждого указать тему, оценку (1–10) и комментарий. Как организуешь промпт?

Пример ответа: <task> с задачей, <essays> как контейнер, внутри 5 блоков <essay id="...">, в каждом <text> для эссе, <output_format> с JSON-схемой для ответа. Теги иерархически отделяют эссе друг от друга и от инструкций.

Итог

  • XML-подобные теги создают древовидную структуру промпта, которую модель хорошо понимает.
  • Главное преимущество перед разделителями — вложенность: теги могут содержать другие теги.
  • Используй XML для: многосоставных данных, few-shot примеров, вложенных структур.
  • Всегда закрывай теги — незакрытый тег «съедает» последующий текст.
  • Для простых случаев разделителей достаточно. Не усложняй без необходимости.

Что дальше

Ты освоил разделители и XML-теги. В следующем уроке — практика: возьмём реальную сложную задачу и структурируем промпт от начала до конца, используя все инструменты модуля.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике