Чек-лист

Гниение контекста: почему модель тупеет после двадцатого сообщения

Первые двадцать сообщений она понимает тебя отлично, а потом начинает путаться в показаниях и тормозить. Дело не в том, что модель «тупая»: исследование показало, что данные в середине диалога теряются на 30% чаще. Разбираю, почему так, и даю три приёма, чтобы этого не происходило.

41 мин
Содержание12 глав
  1. 01Что происходит на самом деле
  2. 02Токены не решают
  3. 03Начало помнит, середина теряется
  4. 04Три модели гниют по-разному
  5. 05Приём первый: переход в новый диалог
  6. 06Приём второй: загружай всё сразу
  7. 07Приём третий: разные модели под разные задачи
  8. 08Как я распределяю задачи
  9. 09Три приёма против гниения
  10. 10Три возражения про контекст
  11. 11Что здесь мой личный опыт
  12. 12Вспомни диалог, который ты бросил

Что происходит на самом деле

Думаю, каждому знакома ситуация. Ты общаешься с моделью, она отлично тебя понимает первые 20 сообщений — а потом начинает путаться в показаниях, выдавать абсолютно противоречивые данные и в целом тормозить, из-за чего работать становится просто невозможно.

Часто люди говорят, что это модель тупит или что это какая-то проблема конкретного сервиса. Но при этом не знают, из-за чего это происходит и как на самом деле это исправить.

Исследование показывает, что модель начинает путаться ещё больше, если основные данные находятся в середине контекстного окна.

сообщений до первых сбоев
20
дальше начинаются противоречия и торможение
падение точности в середине диалога
30%
по сравнению с данными в начале
приёмов, чтобы этого не было
3
переход в новый чат, начало диалога, выбор модели

Токены не решают

То, что у каждой модели есть контекстное окно, знают, думаю, все — даже те, кто ими почти не пользуется. Контекстное окно — это сколько токенов модель может воспринимать и помнить о том, что было в начале диалога.

Но мало кто знает, что сами по себе токены практически не влияют на то, насколько хорошо модель общается.

Смотри. У Claude — 200 тысяч токенов. У ChatGPT — в районе 400 тысяч. У Gemini — миллион.

И при этом в моей работе ChatGPT спокойно вывозит очень долгие диалоги, а Gemini выкидывает ошибки: не видит картинку — это реальный случай, скриншот, который ты прикреплял, — зависает, перестаёт отвечать на банальные сообщения.

Как будто бы контекстное окно должно помогать и делать диалог лучше. На самом деле не всё так однозначно.

Claude200 тысяч токенов — самое маленькое окно, но честное
ChatGPTоколо 400 тысяч, вывозит долгие диалоги
Geminiмиллион токенов, но теряет картинки и зависает
Выводразмер окна не определяет качество работы

Начало помнит, середина теряется

В 2024 году провели исследование, из которого получилась характерная кривая.

Выяснилось: точность ответов максимальная, когда данные в начале диалога. Нормальная точность — когда данные в конце. А вот если твои данные в середине, точность падает на 30%.

Так, например, модель того времени буквально работала хуже, когда нужны были данные оттуда, где контекст ещё остаётся. Например, найти информацию в середине тридцати присланных файлов. Но при этом, если бы мы вообще убрали контекст и она перестала бы что-то помнить, — даже так она работала лучше.

По сути, внимание модели — это сравнительно скудный ресурс. Банальная математика: сначала она помнит всё, потом окно забивается, и искать нужную информацию становится всё сложнее.

Правило
Возьми любого человека. Если на столе лежит один лист с информацией, ты найдёшь нужное за короткий промежуток времени. Положи книгу — придётся постараться, и скорее всего ты психанёшь и просто перестанешь искать. То же самое происходит и с моделями.

Три модели гниют по-разному

Так называемое гниение контекста — когда чат со временем перестаёт работать — у каждой нейросети выглядит по-разному. Расскажу на личных примерах: я пользуюсь всеми тремя.

У Gemini это выглядит максимально стрёмно. Когда память сгнивает и диалог превышен — а это в среднем 40-80 сообщений, всё зависит от объёма загруженных данных, — он просто начинает путаться. Самые большие сбои: перестаёт принимать картинки, вообще их не видит, делает вид, что их не существует, и просто перестаёт отвечать на вопросы. Я пишу, что у меня сегодня по плану на завтрак — программа питания у меня в документе, я его отправляю, — а он говорит: не знаю, если честно.

У Claude ситуация иначе. Это одна из самых послушных нейросетей, объясню почему. Когда контекст у него сгнивает — а сгнивает он минимум раза в три быстрее, чем у ChatGPT, и минимум раза в два быстрее, чем у Gemini, — Claude абсолютно честно показывает тебе окно. Он пакует все данные, которые были в предыдущем контексте, и сам себе отправляет сводку. Таким образом на следующий отрезок у тебя остаётся почти всё окно, но он примерно помнит всё в виде сводки и продолжает работать без лагов и зависаний.

Интереснее с ChatGPT. Он, в отличие от Gemini, не начнёт тупить и говорить «я не знаю», путаться в показаниях почти никогда не будет. Но когда ты очень-очень долго с ним общаешься, он начинает безумно тормозить — ощущение, что что-то забилось и пора переходить в новый чат.

Gemini
путается и молчит
перестаёт видеть картинки, не отвечает на простое
Claude
предупреждает честно
пакует сводку сам и работает дальше без лагов
ChatGPT
тормозит, но не врёт
в показаниях почти никогда не путается

Приём первый: переход в новый диалог

Когда чат становится слишком большим, самое время переходить в другой. Это бывает достаточно больно: ты можешь долго готовить какой-нибудь сценарий, а он зависает на середине, и всё надо переносить.

Расскажу про себя. Когда я разрабатывал свой сервис через Claude Code, я изначально продумывал с моделью, какие вещи будут на сайте. И проблема была в том, что диалог заканчивается, а функцию я ещё не доделал. Например, мне нужно сделать систему работы с клиентами. Половину сделал, а с половиной надо переходить в новый диалог. Вот здесь и возникают трудности — поэтому люди готовы, чтобы модель тормозила, лишь бы контекст не потерялся.

На самом деле всё делается максимально просто.

Первое, самое простое: скопировать всё из предыдущего диалога, загрузить в документ, перебросить в любую нейросеть и сказать «сократи до самого важного». И вот это уже использовать как контекст для нового диалога.

Второе: держать постоянную часть в проекте. Покажу на своём. У меня есть проект, где я создаю сценарии. Там записан стандартный мастер-запрос, который всегда остаётся, — это первая часть. Вторая часть: файлы, которые всегда нужны в работе. Портрет целевой аудитории, как мы его видим. Моя манера речи как автора. Цепляющие видео разных авторов в теме, набравшие много просмотров. Расшифровки образцовых роликов и моих собственных. И когда я спрошу его в новом диалоге, он уже всё это будет видеть.

И третье, наверное, самое важное. Не парься с формулировками — просто напиши ему: дай переходный запрос для другого диалога. И он всё перенесёт сам. С таким переходным запросом нейросеть не будет тормозить никогда: ты один раз заметил, перешёл в новый диалог — и всё летает.

01
Заметить момент
не ждать, пока начнёт врать
чат стал большим, начались тормоза
02
Попросить переходный запрос
модель переносит контекст сама
дай переходный запрос для другого диалога
03
Постоянная часть в проекте
не переносится вручную каждый раз
мастер-запрос и файлы, нужные всегда
04
Новый диалог
всё летает, мучиться не нужно
роль, контекст и файлы сразу в начале

Приём второй: загружай всё сразу

Вторая вещь, которую точно нужно соблюдать. Раз мы теперь знаем, что лучше всего нейросеть помнит начало диалога и практически ничего оттуда не забывает, — значит, туда и надо класть главное.

Худшее, что ты можешь сделать, — написать «я хочу сделать такую-то задачу, давай подумаем». На самом деле это нормально: брать интервью у нейросети по контексту задачи правильно. Просто потом, как только контекст заканчивается, в другом диалоге переходи уже с полным мастер-запросом, чтобы ей было проще за него зацепиться.

Но я стараюсь делать иначе, чтобы работало ещё лучше. В начале я всегда пользуюсь улучшателем перед тем, как написать запрос, — он помогает откопать в том числе то, до чего я бы не додумался.

Разберём на простом примере. Я планирую писать посты: сделай запрос, в котором я пришлю все свои сообщения, он посмотрит мой контекст, то, как я пишу, мои речевые обороты, запомнит всю информацию обо мне и после этого будет готов писать посты — я просто присылаю текст, он пишет пост.

Отправляем это в улучшатель и получаем максимально переработанный запрос. Он не даст любой нейросети от него отходить.

И вместе с этим запросом, когда я присылаю его в новом диалоге, я сразу загружаю все необходимые файлы и все образцы — чтобы запрос стал основой будущего контекста.

Правило
Тут даже, наверное, самое важное не запрос, а контекст, который ты загружаешь по своей задаче. Нужно исследование — загрузи сразу все файлы. Не по очереди и не раз в час.

Приём третий: разные модели под разные задачи

Последнее, что нужно понимать: каждая нейросеть годится для своих задач идеально. Сейчас уже не существует единой нейросети, которой можно пользоваться универсально.

Мне лично больше всего подходит Claude — и то всё равно. Я оплачиваю подписку и на Perplexity, и на Gemini, и на ChatGPT, и на Claude. Просто на Claude у меня старшая подписка, а на все остальные — стандартная.

Почему я так делаю? Потому что в зависимости от задачи разная нейронка подходит лучше всего. А у меня полдня — это работа с нейронками.

Разберём на конкретном примере. У ChatGPT есть три модели. Автоматический выбор я никогда не беру: он, как правило, выбирает не самую лучшую модель для конкретной задачи.

Быстрая — для простых задач, не требующих большого контекста. В течение дня узнать факт, посчитать пример, сделать аналитику таблицы, где только математика и думать не надо. Её хватит на 30-40 сообщений без больших файлов, зато она будет работать быстрее.

Думающая модель будет забирать твоё время. Она будет думать, даже если ты спросишь что-то простое, — может уйти в размышления на десять минут. И она же этим загрузит свой контекст, потому что будет помнить источники и всё, что делала. То есть с каждым диалогом, даже с простыми задачами, она будет забиваться.

Значит ли это, что думающую модель использовать нельзя? Нет, она как раз для сложных задач. Просто сложных задач среднестатистический человек делает не так много.

нужно выбрать одну нейросеть и работать только в ней
Значит ли это, что думающую модель использовать нельзя?
автоматический выбор модели сам подберёт лучшую
Думающая модель будет забирать твоё время
думающая модель всегда даёт результат лучше
Быстрая — для простых задач, не требующих большого контекста

Как я распределяю задачи

С Gemini я вообще не работаю над задачами с большим контекстом, потому что он его теряет. В какой-то момент перестают загружаться фотографии. И самое главное: он может потерять контекст до того, как я попросил переходный запрос. А раз переходного запроса нет, приходится копировать самому. Мне такое не нравится.

Для меня это просто быстрая нейронка, чтобы что-то спросить в течение дня. Например, я в стране, где не знаю языка и не знаю кухни. Есть меню, лень переводить, да я и не пойму, что это такое. Скину ему — он знает мои вкусовые предпочтения и максимально быстро скажет, что мне есть. Контекст сбивается часто, но зато это работает быстро: у другой модели я по семь минут ответ ждал, а это, конечно, неэффективно.

А Claude я как раз использую для больших задач, потому что у него честное окно контекста. Если контекст заканчивается, он тебе об этом говорит. И не просто говорит — сам делает переходный запрос и оставляет тебя внутри того же диалога, который ты можешь вести хоть до самого конца.

Плюс, когда всё лежит в одном проекте, контекст работает так, что он нормально подгружает данные из одного диалога в другой. В отличие от остальных, которые тоже имеют контекст между диалогами, но делают это максимально паршиво и часто берут не те данные.

Быстрые вопросы в течение днямодель, где контекст не важен, зато отвечает мгновенно
Большие задачи и разработкамодель с честным окном и переходным запросом
Долгие диалоги без больших файловмодель, которая не путается, но со временем тормозит
Простая арифметика и фактыбыстрая модель, хватит на 30-40 сообщений
Сложная задачадумающая модель — но её забивает собственный поиск
Автоматический выборне брать: подбирает не лучшее

Три приёма против гниения

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

Теперь ты сможешь работать с моделями более честно: понимать их контекстное окно и понимать, когда стоит перейти в новый диалог.

01
Переход в новый диалог
постоянная часть живёт в проекте
попросить переходный запрос
02
Начало диалога
главное в начало, а не в середину
весь контекст и файлы сразу
03
Выбор модели
автоматический выбор не брать
одна на всё

Три возражения про контекст

«Возьму модель с самым большим окном, и проблемы не будет». У Claude окно самое маленькое из трёх, а долгие задачи он держит лучше всех. У модели с миллионом токенов диалог сыпется на 40-80 сообщениях. Размер окна не определяет качество.

«Переносить контекст вручную слишком муторно». Не нужно вручную. Просто напиши: дай переходный запрос для другого диалога. Постоянная часть — мастер-запрос и нужные файлы — вообще лежит в проекте и переносится сама.

«Если положить данные в середину, ничего страшного не случится». Случится: точность по ним падает на 30%. Именно поэтому весь контекст загружается сразу в начало, а не по одному файлу раз в час.

Что здесь мой личный опыт

Про поведение конкретных моделей я говорю по своему опыту. Безусловно, в комментариях кто-то возразит — но я рассказываю то, с чем сталкиваюсь сам, работая с нейронками полдня.

С самим контекстным окном мы особо ничего сделать не можем: это устройство моделей, а не настройка, которую можно поменять.

И ещё: скорость гниения зависит не только от модели, но и от того, сколько данных ты туда загрузил. Диапазон 40-80 сообщений — это среднее, а не гарантия.

Честно
Сложных задач среднестатистический человек делает не так много. Половина проблем с «тупящей» нейросетью — это думающая модель, запущенная там, где хватило бы быстрой.

Вспомни диалог, который ты бросил

Ты дочитал до конца — значит, вопрос не в том, тупеет ли модель. Тупеет, и предсказуемо: после двадцатого сообщения и особенно по данным из середины. Вопрос в том, сколько твоей работы уже осталось в брошенных диалогах.

Один вопрос напоследок. Ответь себе одним предложением: какую задачу ты не доделал, потому что чат начал тормозить и ты его бросил? Назови её конкретно — вернись туда и попроси переходный запрос. Я читаю.

20 — сообщений
30% — потери в середине
40-80 — сообщений до сбоя
3 — приёма