Окно в миллион токенов звучит как приглашение положить туда весь проект. Обычно это плохая идея, и вот почему.
Что происходит при большом контексте
Три эффекта, которые видно на практике.
Цена растёт линейно. Каждый запрос оплачивает весь контекст заново. На агентном сценарии, где вызовов десятки, это умножается.
Внимание размывается. Модель хуже находит нужную деталь, когда вокруг неё сто тысяч строк не относящегося к делу кода. Иногда меньший, но точный контекст даёт лучший ответ.
Растёт задержка. Прочитать большой вход тоже стоит времени.
Когда длинный контекст оправдан
- задача требует связи между удалёнными частями, и вы заранее не знаете, какими
- документ целостный и резать его смысла нет: договор, спецификация, длинный лог одной сессии
- разовый разбор, где важнее качество, чем цена
Когда лучше резать
- вопрос узкий и вы знаете, где ответ
- обработка идёт пачкой, и один и тот же большой кусок пойдёт в каждый запрос
- работа повторяется часто, а контент меняется мало
В последних двух случаях выгоднее либо кэшировать стабильную часть, либо искать нужный фрагмент и класть только его.
Простая эвристика
Спросите себя: если бы вы решали эту задачу руками, вы бы прочитали весь проект или открыли три файла?
Если три файла, дайте модели три файла. Она не станет умнее от остальных ста.
Как это выглядит в деньгах
Возьмите размер контекста, умножьте на число вызовов и на цену входа. На агентной задаче с двадцатью шагами разница между «весь репозиторий» и «нужные файлы» часто получается на порядок.
Посчитать на своих числах можно калькулятором на сайте.
Что делать на практике
- Начните с малого контекста и добавляйте, если модель просит.
- Стабильную часть выносите в кэшируемый префикс, изменяемое кладите в конец.
- На повторяющихся задачах храните индекс и подставляйте только релевантные куски.
Коротко
Большое окно это возможность, а не инструкция. Кладите то, что нужно для задачи, а не всё, что влезает.