В 1920-х годах советский кинематографист Лев Кулешов понял то, с чем мы до сих пор мучаемся в AI.
Он взял один и тот же кадр актёра с пустым выражением лица и смонтировал его с тремя разными сценами: тарелка супа, мёртвый ребёнок и женщина, лежащая на диване. Зрители увидели голод, горе и желание, хотя лицо актёра не менялось.
Смысл был не в самом лице. Он возникал из того, что люди видели рядом с ним.
Что-то похожее происходит с LLM: один и тот же токен можно понимать очень по-разному в зависимости от окружающего контекста. Self-attention, конечно, сложнее монтажа, но, на мой взгляд, это сравнение полезно при построении агентов.
Когда агент падает, первое, что мы обычно делаем, — даём ему больше контекста: больше истории чата, больше логов, больше описаний инструментов, больше инструкций. Если не помогает, думаем, что поможет окно побольше.
Но я видел, как агенты падали, когда вся нужная информация уже была в промпте. Проблема была не в том, что чего-то не хватало, а в том, что важное оказалось погребено под всем остальным.
Окно в 2 миллиона токенов само по себе эту проблему не решает. Оно просто даёт больше места, куда можно положить то, что модели не нужно, а единственное ограничение, которое действительно важно для следующего действия, теряется где-то в середине.
Мне кажется, мы всё ещё слишком часто относимся к context engineering как к задаче хранения. А большая часть работы на самом деле в другом: решить, что модель должна видеть на конкретном шаге, что можно убрать без потерь и какие фрагменты информации действительно поменяют её решение.
Агенту можно дать доступ почти ко всему, и он всё равно примет глупое решение. Потому что наличие информации и её использование в нужный момент — это две очень разные вещи.