Перейти к основному содержимому
Средний

Инженерия контекста

Инженерия промптов — про слова, которые вы выбираете. Инженерия контекста — про рабочее пространство, которое вы вручаете модели: что в нём, в каком оно порядке и что вы намеренно оставили снаружи.

Это различие важно, потому что контекстное окно — не блокнот. Это ограниченный, дорогой ресурс внимания. То, как вы его заполняете, меняет, на чём модель фокусируется, сколько это вам стоит и остаётся ли она полезной по мере роста сессий.

Бюджет контекста

У каждой модели есть максимальный размер контекста — жёсткий потолок, измеряемый в токенах. Считайте его бюджетом. Вы тратите его на:

  • Ваш системный промпт и постоянные инструкции
  • Найденные документы, фрагменты кодовой базы, определения инструментов
  • Историю разговора
  • Вывод модели (который в многоходовых сессиях тоже идёт в зачёт окна)

Когда вы исчерпываете лимит, чем-то приходится поступиться. Либо старое содержимое отбрасывается, либо сессия упирается в стену.

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

Гниение контекста и «потеря в середине»

В LLM с длинным контекстом есть хорошо задокументированное явление: модели уделяют непропорционально много внимания содержимому у начала и конца контекста, а их способность вспоминать содержимое, погребённое в середине, ухудшается. Исследователи, изучавшие этот эффект, назвали его «потерей в середине» (lost in the middle).

Практическое следствие: если вы набьёте контекст на 100 000 токенов документами и закопаете самую критичную инструкцию на позиции 60 000, модель может фактически её проигнорировать — не потому, что не способна читать так далеко, а потому, что внимание распределено по окну неравномерно.

«Гниение контекста» (context rot) — это более широкий паттерн: по мере роста сессии качество ответов склонно дрейфовать. Ранние инструкции размываются. Повторяющийся обмен репликами вытесняет исходную задачу. Модель начинает осторожничать, повторяться или терять нить того, о чём вы на самом деле просили.

Это не баги, которые можно полностью устранить более удачным промптом. Это структурные свойства того, как внимание работает в масштабе. Инженерный ответ — держать контекст меньше и острее, а не набивать его и надеяться.

Порядок имеет значение

Где вы размещаете содержимое, столь же важно, как и то, что вы включаете. Устоявшаяся хорошая практика:

ПозицияЧто туда класть
Самый верх (системный промпт)Стабильные, долговечные инструкции. Персона, правила, требования к формату.
После системного промптаТекущая задача, простыми словами.
Прямо перед последним ходом пользователяСамый критичный, конкретный контекст именно для этого запроса.
СерединаВспомогательные документы, найденные фрагменты — упорядоченные по релевантности, а не по хронологии.
История разговораТолько то, что необходимо для непрерывности. Подрезайте агрессивно.

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

Извлечение вместо набивания

Соблазн — засунуть всё: все документы, всю кодовую базу, весь разговор. Сопротивляйтесь ему.

Лучший подход — избирательное извлечение: определите, что модели действительно нужно для этого конкретного запроса, и впрысните только это. Удачно извлечённый фрагмент нужного документа на 2000 токенов превосходит свалку на 40 000 токенов, где ответ где-то в середине.

Именно для этого существует генерация с дополнением извлечением (RAG) — не просто чтобы преодолеть лимиты контекста, но чтобы повысить качество, удерживая контекст отобранным.

Для интерактивных сессий действует та же логика: вместо того чтобы накапливать всё, периодически уплотняйте или очищайте историю, удаляя содержимое, которое больше не релевантно текущей задаче. Команды /compact и /clear в Claude Code — это инструменты инженерии контекста, а не просто управления сессией.

Угол затрат

Токены, которые вы отправляете, — это токены, за которые вы платите, и деньгами, и задержкой. Набивание контекста слабо релевантным материалом раздувает и то, и другое. Инженерия контекста и эффективность затрат — это одна и та же проблема.

Конкретнее:

  • За раздутый системный промпт, который вы копируете из шаблона, вы платите при каждом вызове.
  • За старую историю разговора, которую вы тащите дальше, потому что «вдруг пригодится», вы платите при каждом вызове.
  • За документы, которые вы впрыскиваете «на всякий случай», вы платите при каждом вызове.

Обрезка того, чему там быть не нужно, одновременно лучше для качества и дешевле в эксплуатации.

Практические приёмы для пользователей Claude

В Claude.ai:

  • Используйте отдельные разговоры для отдельных задач. Не позволяйте послеобеденным отступлениям засорять контекст сфокусированного проекта.
  • Резюмируйте длинные ветки перед тем, как задать сложный вопрос, зависящий от них. Явная сводка часто полезнее сырой истории.
  • Кладите конкретное, что вам нужно, в конец длинного сообщения, а не закапывайте в середину.

В Claude Code:

  • Держите файл CLAUDE.md лаконичным. Каждая строка в нём впрыскивается в каждую сессию. См. CLAUDE.md и Управление контекстом.
  • Используйте /clear при переключении на по-настоящему другую задачу. Используйте /compact, когда хотите продолжить, но сессия растёт.
  • Ссылайтесь на файлы по пути, а не вставляйте их содержимое, когда полный файл для текущего шага не нужен.

На уровне API:

  • Проектируйте системные промпты так, чтобы они содержали только то, что действительно нужно каждому запросу. Перенесите инструкции под конкретную задачу в ход пользователя.
  • Для сценариев с большим объёмом документов извлекайте и впрыскивайте релевантные фрагменты, а не загружайте весь корпус.
  • Структурируйте промпт так, чтобы стабильный, переиспользуемый префикс шёл первым — это также включает кэширование промптов, естественного спутника инженерии контекста.

Сдвиг в мышлении

Инженерия промптов спрашивает: «Что мне сказать?» Инженерия контекста спрашивает: «Что модель должна увидеть, в каком порядке и что мне стоит намеренно держать снаружи?»

Второй вопрос труднее, но именно он на самом деле определяет качество в масштабе.

Связанные материалы