Дрю Бройниг рассказал, чем ломается длинный контекст нейросетей и как это чинить

Дрю Бройниг рассказал, чем ломается длинный контекст нейросетей и как это чинить

Автор блога dbreunig.com Дрю Бройниг опубликовал слайды и слегка отредактированную расшифровку короткого доклада «Context Fails & Fixes» («Сбои контекста и их исправления»), с которым выступил на AGNTCon. Доклад задуман как «состояние контекстной инженерии»: как она возникла, куда пришла и куда может прийти. Главная мысль: когда создатели моделей целятся в новые возможности, они невольно создают проблемы, которые приходится решать пользователям и тем, кто строит обвязку (harness) вокруг моделей.

Автор готовит книгу «The Context Engineering Handbook». Когда в июне 2025 года он впервые говорил об этом с командой O'Reilly, его спросили: как понять, что книга не устареет через несколько недель? Он ответил, что не знает, но настроен оптимистично: давать чёткие, согласованные и негромоздкие указания всегда будет трудной задачей для ИИ, каким бы хорошим тот ни стал. Даже между людьми, которые разумны и проходят тест Тьюринга, передача инструкций и идей даётся с трудом, а у моделей к тому же свои, особые режимы сбоя.

История начинается с конца 2024 года, пика настроения «RAG мёртв»: казалось, что если окно контекста сделать достаточно большим, в него можно положить всё и не строить агентные системы. Производители моделей взялись за длинный контекст, и случился скачок от моделей с окном около 128 000 токенов к миллиону токенов, начиная с Gemini 1.5. Google даже намекала на модель с 10 миллионами токенов, но её опередила Llama 4 Scout с окном в 10 миллионов токенов; по словам автора, с инференсом были трудности, Scout не прижилась, и новых Llama больше не вышло. Миллион токенов при этом остался.

С длинным контекстом пришли четыре сбоя. Отравление контекста: в него попадает то, чему там не место (галлюцинация или неверный факт), и модель не может от этого отделаться. Отвлечение: контекст становится столь длинным, что модель начинает опираться на него сильнее, чем на собственные базовые знания. Путаница: посторонние факты, не связанные с задачей, влияют на ответ непонятным образом; автор называет это особенно коварным и приводит пример с памятью в ChatGPT или Claude, которую сам отключает, потому что модель смешивает рабочие разговоры и разговоры о проекте с сыном. Конфликт: вызовы инструментов, навыки (skills) и другая информация в обвязке начинают противоречить друг другу и работать против пользователя.

Пример отравления, Pokémon. В отчёте о Gemini 2.5 исследователи заставляли модель играть в Pokémon. В оригинальной игре 1996 года охраннику нужно дать лимонад, а в ремейке FireRed (Game Boy Advance, 2004), холодный чай. Gemini 2.5 несколько раз убеждалась, что ей нужен чай, хотя играла в старую версию: задание из FireRed сидело в весах, попало в контекст и в список дел, и модель часами пыталась найти чай или отдать его охраннику.

Пример отвлечения, статья Каролины Камасса и Дерека Шиллера «Do as I Say, Not as I Do». Модели дают инструкцию отвечать на каждый вопрос переводом вопроса на русский, а потом показывают в истории чата множество примеров, где ответы даны на французском. По словам автора, эффект затрагивает все модели: у малой Gemma 3 12B после нескольких противоречащих примеров инструкция выполняется меньше чем в половине случаев; Opus 4.6 нужно гораздо больше таких примеров, но и у неё это происходит. Там же автор вспоминает приложение к отчёту о Gemini 2.5: когда контекст заметно перерастал 100 000 токенов, агент начинал повторять действия из истории вместо новых планов. Сам он при 200 000-300 000 токенов в кодинге начинает думать о сбросе сессии; на вопрос в зале около половины слушателей подняли руки, что доводят контекст до миллиона.

Набор лекарств, по словам автора, за это время не менялся. Шесть инструментов: дополнение контекста (RAG, навыки и другие способы подтянуть нужное); подбор набора инструментов (loadout), чтобы не перегружать модель (в одной корпоративной команде ПО грузило по 600 навыков каждому инженеру на старте, и агенты резко ухудшились); карантин контекста (субагенты с пустой историей в той же среде); подрезка контекста (Claude Code и Codex, по словам автора, иногда незаметно убирают на ранних стадиях сжатия ненужные результаты инструментов); вынос информации в среду (файлы Markdown, база данных); суммаризация, то есть привычное сжатие (compaction). Всё это постепенно переезжает в обвязку.

На демонстрации в DSPy агент, это цикл while примерно на дюжину строк: модуль ReAct, инструменты в виде обычных функций Python, большая модель плюс малая быстрая модель для решений. Подбор инструментов, функция, которая по очереди спрашивает малую модель, нужен ли инструмент для запроса; карантин, субагент, выставленный как инструмент; подрезка, проход по истории с вопросом «это ещё нужно?»; сжатие, замена старых ходов краткой сводкой. Из любимых вариаций автора: сначала малой моделью отобрать важное, а затем суммаризировать уже меньший фрагмент. В сумме все четыре исправления (подбор, карантин, подрезка, сжатие) дают около 16 строк изменений. Доступная часть текста обрывается на середине демонстрации, поэтому заключительные выводы автора здесь не пересказаны.

Ключевые факты

  • Четыре сбоя длинного контекста по Бройнигу: отравление (в контекст попал неверный факт или галлюцинация), отвлечение (модель опирается на контекст сильнее, чем на базовые знания), путаница (посторонние факты влияют на ответ) и конфликт (инструменты и навыки противоречат друг другу).
  • Пример отравления: Gemini 2.5 в отчёте об игре в Pokémon несколько раз считала, что нужен чай (деталь ремейка FireRed), хотя играла в старую версию, и часами пыталась его найти.
  • Пример отвлечения: по статье Камасса и Шиллера, у Gemma 3 12B после нескольких противоречащих примеров инструкция выполняется меньше чем в половине случаев; Opus 4.6 нужно гораздо больше примеров, но эффект есть и у неё.
  • Шесть приёмов управления контекстом: дополнение, подбор инструментов (loadout), карантин, подрезка, вынос в среду, суммаризация (сжатие); всё чаще они живут в обвязке агента.
  • В демонстрации на DSPy базовый агент занимает около дюжины строк, а четыре исправления (подбор, карантин, подрезка, сжатие) добавляют примерно 16 строк.

Почему это важно

Доклад фиксирует, как изменилось представление о контексте: в конце 2024 года ждали, что окно в миллионы токенов сделает отбор информации ненужным, а на практике длинный контекст принёс собственные сбои. Автор показывает это на конкретных случаях: Gemini 2.5 зацикливалась на «чае» в Pokémon и повторяла действия из истории после примерно 100 000 токенов. Важный тезис: набор базовых приёмов с появлением новых возможностей моделей почти не меняется, а сложность контекстной инженерии остаётся, потому что чёткие и согласованные инструкции трудны всегда.

Кому это важно

Тем, кто строит агентов и обвязку вокруг моделей, и тем, кто много работает с ИИ-помощниками для кода: автор спрашивал зал, кто доводит контекст до миллиона токенов, и около половины подняли руки. Также полезно командам, подключающим к агентам много инструментов и навыков, как та корпоративная команда с 600 навыками на старте.

Как это применить

Автор перечисляет шесть приёмов: дополнение контекста (RAG, навыки), подбор набора инструментов, карантин через субагентов с пустой историей, подрезку ненужных результатов инструментов, вынос информации в файлы или базу данных и суммаризацию. В демонстрации на DSPy подбор инструментов, подрезка и отбор перед сжатием выполняются малой быстрой моделью, а четыре исправления добавляются примерно 16 строками. Сам автор при 200 000-300 000 токенов в кодинге начинает присматриваться к сбросу сессии, но подчёркивает, что это его личная привычка, а не правило. При подрезке истории он советует помнить о кэшировании промптов.

Можно ли доверять

Это расшифровка доклада и личное мнение практика, а не исследование: новых измерений автор не приводит. Результаты по Gemini 2.5 (Pokémon, порог около 100 000 токенов) и по Gemma 3 12B и Opus 4.6 (статья Камасса и Шиллера) он пересказывает по чужим работам, и в доступном тексте они не воспроизведены. Для Opus 4.6 точных цифр не приведено, сказано лишь, что нужно гораздо больше примеров. Доступная часть материала обрывается на середине демонстрации, поэтому заключительные разделы автора не видны.

Риски и подводные камни

Примеры автора, в том числе история про 600 навыков, отдельные случаи, а не измеренные закономерности. Порог в 200 000-300 000 токенов, личная привычка автора. Подрезка и перезапись истории могут конфликтовать с кэшированием промптов, о чём автор предупреждает. Сам он отмечает, что режимы сбоя вроде путаницы тонко влияют на ответы и плохо изучены, а часть чистки (например, подрезка в Claude Code и Codex) может происходить без ведома пользователя.

«Давать чёткие указания о том, что делать и чего не делать, и следить, чтобы они были согласованными и не шумными, всегда будет сложной задачей для ИИ, как бы хорош он ни стал.»

— Дрю Бройниг, доклад «Context Fails & Fixes» на AGNTCon