- Текст описывает только субъект, локацию и камеру; стиль, цвет и свет несёт референс
- Умолчание — это поимённый запрет с анти-примерами, а не просьба писать короче
- Паттерн держится на 2 обязательствах: надёжный второй канал и явный список запретов
Задача
Интуиция промпт-дизайна — сказать больше. Длинный и подробный промпт ощущается так, будто даёт модели больше материала. Для одноканальных LLM-задач это часто верно. Для мультиканальной генерации, где картинка-референс, композитный якорь или типизированный вход несут информацию рядом с текстом, интуиция переворачивается: больше текста активно портит выход, если текст и другой канал описывают одно и то же измерение.
Механика такая. Текст говорит «moody directional lighting», moodboard показывает яркий дневной свет. Генератор не выбирает, он усредняет, взвешивает полупроизвольно и выдаёт нечто, чего ни один вход по отдельности не просил. Более сильная модель этого не чинит: компромисс структурный, две инструкции по одному измерению обязаны согласоваться, и согласование, это потеря специфичности с обеих сторон. Стандартный совет «пишите текст точнее, чтобы он совпадал с референсом» недостаточен: в продакшне референсы пользовательские и разнородные, выравнивать под них текст при каждой сборке промпта хрупко.
flowchart LR
T[Текст:<br/>moody lighting] --> G[Генератор<br/>усредняет]
R[Moodboard:<br/>дневной свет] --> G
G --> X[Выход, которого<br/>никто не просил]
classDef key stroke:#FF3600,stroke-width:2px
class X keyМетод
Сильный ответ: перестать писать текст о том, что уже несёт канал референсов. Отдать эти измерения референсу — замолчать по ним в тексте.
Разделение по каналам:
- Текстовый канал описывает только субъект, локацию и камеру.
- Визуальный канал несёт стиль, цвет, свет, атмосферу.
- Ни одному каналу не разрешено заходить на территорию другого.
flowchart LR
T[Текстовый канал] --> T1[Субъект,<br/>локация, камера]
V[Визуальный канал] --> V1[Стиль, цвет,<br/>свет, атмосфера]
T1 --> G[Генератор]
V1 --> GСистемный промпт LLM, который пишет текст, запрещает называть измерения, отданные визуальному каналу:
Describe only subject, location, camera. Never mention style, colour,
lighting or rendering quality: those come from the attached references.
Do not write sentences like "warm cinematic tones", "moody dramatic
lighting", "golden-hour glow", "rich saturated colour".
Анти-примеры в конце — не украшение. Это предложения, которые LLM склонен написать по умолчанию, и явное их отклонение вытаскивает модель из писательских инстинктов.
Паттерн держится на двух обязательствах.
Надёжный второй канал. Умолчание работает, только когда не-текстовый канал действительно несёт умолчанные измерения: композитный референс, конденсирующий много входов в один (см. консистентность серии), предыдущий рендер в цепочке, типизированный референс с объявленной ролью. Без него модель не получает «чистый выход», а угадывает, и результат размытый.
Поимённый запрет. «Be concise» — не умолчание. «Don't over-describe lighting» — не умолчание. Это намёки, и LLM обходит намёки в пользу дефолтного стиля. Умолчание перечисляет измерения по именам, в негативной форме («do not mention Y», а не «focus on X»), с конкретными запрещёнными фразами. Конкретные запреты выполняются надёжнее, чем размытые акценты.
Почему это работает: паттерн про распределение внимания, а не про объём инструкции. Когда два канала описывают одно измерение, внимание модели расщепляется на их согласование, согласование недетерминировано (какой канал выигрывает, меняется от шота к шоту), и специфичность обоих теряется в усреднении. Когда текст замолкает, внимание уходит к каналу, у которого остался голос, специфичность референса сохраняется, а полная специфичность текста приземляется на измерения, где он единственный носитель.
flowchart TB
subgraph both[Два канала на одно измерение]
direction LR
A1[Текст +<br/>референс] --> A2[Согласование<br/>недетерминировано]
A2 --> A3[Специфичность<br/>теряется]
end
subgraph quiet[Текст замолкает]
direction LR
B1[Голос только<br/>у референса] --> B2[Внимание<br/>не расщеплено]
B2 --> B3[Специфичность<br/>сохранена]
end
both ~~~ quiet
classDef key stroke:#FF3600,stroke-width:2px
class A3 keyГде это живёт в продакшне:
| Стадия | Текст описывает | Умолчано, несёт другой канал |
|---|---|---|
| Промпты с несколькими референсами | Субъект, локация, камера | Стиль, цвет, свет (композитный moodboard) |
| Motion-промпты к отрендеренным стиллам | Физическое движение, движение камеры | Содержимое сцены, эстетика (сам стилл) |
| Правки одного кадра | Только запрошенное изменение | Всё остальное (baseline) |
Общий принцип: канал с самым плотным надёжным сигналом по измерению владеет им, остальные — молчат. Он обобщается за пределы картинок. Генерация кода с прикреплённым файлом: промпт описывает только логику, не пересказывает сигнатуру и импорты, иначе модель начнёт переписывать то, что ей показали без изменений. Редактирование по шаблону: только контент, не структура. Агент с прикреплёнными схемами инструментов: только намерение пользователя, не пересказ инструментов, иначе выбор инструмента дрейфует. RAG: только то, что поиск упустил, иначе модель взвешивает найденное дважды.
Три вопроса при проектировании мультиканального промпта: что надёжно несут не-текстовые каналы (перечислить); что текст должен нести уникально (описать исчерпывающе); где оба канала пытаются описать одно и то же (там текст замолкает, а запрет попадает в системный промпт).
flowchart LR
D[Измерение] --> Q{Несёт надёжный<br/>не-текстовый канал?}
Q -->|да| S[Текст молчит,<br/>запрет поимённо]
Q -->|нет| T[Текст описывает<br/>исчерпывающе]
classDef key stroke:#FF3600,stroke-width:2px
class S keyОбновление, сентябрь 2026. У умолчания нашёлся второй фронт — внутри самого текста: генератор картинок читает существительное как заказ на предмет в кадре. В серии из 20 предметных карточек 2 кадра ушли в брак, потому что в общем хвосте промпта стояло «large overhead softbox», и на настенных шотах модель нарисовала софтбокс в кадре. Фикс: описывать действие света без названия прибора («soft even diffused light from above») и добавить «no lighting equipment». Hex-код в промпте красит металл плоской заливкой, поэтому металл описывается физикой материала, а не цветом. Клавиша для сайта после уточняющего промпта вышла с нижней частью колпачка: промпт описывал низ со штоком, и модель его показала. Сработал промпт в одну строку, где про низ нет ни слова. Вывод продолжает основной: тому, чего не должно быть в выходе, нет места в тексте, даже в роли уточнения.
Где ломается
- Умолчание без альтернативы. Текст молчит про свет, а ни один референс света не несёт. Выход освещён по умолчанию, размыто. Проверяйте второй канал до того, как вводить запрет.
- Слишком много умолчаний. Запрещено столько, что оставшийся текст несёт мало. Умолчание — про избегание пересечения, а не про минимизацию текста: если текст — единственный носитель измерения, он обязан его описать.
- Дрейф канала. Пайплайн изменился, композитный moodboard больше не прикрепляется, а запрет остался. Теперь измерение не несёт никто. Правила умолчания привязаны к каналам, которые их поддерживают; убрали канал — снимайте правило.
- Утечка словаря и отсутствие цифр. LLM всё равно вставляет «warm cinematic tones»; лечится списком запрещённых фраз, а не только именами измерений. Размер эффекта не измерен: контролируемого сравнения с промптами той же длины без умолчания нет, паттерн опирается на продакшн-наблюдения.
Итог
- Максимализм в промптинге специфичен для канала: одноканальная задача описывает всё, мультиканальная — только своё.
- Умолчание добавляет специфичности оставшимся измерениям, а не экономит токены.
- Реализация в три шага: найти надёжные не-текстовые каналы, перечислить их измерения, запретить их в тексте поимённо с анти-примерами.
- Генератор картинок читает существительное как предмет в кадре: свет описывается действием, а не прибором, лишние детали объекта не упоминаются вовсе.
- Умолчания в ваших пайплайнах уже есть — неявно. Явные живут дольше.
© Александр Никулин. Цитирование — с указанием автора и ссылкой · Версия для LLM