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