Гниение контекста: почему модель тупеет после двадцатого сообщения
Первые двадцать сообщений она понимает тебя отлично, а потом начинает путаться в показаниях и тормозить. Дело не в том, что модель «тупая»: исследование показало, что данные в середине диалога теряются на 30% чаще. Разбираю, почему так, и даю три приёма, чтобы этого не происходило.
Содержание12 глав
- 01Что происходит на самом деле
- 02Токены не решают
- 03Начало помнит, середина теряется
- 04Три модели гниют по-разному
- 05Приём первый: переход в новый диалог
- 06Приём второй: загружай всё сразу
- 07Приём третий: разные модели под разные задачи
- 08Как я распределяю задачи
- 09Три приёма против гниения
- 10Три возражения про контекст
- 11Что здесь мой личный опыт
- 12Вспомни диалог, который ты бросил
Что происходит на самом деле
Думаю, каждому знакома ситуация. Ты общаешься с моделью, она отлично тебя понимает первые 20 сообщений — а потом начинает путаться в показаниях, выдавать абсолютно противоречивые данные и в целом тормозить, из-за чего работать становится просто невозможно.
Часто люди говорят, что это модель тупит или что это какая-то проблема конкретного сервиса. Но при этом не знают, из-за чего это происходит и как на самом деле это исправить.
Исследование показывает, что модель начинает путаться ещё больше, если основные данные находятся в середине контекстного окна.
Токены не решают
То, что у каждой модели есть контекстное окно, знают, думаю, все — даже те, кто ими почти не пользуется. Контекстное окно — это сколько токенов модель может воспринимать и помнить о том, что было в начале диалога.
Но мало кто знает, что сами по себе токены практически не влияют на то, насколько хорошо модель общается.
Смотри. У Claude — 200 тысяч токенов. У ChatGPT — в районе 400 тысяч. У Gemini — миллион.
И при этом в моей работе ChatGPT спокойно вывозит очень долгие диалоги, а Gemini выкидывает ошибки: не видит картинку — это реальный случай, скриншот, который ты прикреплял, — зависает, перестаёт отвечать на банальные сообщения.
Как будто бы контекстное окно должно помогать и делать диалог лучше. На самом деле не всё так однозначно.
| Claude | 200 тысяч токенов — самое маленькое окно, но честное |
| ChatGPT | около 400 тысяч, вывозит долгие диалоги |
| Gemini | миллион токенов, но теряет картинки и зависает |
| Вывод | размер окна не определяет качество работы |
Начало помнит, середина теряется
В 2024 году провели исследование, из которого получилась характерная кривая.
Выяснилось: точность ответов максимальная, когда данные в начале диалога. Нормальная точность — когда данные в конце. А вот если твои данные в середине, точность падает на 30%.
Так, например, модель того времени буквально работала хуже, когда нужны были данные оттуда, где контекст ещё остаётся. Например, найти информацию в середине тридцати присланных файлов. Но при этом, если бы мы вообще убрали контекст и она перестала бы что-то помнить, — даже так она работала лучше.
По сути, внимание модели — это сравнительно скудный ресурс. Банальная математика: сначала она помнит всё, потом окно забивается, и искать нужную информацию становится всё сложнее.
Три модели гниют по-разному
Так называемое гниение контекста — когда чат со временем перестаёт работать — у каждой нейросети выглядит по-разному. Расскажу на личных примерах: я пользуюсь всеми тремя.
У Gemini это выглядит максимально стрёмно. Когда память сгнивает и диалог превышен — а это в среднем 40-80 сообщений, всё зависит от объёма загруженных данных, — он просто начинает путаться. Самые большие сбои: перестаёт принимать картинки, вообще их не видит, делает вид, что их не существует, и просто перестаёт отвечать на вопросы. Я пишу, что у меня сегодня по плану на завтрак — программа питания у меня в документе, я его отправляю, — а он говорит: не знаю, если честно.
У Claude ситуация иначе. Это одна из самых послушных нейросетей, объясню почему. Когда контекст у него сгнивает — а сгнивает он минимум раза в три быстрее, чем у ChatGPT, и минимум раза в два быстрее, чем у Gemini, — Claude абсолютно честно показывает тебе окно. Он пакует все данные, которые были в предыдущем контексте, и сам себе отправляет сводку. Таким образом на следующий отрезок у тебя остаётся почти всё окно, но он примерно помнит всё в виде сводки и продолжает работать без лагов и зависаний.
Интереснее с ChatGPT. Он, в отличие от Gemini, не начнёт тупить и говорить «я не знаю», путаться в показаниях почти никогда не будет. Но когда ты очень-очень долго с ним общаешься, он начинает безумно тормозить — ощущение, что что-то забилось и пора переходить в новый чат.
Приём первый: переход в новый диалог
Когда чат становится слишком большим, самое время переходить в другой. Это бывает достаточно больно: ты можешь долго готовить какой-нибудь сценарий, а он зависает на середине, и всё надо переносить.
Расскажу про себя. Когда я разрабатывал свой сервис через Claude Code, я изначально продумывал с моделью, какие вещи будут на сайте. И проблема была в том, что диалог заканчивается, а функцию я ещё не доделал. Например, мне нужно сделать систему работы с клиентами. Половину сделал, а с половиной надо переходить в новый диалог. Вот здесь и возникают трудности — поэтому люди готовы, чтобы модель тормозила, лишь бы контекст не потерялся.
На самом деле всё делается максимально просто.
Первое, самое простое: скопировать всё из предыдущего диалога, загрузить в документ, перебросить в любую нейросеть и сказать «сократи до самого важного». И вот это уже использовать как контекст для нового диалога.
Второе: держать постоянную часть в проекте. Покажу на своём. У меня есть проект, где я создаю сценарии. Там записан стандартный мастер-запрос, который всегда остаётся, — это первая часть. Вторая часть: файлы, которые всегда нужны в работе. Портрет целевой аудитории, как мы его видим. Моя манера речи как автора. Цепляющие видео разных авторов в теме, набравшие много просмотров. Расшифровки образцовых роликов и моих собственных. И когда я спрошу его в новом диалоге, он уже всё это будет видеть.
И третье, наверное, самое важное. Не парься с формулировками — просто напиши ему: дай переходный запрос для другого диалога. И он всё перенесёт сам. С таким переходным запросом нейросеть не будет тормозить никогда: ты один раз заметил, перешёл в новый диалог — и всё летает.
Приём второй: загружай всё сразу
Вторая вещь, которую точно нужно соблюдать. Раз мы теперь знаем, что лучше всего нейросеть помнит начало диалога и практически ничего оттуда не забывает, — значит, туда и надо класть главное.
Худшее, что ты можешь сделать, — написать «я хочу сделать такую-то задачу, давай подумаем». На самом деле это нормально: брать интервью у нейросети по контексту задачи правильно. Просто потом, как только контекст заканчивается, в другом диалоге переходи уже с полным мастер-запросом, чтобы ей было проще за него зацепиться.
Но я стараюсь делать иначе, чтобы работало ещё лучше. В начале я всегда пользуюсь улучшателем перед тем, как написать запрос, — он помогает откопать в том числе то, до чего я бы не додумался.
Разберём на простом примере. Я планирую писать посты: сделай запрос, в котором я пришлю все свои сообщения, он посмотрит мой контекст, то, как я пишу, мои речевые обороты, запомнит всю информацию обо мне и после этого будет готов писать посты — я просто присылаю текст, он пишет пост.
Отправляем это в улучшатель и получаем максимально переработанный запрос. Он не даст любой нейросети от него отходить.
И вместе с этим запросом, когда я присылаю его в новом диалоге, я сразу загружаю все необходимые файлы и все образцы — чтобы запрос стал основой будущего контекста.
Приём третий: разные модели под разные задачи
Последнее, что нужно понимать: каждая нейросеть годится для своих задач идеально. Сейчас уже не существует единой нейросети, которой можно пользоваться универсально.
Мне лично больше всего подходит Claude — и то всё равно. Я оплачиваю подписку и на Perplexity, и на Gemini, и на ChatGPT, и на Claude. Просто на Claude у меня старшая подписка, а на все остальные — стандартная.
Почему я так делаю? Потому что в зависимости от задачи разная нейронка подходит лучше всего. А у меня полдня — это работа с нейронками.
Разберём на конкретном примере. У ChatGPT есть три модели. Автоматический выбор я никогда не беру: он, как правило, выбирает не самую лучшую модель для конкретной задачи.
Быстрая — для простых задач, не требующих большого контекста. В течение дня узнать факт, посчитать пример, сделать аналитику таблицы, где только математика и думать не надо. Её хватит на 30-40 сообщений без больших файлов, зато она будет работать быстрее.
Думающая модель будет забирать твоё время. Она будет думать, даже если ты спросишь что-то простое, — может уйти в размышления на десять минут. И она же этим загрузит свой контекст, потому что будет помнить источники и всё, что делала. То есть с каждым диалогом, даже с простыми задачами, она будет забиваться.
Значит ли это, что думающую модель использовать нельзя? Нет, она как раз для сложных задач. Просто сложных задач среднестатистический человек делает не так много.
Как я распределяю задачи
С Gemini я вообще не работаю над задачами с большим контекстом, потому что он его теряет. В какой-то момент перестают загружаться фотографии. И самое главное: он может потерять контекст до того, как я попросил переходный запрос. А раз переходного запроса нет, приходится копировать самому. Мне такое не нравится.
Для меня это просто быстрая нейронка, чтобы что-то спросить в течение дня. Например, я в стране, где не знаю языка и не знаю кухни. Есть меню, лень переводить, да я и не пойму, что это такое. Скину ему — он знает мои вкусовые предпочтения и максимально быстро скажет, что мне есть. Контекст сбивается часто, но зато это работает быстро: у другой модели я по семь минут ответ ждал, а это, конечно, неэффективно.
А Claude я как раз использую для больших задач, потому что у него честное окно контекста. Если контекст заканчивается, он тебе об этом говорит. И не просто говорит — сам делает переходный запрос и оставляет тебя внутри того же диалога, который ты можешь вести хоть до самого конца.
Плюс, когда всё лежит в одном проекте, контекст работает так, что он нормально подгружает данные из одного диалога в другой. В отличие от остальных, которые тоже имеют контекст между диалогами, но делают это максимально паршиво и часто берут не те данные.
| Быстрые вопросы в течение дня | модель, где контекст не важен, зато отвечает мгновенно |
| Большие задачи и разработка | модель с честным окном и переходным запросом |
| Долгие диалоги без больших файлов | модель, которая не путается, но со временем тормозит |
| Простая арифметика и факты | быстрая модель, хватит на 30-40 сообщений |
| Сложная задача | думающая модель — но её забивает собственный поиск |
| Автоматический выбор | не брать: подбирает не лучшее |
Три приёма против гниения
Мы изучили три основные вещи, которые нужно делать, чтобы твоё общение с нейросетями не было похоже на «они тупые, они ничего не умеют, они постоянно лагают».
Теперь ты сможешь работать с моделями более честно: понимать их контекстное окно и понимать, когда стоит перейти в новый диалог.
Три возражения про контекст
«Возьму модель с самым большим окном, и проблемы не будет». У Claude окно самое маленькое из трёх, а долгие задачи он держит лучше всех. У модели с миллионом токенов диалог сыпется на 40-80 сообщениях. Размер окна не определяет качество.
«Переносить контекст вручную слишком муторно». Не нужно вручную. Просто напиши: дай переходный запрос для другого диалога. Постоянная часть — мастер-запрос и нужные файлы — вообще лежит в проекте и переносится сама.
«Если положить данные в середину, ничего страшного не случится». Случится: точность по ним падает на 30%. Именно поэтому весь контекст загружается сразу в начало, а не по одному файлу раз в час.
Что здесь мой личный опыт
Про поведение конкретных моделей я говорю по своему опыту. Безусловно, в комментариях кто-то возразит — но я рассказываю то, с чем сталкиваюсь сам, работая с нейронками полдня.
С самим контекстным окном мы особо ничего сделать не можем: это устройство моделей, а не настройка, которую можно поменять.
И ещё: скорость гниения зависит не только от модели, но и от того, сколько данных ты туда загрузил. Диапазон 40-80 сообщений — это среднее, а не гарантия.
Вспомни диалог, который ты бросил
Ты дочитал до конца — значит, вопрос не в том, тупеет ли модель. Тупеет, и предсказуемо: после двадцатого сообщения и особенно по данным из середины. Вопрос в том, сколько твоей работы уже осталось в брошенных диалогах.
Один вопрос напоследок. Ответь себе одним предложением: какую задачу ты не доделал, потому что чат начал тормозить и ты его бросил? Назови её конкретно — вернись туда и попроси переходный запрос. Я читаю.


