3,583 papers
arXiv:2605.09268 73 10 мая 2026 г. FREE

Залипание контекста: почему LLM тянут старую тему в новый разговор — и как это исправить

КЛЮЧЕВАЯ СУТЬ
Парадокс: модель говорит «понял, переключаемся» — и всё равно тащит старую тему в ответ. Метод явного контекстного разрыва позволяет надёжно сбрасывать накопленный контекст при смене темы прямо внутри разговора. Одна фраза-маркер перед новым вопросом снижает вес предыдущих сообщений при генерации — модель перестаёт «угадывать» связь со старой темой и работает с чистым листом. Особенно критично в длинных чатах: чем позже переключение, тем сильнее залипание — у всех моделей без исключения.
Адаптировать под запрос

TL;DR

Когда ты переключаешься на новую тему в середине длинного чата — большинство моделей этого не замечают. Они продолжают тащить контекст из предыдущей темы в ответы на новые вопросы. Исследователи Netflix назвали это залипанием контекста (context carry-over): модель знает, что тема сменилась, но всё равно активирует старые детали разговора.

Слабые open-weight модели (Llama, Gemma) залипают почти всегда — даже когда сами «понимают», что тема изменилась. Это как если бы секретарь сказал «понял, вы переключаетесь» — и всё равно продолжил вклеивать материалы старого проекта в новую папку. Ещё хуже: чем позже в разговоре происходит смена темы, тем хуже все модели её улавливают. Пятая смена темы в чате детектируется гораздо слабее первой.

Помогают два рычага: явный фразовый сигнал перед сменой темы («кстати, отдельный вопрос:», «теперь про другое:») и использование reasoning-моделей — они единственные, кто надёжно сбрасывает старый контекст при переключении.


📌

Схема: два типа поведения моделей при смене темы

СЦЕНАРИЙ: Ты ведёшь длинный чат → меняешь тему

ТИП 1 — Залипание (open-weight модели):
Тема изменилась → [ПРЕДЫДУЩИЙ КОНТЕКСТ АКТИВЕН] → ответ смешивает старое и новое

ТИП 2 — Правильный сброс (reasoning-модели + явный сигнал):
"Переходим к другому:" → [КОНТЕКСТ СБРОШЕН] → ответ только по новой теме

РЫЧАГИ УПРАВЛЕНИЯ:
→ Явная фраза-сигнал        → Улучшение у всех моделей
→ Reasoning-модель (Claude, Gemini, GPT-4o)  → Лучший сброс контекста
→ Новый чат при смене темы  → Гарантированный сброс

🚀

Пример применения

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

Без сигнала (как делают большинство):

Напиши мне скрипт холодного звонка для B2B-продаж?

Модель, скорее всего, «вклеит» контекст про питч и инвесторов — упомянет раунд, трэкшн, рынок. Это не то, что нужно.

С явным сигналом смены темы:

[НОВАЯ ЗАДАЧА — предыдущее обсуждение презентации не релевантно]

Напиши скрипт холодного звонка для продажи корпоративной подписки 
на сервис документооборота. Целевая аудитория — операционные директора 
средних компаний (50-200 человек). Цель звонка — назначить демо.

Результат: Модель получила явный разрыв контекста и чистое ТЗ. Скрипт будет про продажи — без случайных слов про инвесторов и runway. Особенно заметно в длинных чатах, где уже 10+ сообщений по другой теме.


🧠

Почему это работает

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

Модель не «читает» контекст линейно. Она активирует релевантные части разговора по смыслу. Если твой новый вопрос хоть немного пересекается со старой темой — старые детали «всплывают» в генерации. Явный сигнал ("новая задача", "другой вопрос") создаёт смысловой разрыв, который снижает вес старого контекста.

Reasoning-модели (Claude, Gemini, o3) лучше справляются — потому что они явно «рассуждают» перед ответом. В цепочке размышлений модель успевает «заметить» переключение и осознанно исключить нерелевантные фрагменты. Обычные модели генерируют ответ напрямую — без этого промежуточного фильтра.


📋

Шаблон промпта

Используй явный сброс контекста перед каждой сменой темы:

[НОВАЯ ЗАДАЧА — предыдущее обсуждение {старая_тема} не релевантно]

{новый_запрос}

Контекст для этой задачи:
- {релевантная_деталь_1}
- {релевантная_деталь_2}

Что подставлять: - {старая_тема} — коротко, что обсуждали до этого: "структуры презентации", "анализа рынка" - {новый_запрос} — твоя новая задача целиком - {релевантная_деталь} — только то, что нужно модели знать для НОВОЙ задачи

Для критических смен темы — проще открыть новый чат. Это 100% гарантия чистого старта.


🚀 Быстрый старт — вставь в чат:

Вот шаблон явного сброса контекста при смене темы. 
Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит про старую тему и новую задачу — потому что для сброса нужно знать границу и что к ней не относится.


🧠

Почему это работает (механика)

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

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

Как сигнал помогает: [НОВАЯ ЗАДАЧА] в квадратных скобках и явное отрицание старого контекста — это не магия. Это снижение веса предыдущих токенов при генерации ответа. Модель генерирует текст по паттерну — и паттерн «сброс контекста» она видела достаточно часто, чтобы реагировать на него правильно.

Рычаги: - [НОВАЯ ЗАДАЧА] → ещё острее сигнал: [ПОЛНЫЙ СБРОС КОНТЕКСТА] или — — — НОВАЯ ТЕМА — — — - Упомяни старую тему явно («не про X») → чётче граница исключения - Перечисли релевантный контекст для новой темы → модель не гадает, а работает с тем, что дал


⚠️

Ограничения

⚠️ Поздние переключения: Если ты меняешь тему после 7-10+ сообщений по другой теме — даже с явным сигналом остаётся риск залипания. Лучший вариант — новый чат.

⚠️ Слабые open-weight модели: Llama, Mistral — сигнал помогает, но не полностью. Они могут формально «принять» переключение, но всё равно активировать старый контекст. Для важных задач используй GPT-4o, Claude или Gemini.

⚠️ Персонажные чаты (MSC): Модели хуже сбрасывают контекст в разговорах с персональными деталями (имя, привычки, биография). «Залипание» на личных данных — особо устойчивый паттерн.

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


🔍

Как исследовали

Команда Netflix взяла реальные диалоги из двух датасетов — тематические Q&A (TopiOCQA) и персонажные разговоры (MSC) — и «склеила» разные разговоры в один: сначала идёт кусок одного диалога, потом без предупреждения начинается другой. Так они получили контролируемые «жёсткие переключения» с точным знанием, где граница.

Десять моделей тестировали в трёх условиях: без подсказки, с фразой-переходом, и с пивотом в разных позициях разговора. Измеряли не только «заметила ли модель переключение», но и over-carry rate — как часто модель несёт старый контекст в новую тему даже после правильного детектирования. Это разделение оказалось ключевым: некоторые модели правильно «классифицируют» переход, но всё равно тащат старое в ответ.

Самый неожиданный результат: reasoning-модели (o3, Claude 3.7, Gemini 2.5 Pro) справляются кардинально лучше не только в детекции, но и в сбросе контекста. А вот gpt-4o-mini — курьёз: хорошо детектирует переключения на одном датасете, но при этом несёт старый контекст в почти 100% случаев. Обнаружил, но не сбросил.


💡

Адаптации и экстраполяции

🔧 Техника: принудительный контекстный якорь в начале каждого нового блока задач

Если у тебя сессия с несколькими темами (стратегия, потом тексты, потом аналитика) — добавляй блок-якорь перед каждой темой:

=== БЛОК 2: ТЕКСТЫ ДЛЯ СОЦСЕТЕЙ ===
Всё, что обсуждалось про стратегию выше — в этом блоке не используй.
Задача: {новая задача}

Разделители === + явная «забудь» + чёткое ТЗ = минимальное залипание.

🔧 Экстраполяция: используй это как диагностику модели

Хочешь проверить, насколько твоя модель «залипает»? Проведи тест:

[ТЕСТ СБРОСА КОНТЕКСТА]
Предыдущий разговор был про {старая тема}. 
Новый вопрос полностью отдельный: {совсем другое}.
Ответь — используй ли ты информацию из предыдущего обсуждения? 
Если да — скажи какую.

Ответ покажет, насколько честно модель работает с контекстом.


🔗

Ресурсы

Beyond Continuity: Challenges of Context Switching in Multi-Turn Dialogue with LLMs I Can't Believe It's Not Better Workshop @ ICLR 2026

Авторы: Aditya Sinha, Harald Steck, Vito Ostuni, Matteo Rinaldi — Netflix Inc., Los Gatos, CA

Датасеты: TopiOCQA, MSC (Beyond Goldfish Memory, Xu et al. 2021)


📋 Дайджест исследования

Ключевая суть

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

Принцип работы

Модели обучались на связных разговорах. Смена темы в обучающих данных — редкость. Поэтому встроенный уклон: новый вопрос = продолжение предыдущего. Модель не читает контекст строчку за строчкой — она активирует части разговора по смысловому сходству. Написал про скрипт звонка после обсуждения питча инвесторам — модель нашла пересечение и вклеила «раунд», «оценку рынка», «трэкшн» в ответ про звонок. Явный маркер «[НОВАЯ ЗАДАЧА]» создаёт смысловой разрыв и снижает вес старых частей. Reasoning-модели (Claude, Gemini, o3) справляются лучше — они явно рассуждают перед ответом и успевают заметить переключение. Обычные модели генерируют напрямую, без этого промежуточного шага.

Почему работает

Open-weight модели (Llama, Gemma) залипают почти в 100% случаев — даже когда формально «принимают» переключение. Скажут «хорошо, другая тема» — и следующий абзац будет с деталями из предыдущего разговора. Главный инсайт: чем позже в разговоре ты меняешь тему, тем хуже её улавливает любая модель — и слабая, и сильная. Пятая смена темы детектируется заметно хуже первой. Явный сигнал помогает всем, но после 10+ сообщений по одной теме — проще открыть новый чат, это единственный надёжный способ.

Когда применять

Длинные рабочие сессии в одном чате — особенно когда разбираешь несвязанные задачи подряд: сначала структуру документа, потом маркетинговый текст, потом скрипт звонка. Критично при работе с open-weight моделями (Llama, Mistral) через программный интерфейс или в локальных запусках — там залипание самое устойчивое. Не нужно для коротких чатов до 5-6 сообщений — там залипание минимально.

Мини-рецепт

1. Поставь маркер перед сменой темы: [НОВАЯ ЗАДАЧА — предыдущее обсуждение {старая тема} не релевантно] — прямо в начале сообщения, до самого вопроса
2. Дай новый запрос полностью: без ссылок на предыдущее, как будто это первое сообщение в чате
3. Добавь только нужный контекст: перечисли детали, которые относятся к новой задаче — «Контекст для этой задачи: — деталь 1 — деталь 2»
4. Если тема меняется кардинально и уже накоплено 10+ сообщений — открой новый чат. Это единственный способ с гарантией.

Примеры

[ПЛОХО] : Напиши скрипт холодного звонка для продажи корпоративной подписки — после долгого обсуждения питча для инвесторов модель вклеит «раунд», «оценку рынка», «трэкшн» в скрипт для клиента
[ХОРОШО] : [НОВАЯ ЗАДАЧА — предыдущее обсуждение презентации для инвесторов не релевантно] Напиши скрипт холодного звонка. Контекст для этой задачи: — Продукт: сервис документооборота — Целевая аудитория: операционные директора компаний на 50-200 человек — Цель звонка: назначить демо-показ — Тон: деловой, без давления
Источник: Beyond Continuity: Challenges of Context Switching in Multi-Turn Dialogue with LLMs
ArXiv ID: 2605.09268 | Сгенерировано: 2026-05-12 05:30

Проблемы LLM

ПроблемаСутьКак обойти
Модель тащит старый контекст в новую темуМеняешь тему в середине длинного чата. Модель «слышит» новый вопрос. Но всё равно подмешивает детали из предыдущей темы в ответ. Чем длиннее чат — тем сильнее залипание. Пятая смена темы улавливается хуже первой. Особенно устойчиво на личных деталях: имя, биография, привычкиПоставь явный разрыв перед новым вопросом: [НОВАЯ ЗАДАЧА — предыдущее обсуждение X не релевантно]. Или открой новый чат — это 100% сброс

Методы

МетодСуть
Явный маркер разрыва — сброс старого контекстаПеред новой темой добавь разделитель: [НОВАЯ ЗАДАЧА], --- НОВАЯ ТЕМА --- или [предыдущее обсуждение X не релевантно]. Затем сразу новый запрос. Укажи только тот контекст, который нужен для новой задачи. Почему работает: Модель генерирует по паттернам. Паттерн «явный сброс» снижает вес предыдущих токенов при генерации. Модель обрабатывает весь чат по смыслу — маркер разрыва создаёт смысловую границу. Когда не хватит: Смена темы после 10+ сообщений по старой теме. Тогда только новый чат

Тезисы

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

Beyond Continuity: Challenges of Context Switching in Multi-Turn Dialogue withLLMs

arXiv: 2605.09268

Проблема в том, что современные нейронки — это жуткие инерционные машины. Они работают на механике непрерывности: когда ты ведешь длинный диалог, модель изо всех сил старается казаться связной и логичной. Но в этом и ловушка. Исследователи из Netflix выяснили, что у LLM напрочь отсутствует навык переключения контекста. Модель тупо не умеет вовремя «забывать» то, о чем вы говорили пять минут назад, и продолжает тащить старые хвосты в новые ответы. Это не просто баг, это фундаментальный bias на связность, зашитый в саму архитектуру обучения.

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

В реальности это превращается в context carry-over — когда детали из прошлой темы отравляют новую. Допустим, ты мучил ChatGPT структурой серьезной инвест-презентации, а потом резко попросил набросать текст для холодного звонка. Вместо бодрого скрипта ты получишь тяжеловесный официоз с терминами из презентации, потому что модель уверена: раз мы начали про инвестиции, то и звонить будем как на совете директоров. Она видит, что тема сменилась, но активирует старые знания просто по привычке, превращая твой запрос в кашу.

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

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

Работа с исследованием

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

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с