К содержимому

Длинный промт: разметка, документы и цитаты

Пока промт умещается в пару абзацев, его структура не так важна. Но когда в него попадают спецификация на 30 страниц, лог ошибок, три файла кода и вопрос в конце, модель начинает путать, где инструкция, а где данные, теряет детали из середины и отвечает «по памяти» вместо текста. Статья о том, как организовать большой промт: разделители, порядок частей, работа с несколькими документами и приём с цитатами, который снижает число выдуманных ответов.

Разделяйте части промта

Модель читает промт как сплошной текст. Если инструкции, данные и примеры идут вперемешку, она может принять фразу из документа за указание или проигнорировать правило, затерявшееся между абзацами. Решение — явные границы.

Все три крупных разработчика моделей рекомендуют одно и то же: отделять разделы разметкой. OpenAI предлагает для этого Markdown, XML-теги или заголовки разделов, Anthropic — XML-теги с понятными именами. Конкретный синтаксис не важен; важно, чтобы он был единообразным.

<instructions>
Проверь техническое задание на противоречия и пропущенные требования.
Для каждой проблемы укажи раздел ТЗ и предложи формулировку исправления.
</instructions>

<context>
Проект — внутренний сайт учёта заявок, 30 пользователей, PHP 8.2,
PostgreSQL 15. Заказчик не технический специалист.
</context>

<document>
{текст ТЗ}
</document>

Советы по тегам:

  • имена говорят о содержимом: <contract>, <error_log>, <user_question>, а не <a>, <b>;
  • одинаковые имена во всех промтах проекта — так проще поддерживать шаблоны;
  • вложенность, когда она естественна: документы внутри <documents>, каждый — в своём <document>;
  • в инструкциях ссылайтесь на теги по имени: «используя договор из тега <contract>…».

Разметка нужна модели, а не человеку. Теги не обязаны быть валидным XML — достаточно, чтобы границы были однозначными.

Сначала данные, вопрос — в конце

Для длинных входов (Anthropic называет порог примерно в 20 тысяч токенов, это десятки страниц текста) порядок частей заметно влияет на качество. Рекомендация Anthropic: длинные документы ставить в начало промта, а вопрос, инструкции и примеры — после них. По внутренним тестам компании вопрос в конце улучшал качество ответов до 30%, особенно на сложных задачах с несколькими документами.

<documents>
  {документы}
</documents>

<instructions>
{что сделать с документами}
</instructions>

{конкретный вопрос}

Причина интуитивно понятна: модель дочитывает документы, уже «помня» их, и сразу получает задание. Если вопрос стоит в начале, а за ним 50 страниц текста, к концу чтения задача отодвигается далеко назад.

Несколько документов

Когда документов несколько, дайте каждому метаданные: откуда он, какой версии, за какой период. Так модель сможет сослаться на конкретный источник и не перепутать факты из разных файлов.

<documents>
  <document index="1">
    <source>tz-v2.docx</source>
    <date>2026-09-15</date>
    <document_content>
      {текст ТЗ}
    </document_content>
  </document>
  <document index="2">
    <source>meeting-notes-2026-10-01.md</source>
    <document_content>
      {протокол встречи}
    </document_content>
  </document>
</documents>

Сравни требования из ТЗ с решениями из протокола встречи. Для каждого
расхождения укажи номер документа и раздел.

Если в документах есть противоречия — а в реальных проектах они почти всегда есть, — скажите модели, какой источник главнее: «при расхождении верен более поздний документ» или «протокол встречи важнее ТЗ».

Цитаты перед ответом

Самый полезный приём для длинных текстов — попросить модель сначала выписать дословные цитаты, относящиеся к вопросу, а потом отвечать, опираясь только на них. Anthropic рекомендует его именно для длинных документов: модель фокусируется на нужных местах и меньше отвлекается на остальной текст.

<documents>
  {договор и приложения}
</documents>

Найди в договоре всё, что касается сроков оплаты и штрафов за просрочку.
Сначала выпиши дословные цитаты в теги <quotes>, с номером пункта
у каждой. Затем в тегах <answer> кратко ответь: сколько дней на оплату
и какой штраф за просрочку. Используй только факты из цитат.
Если нужной информации в договоре нет, так и напиши.

Чем это полезно:

  • проверяемость — вы сверяете цитату с документом за секунды, а не перечитываете договор;
  • меньше выдумок — ответ опирается на конкретный текст, а не на «как обычно бывает в договорах»;
  • видно, где модель ошиблась — неверная цитата или неверный вывод из верной цитаты.

Важная деталь — разрешение сказать «не знаю». Без него модель старается ответить любой ценой и может дополнить пробелы правдоподобными, но выдуманными деталями.

Ограничивайте контекст

Больше — не всегда лучше. Каждый лишний документ — это шум, среди которого модели нужно найти нужное, и деньги за токены. OpenAI отдельно предупреждает, что модели рассуждений при избытке подгруженного контекста начинают «передумывать» и отвечают дольше.

Практические правила:

  • давайте то, что относится к задаче: не весь репозиторий, а нужные файлы; не весь лог, а ошибки за последний час;
  • убирайте мусор: HTML-разметку, повторяющиеся колонтитулы, служебные строки логов;
  • разбивайте большие задачи: сначала извлечь факты из каждого документа отдельно, потом свести их вместе — это называется цепочкой промтов. Промежуточные результаты можно проверить и сохранить;
  • в поиске по базе знаний (RAG) передавайте меньше, но точнее найденных фрагментов вместе с их источниками.

Шаблон для анализа документов

<documents>
  <document index="1">
    <source>{имя файла}</source>
    <document_content>
      {текст}
    </document_content>
  </document>
</documents>

<context>
{кто вы, для чего анализ, кто прочитает результат}
</context>

<instructions>
1. Выпиши в <quotes> дословные цитаты, относящиеся к вопросу,
   с номером документа и раздела.
2. В <answer> ответь на вопрос, опираясь только на цитаты.
3. Если ответа в документах нет — напиши об этом и не додумывай.
4. При противоречии между документами укажи его и считай верным {правило}.
</instructions>

Вопрос: {вопрос}

Шпаргалка

Проблема Приём
Модель путает инструкции и данные Разделить части тегами или заголовками
Теряет детали в длинном тексте Документы в начало, вопрос в конец
Путает источники Метаданные у каждого документа
Выдумывает факты Сначала цитаты, разрешить ответ «нет данных»
Документы противоречат друг другу Указать, какой источник главнее
Долго и дорого Убрать лишний контекст, разбить задачу на шаги

Источники