August 15

Просишь ChatGPT «добавь эмоций» — он молча выкидывает лимит длины из начала чата. Так ломается до 73% длинных диалогов

Знакомая история: дорабатываешь с ChatGPT письмо или план в несколько заходов — и к пятой правке текст выполняет последнюю просьбу, но растерял всё, о чём договаривались в начале: тон, длину, запреты. Исследователи (Yonghui Huang, июль 2026) прогнали 26 016 таких многошаговых сессий и показали: модель не забывает ранние требования — она молча решает, что новое важнее, и жертвует старыми. И есть промпт-приём, который стабильно возвращает контроль всем моделям — Verification Gate. Проверил на письме клиенту — работает.

В чём проблема: последняя правка перевешивает всё, что ты задал раньше

Модель генерирует ответ, опираясь на ближайший контекст: последнее сообщение статистически весит больше, чем то, что написано пятью-шестью репликами раньше. Ранние требования не исчезают из истории — падает их вес. Из-за этого, когда новая просьба конфликтует со старым правилом («добавь эмоций» против «деловой тон»), модель тихо решает конфликт в пользу нового — и не предупреждает. Исследователи собрали 542 задачи, где к результату восемь раз подряд добавляли новые требования, и прогнали через них шесть моделей — от GPT-4o до Llama. К концу диалога от 40% до 73% задач потеряли хотя бы одно требование, которое раньше выполнялось. Все модели, без исключений. Причём когда вручную разобрали 384 поломки, выяснилось: главная причина — не «потеряла контекст», а конфликт нового со старым, который модель разрешила не в твою пользу. Как стажёр, который живёт последним поручением: попросил подать кофе в большой кружке — подал, но с сахаром, хотя «без сахара» было самым первым условием.

Решение: сверка всех требований перед каждой правкой

Не кидай правку одной строкой. Перед каждым изменением давай модели явный список всех активных требований и требуй сверку после правки: каждый пункт — статус, конфликт — назвать вслух, а не исправлять молча. Приём называется Verification Gate — «проверочные ворота»: результат выходит наружу только после проверки. Это переключает модель из режима «выполни последнее» в режим «выполни новое, сохранив всё предыдущее». В исследовании это единственная стратегия, которая улучшила все шесть моделей: у DeepSeek-V3 доля задач без поломок выросла с 75,8% до 87,9%, у слабой Llama-3.1-8B — с 31,6% до 47,3%.

→ Что делать: начиная со второй правки вставляй перед изменением этот шаблон:

Список активных требований:
{требование_1}
{требование_2}
{требование_3}
[добавь столько, сколько нужно]

Новое требование: {новое_требование}

Текущая версия:
{текущий_контент}

Порядок работы:
1. Внеси новое требование в текущую версию
2. Проверь каждый пункт из списка: статус ✅ выполнено / ❌ нарушено
3. Если есть ❌ — назови конкретный конфликт и предложи версию без него
4. Если конфликт неразрешим — сообщи явно, не жертвуй старыми
   требованиями ради нового
5. Итоговый результат выдай только если все ✅

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

Модель не хранит приоритеты — она читает ближайший контекст. Последняя просьба весит больше правила из начала чата, поэтому при конфликте модель молча жертвует старым: сигнала «это всё ещё обязательно» у неё нет. Явный список возвращает старым требованиям вес, а условие «выдай только если все ✅» запрещает тихий компромисс. Сверять текст с чеклистом модель умеет отлично — ей нужно лишь дать, что с чем сравнивать, поэтому вместо тихой поломки ты получаешь либо результат, где всё цело, либо честное «эти два требования несовместимы». Критична фраза «не жертвуй старыми требованиями молча»: без неё модель попробует «выполнить оба», размыв оба. И честно про границы: приём снижает регрессию, но не убирает совсем, а размытые пункты вроде «сохрани лёгкость» модель отметит ✅ там, где ты увидишь ❌ — формулируй требования конкретно.

Пример

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

Список активных требований к тексту:
1. Не более 7 предложений
2. Без извинений и оправданий
3. Деловой, прямой тон
4. Партнёрская интонация, не директивная
5. Обоснование — через ценность, не через издержки

Новое требование: добавь абзац про расширенные условия поддержки

Текущая версия текста:
{текущее письмо}

Инструкция:
1. Внеси новое требование
2. Проверь каждый пункт из списка: статус ✅/❌
3. Если есть ❌ — назови конфликт явно и предложи версию без него
4. Если конфликт неразрешим — скажи об этом, не жертвуй старыми
   требованиями молча
5. Выдай финальный текст только если все пункты ✅

Модель сначала покажет сверку по всем пяти пунктам и только потом текст. А если новая просьба несовместима со старой — например «добавь эмоций» против «деловой тон» — конфликт всплывёт явным сообщением, а не потерей тона, которую заметишь через три правки.

Где пригодится

  • Письма клиентам, офферы, посты — всё, что дорабатываешь в несколько заходов и где тон с длиной задал в начале
  • Сметы, ТЗ, планы — где новая правка тихо задевает соседние пункты
  • Код с ИИ-ассистентом: «добавь функцию» часто ломает то, что уже работало (исследование именно об этом)
  • Правило: со второй правки в любом длинном чате — сначала список активных требований, потом изменение

Если хочешь такие находки из свежих исследований каждый день — их присылает бот @NovaPaperAlert_bot.

Опирался на исследование «Regression Accumulation in Multi-Turn LLM Programming Conversations» (arXiv 2607.01855).