TL;DR
SEAM — техника, которая удерживает консистентность деталей через много сцен подряд: для каждой сцены фиксируется явная "карточка состояния" (кто где, что держит, во что одет), карточки связываются между собой по времени и по общим персонажам, а при написании новой сцены модель забирает только релевантный прошлый контекст и аккуратно вплетает его в текст.
Проблема, которую метод решает: когда каждая сцена или кадр пишется отдельно, модель не помнит мелких деталей из прошлого. Персонаж снял перчатку в одной сцене — а через пять сцен она снова на нём, потому что модель "с чистого листа" описывает новую сцену. Каждая такая мелочь незаметна сама по себе, но их накопление по всей истории превращается в заметные нелогичности, которые потом приходится вычищать руками.
SEAM решает это в три шага: сначала явно извлекает структурированное состояние каждой сцены (8 параметров — сцена, атмосфера, персонажи, их состояния, расстановка, реквизит, действия, стиль камеры), затем при написании новой сцены ищет только предшествующий (не будущий) релевантный контекст и отбирает из него действительно нужное — не копирует всё подряд, а затем вплетает оставшееся в описание естественным языком, не трогая стиль и замысел автора.
Схема метода
ШАГ 1: Извлечь состояние каждой сцены → карточка из 8 параметров (сцена, персонажи, реквизит, действия и т.д.)
ШАГ 2: Связать карточки между собой → по времени, по общим персонажам, по общему месту
ШАГ 3: Для новой сцены — найти релевантные прошлые карточки → но только те, что были ДО текущего момента (причинность)
ШАГ 4: Отфильтровать найденное → LLM решает что реально нужно, что избыточно или конфликтует
ШАГ 5: Вплести оставшееся в описание новой сцены → естественным текстом, без изменения стиля
Все шаги можно выполнить в диалоге с LLM без кода — как серию промптов с явной "карточкой" в контексте.
Пример применения
Задача: Вы пишете с ChatGPT сценарий вертикального сериала для VK Клипов — 20 коротких серий про девушку, которая притворяется бедной перед миллиардером. Нужно, чтобы кольцо, которое героиня спрятала в серии 3, не "всплыло" случайно на её пальце в серии 12.
Промпт:
Веди для меня карточку состояний по ходу сценария. После каждой написанной серии
обновляй список: где находится каждый ключевой предмет (кольцо, письмо, флешка),
что из одежды/атрибутов у героев видно, в каком эмоциональном состоянии они
закончили серию.
Вот текущая карточка на серию 11:
- Кольцо: героиня спрятала в шкатулку в серии 3, никому не показывала
- Артём: узнал о подмене документов в серии 9, но героине об этом не сказал
- Место: офис компании, последний раз показан в серии 7 с ремонтом (леса на фасаде)
Я хочу написать серию 12: [описание сцены].
Проверь по карточке, какие детали из прошлого ОБЯЗАТЕЛЬНО должны быть
консистентны в этой сцене, а какие неважны — и впиши только нужное
в текст сцены, не меняя стиль.
Результат: Модель сначала явно скажет, какие из фактов карточки релевантны сцене 12 (например, "леса на фасаде ещё не сняты, значит здание должно выглядеть также"), отбросит нерелевантные (эмоции Артёма могут не упоминаться, если сцена не про него), и выдаст готовый текст сцены с аккуратно вписанными деталями без резких вставок типа "как вы помните, кольцо было спрятано в серии 3".
Почему это работает
Модель плохо держит в голове десятки разбросанных деталей на протяжении длинного текста — контекстное окно большое, но это не гарантирует, что нужная мелочь всплывёт именно тогда, когда она нужна, особенно если фактов много и они логически не связаны с текущей фразой.
Зато модель хорошо умеет три вещи по отдельности: вытаскивать структурированные факты из текста по заданному шаблону, оценивать релевантность одного факта к другому по запросу, и переписывать текст, вплетая новую информацию без потери стиля.
SEAM просто выстраивает эти три сильные стороны в цепочку вместо того, чтобы надеяться на память модели "в один заход": сначала заставляет явно зафиксировать факты, потом явно спросить "что из этого нужно СЕЙЧАС", и только потом просит переписать.
Рычаги управления: - Количество отслеживаемых параметров (в оригинале 8) → для простой истории хватит 3-4 (реквизит, одежда, место) - Глубина поиска в прошлое (сколько сцен назад смотреть) → для короткой истории можно смотреть на все сцены, для длинной — только на последние 5-10 или те, где фигурирует тот же персонаж - Критерий отбора ("что считается релевантным") → можно сузить до "только физические объекты" или расширить до эмоций и отношений - Жёсткость вплетения → можно попросить модель прямо перечислить факты списком (для рабочего документа) или художественно растворить их в тексте (для финальной версии)
Шаблон промпта
Ты ведёшь память состояний для {название истории/сериала}.
Вот карточка состояний на текущий момент (обновляй после каждой части):
- {персонаж/объект 1}: {текущее состояние, где, с кем, в каком виде}
- {персонаж/объект 2}: {текущее состояние}
- {место действия}: {как выглядит сейчас, что изменилось}
Я хочу написать {следующую сцену/пост/главу}: {описание того, что должно произойти}.
Сделай так:
1. Проверь по карточке, какие факты ОБЯЗАТЕЛЬНО должны сохраниться в этой части
(причинно связаны с тем, что уже произошло), а какие неважны для неё
2. Отбрось те, что не относятся к сцене — не нужно упоминать всё подряд
3. Впиши только нужное в текст естественно, без прямых отсылок типа "как мы помним"
4. После текста — обнови карточку с учётом того, что изменилось в этой части
Что подставлять: название истории, реальные факты о персонажах/предметах на текущий момент, описание следующей части.
🚀 Быстрый старт — вставь в чат:
Вот шаблон техники "память состояний" для длинной истории. Адаптируй под мою задачу:
{твоя задача — например, серия постов, сценарий, комикс}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какие именно детали важно отслеживать в вашей истории (предметы, одежда, отношения, локации) — потому что набор параметров зависит от жанра и сюжета. Дальше она сама предложит структуру карточки под вашу задачу.
Ограничения
⚠️ Ручная нагрузка растёт с длиной истории: для 5-10 частей карточку легко вести вручную в одном чате. Для 50+ частей нужно либо выносить карточку в отдельный документ, либо автоматизировать через код — иначе сам процесс обновления карточки станет тяжелее, чем писать текст.
⚠️ Не решает консистентность в картинке или видео: если вы используете текст-промпт для генерации изображений, метод помогает согласовать текстовое описание, но перенос этого на визуальный результат (сама картинка) работает заметно слабее — по данным исследования, эффект на уровне изображений есть, но небольшой.
⚠️ Работает только если карточка обновляется честно: если пропустить обновление после одной из частей, следующая часть будет строиться на устаревших данных — метод требует дисциплины, а не разового промпта.
Как исследовали
Команда протестировала SEAM на трёх реальных коротких дорамах общим объёмом 68 эпизодов, сравнивая обычную генерацию сцен "по одной" с версией, где каждая сцена получает память о прошлом. Замеряли, сколько нарушений консистентности (типа той самой перчатки) удаётся починить — и получили рост с 70% исправленных нарушений до 94.6%. Проверку повторили на шести разных языковых моделях, чтобы убедиться, что эффект не зависит от конкретной модели — и метод сработал везде, что говорит о его универсальности, а не о случайной удаче с одной моделью. Отдельно метод протестировали в реальном производстве — на 201 кадре коммерческого продукта, где 96.5% результатов приняли реальные режиссёры без правок, что подтверждает: эффект держится не только на тестовых данных, но и в живой работе.
Ресурсы
SEAM: Shot Entity-Attribute Memory for Consistent Short-Drama Generation at Scale. Авторы: Jiaqi Liu, Maolin Ran, Xiaoyang Lu, Jian Wang, Weiwen Liu, Jianghao Lin, Yong Yu, Weinan Zhang (Shanghai Jiao Tong University, CreativeFitting). Датасет SEAM-Bench доступен на Hugging Face (huggingface.co/datasets/Jackyqq/SEAM-Bench).
