Проблема: Контекстный рот и квадратичная сложность
Кодинг-агенты, которые успешно диагностируют ошибку на третьем шаге, могут предложить откатить исправление на сороковом. Это явление называется контекстным ротом (context rot). Оно возникает не из-за нехватки памяти, а из-за того, как трансформеры обрабатывают внимание. Модель вычисляет попарные отношения между каждой парой токенов, что создает квадратичную сложность ($n^2$). По мере заполнения окна внимания, способность модели точно вспоминать конкретную информацию падает, даже если технически она может удержать все токены.
Эффект «Потерянного в середине»
Позиция информации так же важна, как и ее объем. Исследование Стэнфорда (2023 г.), опубликованное в Transactions of the Association for Computational Linguistics, выявило U-образную кривую производительности: модели лучше всего извлекают ответы, если они находятся в начале или в конце документа. Если критически важная информация попадает в центральную треть длинного ввода (например, 50 000 токенов), вероятность ее корректного использования резко снижается.
Что реально заполняет окно контекста
Разработчики часто недооценивают объем данных, потребляемых Claude. В лимит окна входят не только сообщения чата, но и:
- Системный промпт;
- Определения инструментов (tool definitions), даже если они не используются;
- Результаты выполнения инструментов (tool results) — главный «скрытый» потребитель;
- Вывод модели за предыдущий шаг, включая расширенное мышление (extended thinking).
Сравнение: Промпт-инжиниринг vs Контекстный инжиниринг
Важно различать эти две дисциплины. Промпт-инжиниринг касается формулировок инструкций, тогда как контекстный инжиниринг — это курирование всего, что видит модель во время инференса. Ошибочное предположение, что большее окно контекста автоматически означает лучшую память, приводит к тихим сбоям в продакшене.
| Аспект | Промпт-инжиниринг | Контекстный инжиниринг |
|---|---|---|
| Фокус | Структура и формулировка инструкций | Кураторство входных данных во время инференса |
| Что включает | Системные инструкции, запросы пользователя | Историю сообщений, результаты инструментов, определения инструментов |
| Основная проблема | Непонимание модели задачи | Контекстный рот, потеря внимания, эффект «потерянного в середине» |
Вывод для разработчиков
Просто удлинение системного промпта или добавление большего количества извлеченных документов не гарантирует улучшения результатов. Для создания надежных систем необходимо применять техники осознанного управления контекстом: фильтрацию шума, сжатие истории и размещение критически важных данных в начале или конце окна, чтобы избежать деградации точности.
Источник: Towards AI pub ↗
