Пока промт умещается в пару абзацев, его структура не так важна. Но когда в него попадают спецификация на 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>
Вопрос: {вопрос}
Шпаргалка
| Проблема | Приём |
|---|---|
| Модель путает инструкции и данные | Разделить части тегами или заголовками |
| Теряет детали в длинном тексте | Документы в начало, вопрос в конец |
| Путает источники | Метаданные у каждого документа |
| Выдумывает факты | Сначала цитаты, разрешить ответ «нет данных» |
| Документы противоречат друг другу | Указать, какой источник главнее |
| Долго и дорого | Убрать лишний контекст, разбить задачу на шаги |
Источники
- Prompting best practices: Long context prompting — Anthropic.
- Reasoning best practices — OpenAI.
- Prompt design strategies — Google, Gemini API.