• Концепты и строгий формат требуют от модели противоположного поведения и разных температур
  • Директор на 0.6–0.8 выдаёт прозу в одном окружении; архитектор на 0.5 выдаёт формат
  • Один вызов даёт около 70% корректно оформленных промптов, разделение — около 98%

Задача

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

Причина не в модели. Один вызов, которого просят выдать N готовых промптов под мультишот-задачу, делает четыре работы: придумать N разных концептов, решить, что их объединяет (окружение, субъект, настроение), оформить каждый в формат генератора с нумерацией референсов и удержать этот формат по всем N выходам. Первая работа хочет широты и высокой температуры. Вторая хочет когерентности, заявленной заранее. Третья и четвёртая хотят соответствия и низкой температуры. Любую из них модель делает хорошо в одиночку. Все четыре в одном вызове — это компромисс, и он всегда виден на выходе.

flowchart TD
    C[Один вызов] --> J1[Придумать<br/>N концептов]
    C --> J2[Решить, что<br/>их объединяет]
    C --> J3[Оформить<br/>в формат]
    C --> J4[Удержать формат<br/>по N выходам]
    J1 --> H[Широта, высокая<br/>температура]
    J2 --> K[Когерентность,<br/>заявленная заранее]
    J3 --> L[Соответствие, низкая<br/>температура]
    J4 --> L

Метод

Разделить работу на два вызова с разными ролями, температурами и форматами выхода.

  1. Вход: дескрипторы, референсы, намерение пользователя.
  2. Стадия A — креативный директор. Роль редакторская. Температура 0.6–0.8. Выход: N прозаических концептов в одном общем окружении. Никакой схемы.
  3. Стадия B — технический архитектор. Роль prompt-инженера (например, архитектор A.O.C., см. фреймворк A.O.C.). Температура 0.3–0.5. Вход: проза стадии A плюс структурные метаданные (позиции референсов, ограничения дескрипторов). Выход: N промптов для генератора в строгом формате.
flowchart LR
    I[Намерение<br/>и референсы] --> A[Директор<br/>0.6–0.8]
    A -->|проза| B[Архитектор<br/>0.3–0.5]
    M[Позиции<br/>референсов] --> B
    B --> O[N промптов]

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

Разделение оправдывают два свойства.

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

Разные задачи хотят разных температур. Креативная генерация хочет 0.6–0.8 — достаточно разброса, чтобы пять концептов осмысленно отличались. Структурная эмиссия хочет 0.3–0.5 — достаточно низко, чтобы формат держался по всем выходам. Один вызов на одной температуре компрометирует оба конца. Для архитектора рабочая точка — 0.5: выше проза теряет дисциплину, ниже — пять почти одинаковых промптов.

Обновление, сентябрь 2026. В новостных конвейерах zdes.events и zdes.media та же пара стоит в обратном порядке: сначала отборщик сюжетов выдаёт JSON, потом писатель пишет прозу. Подтвердились оба свойства. Под длинным системным промптом с описанием голоса отборщик начал эхом возвращать JSON-шаблон вместо ответа; ему оставили короткий системный промпт, голос живёт у писателя. К роли и температуре добавился третий рычаг, модель для стадии: на роутере, где рассуждение обязательно и не ограничивается, только он управляет ценой. Массовые JSON-задачи ушли на лёгкую модель, почти в 20 раз дешевле за вызов, проза — на модель посильнее. Модель с лучшей прозой в сравнении отдаёт ненадёжный JSON, поэтому её можно поставить только писателю, и это возможно только потому, что стадии разделены.

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

Архитектор несёт формат. Его работа — выдать N блоков заданной структуры, разделённых низкоэнтропийным разделителем, с явной нумерацией референсов, без преамбулы и markdown. Креативный директор, которого просят сделать и это, даёт примерно 70% корректно оформленных выходов: блоки плывут по длине, разделители варьируются, номера референсов становятся «творческими». Архитектор на низкой температуре с узким системным промптом даёт около 98%; остаток ловится парсером и перезапускается. 70% парсится в хрупкий пайплайн, 98% — в надёжный.

flowchart TB
    subgraph one[Один вызов]
        direction LR
        A1[Креативный<br/>директор] --> A2[Около 70%<br/>корректных]
        A2 --> A3[Хрупкий<br/>пайплайн]
    end
    subgraph two[Разделение]
        direction LR
        B1[Архитектор,<br/>узкий промпт] --> B2[Около 98%,<br/>остаток: парсер]
        B2 --> B3[Надёжный<br/>пайплайн]
    end
    one ~~~ two
    classDef key stroke:#FF3600,stroke-width:2px
    class A3 key

Четыре дизайн-свойства, которые делают паттерн рабочим:

  • Разделитель. Символ, который модель правдоподобно не произведёт внутри блока: ^ на отдельной строке. Парсинг становится тривиальным.
  • Явные позиции референсов. Системный промпт архитектора включает список IMAGE ORDER, выход ссылается на референсы только по этим позициям. Архитектор не изобретает метки, которые потом нужно переотображать.
  • Объявленные fallback. Если ожидаемый референс отсутствует, архитектор пишет об этом в промпте: «no background reference provided; environment drawn from the creative direction». Молчаливая подстановка ломает отладку.
  • Ретрай только архитектора. Кривой выход перезапускается без повторного вызова директора; концепты не меняются, меняется только оформление.
flowchart LR
    D[Директор] -->|концепты| A[Архитектор]
    A --> P{Формат<br/>корректен?}
    P -->|нет, ретрай| A
    P -->|да| G[Промпты<br/>генератору]

Обновление, сентябрь 2026. Формат ломается не только от температуры, но и от длины. Отборщик zdes.media писал в поле angle целые предложения, и на самом тяжёлом недельном выпуске — 40 фактов в восемь кластеров — JSON обрывался посреди массива. Парсер падал, сюжетов ноль, выпуск молча пропускался два раза подряд. Теперь angle не длиннее восьми слов, у ответа больше запаса по токенам, парсер спасает все целые объекты из обрезанного массива, а вместо тихого пропуска пишется видимое предупреждение.

Пример из продуктовой кампании на пять кадров:

Стадия A (0.6): Ты креативный директор продуктовой фотографии. Сгенерируй
5 редакторских концептов под этот продукт, все в одном непрерывном окружении.
Концепты отличаются действием субъекта и акцентами камеры.

Стадия B (0.5): Ты архитектор промптов. Конвертируй 5 концептов в 5 промптов
формата ANCHOR / OPTICS / CHEMISTRY. Используй позиции IMAGE ORDER точно.
Блоки разделяй ^ на отдельной строке. Без преамбулы.

Форма обобщается на любой мультивыходной пайплайн, где креативность и соответствие в напряжении: тестовые сценарии (директор придумывает 20 разных, архитектор оформляет в формат фреймворка), варианты UI-раскладки, планы рефакторинга сначала в прозе и затем в структурированный diff, планирование действий агента и затем конкретная последовательность tool-вызовов.

Где ломается

Паттерн оправдывает себя там, где одно креативное направление веером раскрывается во много технически дисциплинированных выходов. Иначе он только добавляет накладных расходов.

  • Один выход. Польза паттерна в веере. Одному шоту два вызова не нужны.
  • Креативное и техническое не разделяются. Компактные image-промпты, короткая проза, часть кодогенерации: там нечего делить на «что» и «как».
  • Ранний прототип. Два вызова, два системных промпта в сопровождении, больше поверхность отказа. Для первой итерации хватает одного промпта.
  • Цифры 70% и 98% — наблюдённые, не измеренные. Как и диапазон температур директора. Контролируемого исследования разнообразия концептов по температурам нет.

Итог

  • Роль и температура — это два независимых рычага, и один вызов не может выставить оба под противоположные задачи.

  • Директор владеет консистентностью через одно окружение; архитектор владеет форматом через узкую роль и разделитель.

  • Сбои изолируются по слоям: повторяющиеся концепты — проблема директора; кривой формат — проблема архитектора.

  • Структурная стадия должна отвечать коротко: многословное поле в JSON первым попадает под обрезку, а парсер должен спасать целые блоки, а не обнулять выход.

  • Маленький архитектурный ход, который покупает надёжность там, где N выходов должны быть разными по замыслу и одинаковыми по форме.

© Александр Никулин. Цитирование — с указанием автора и ссылкой · Версия для LLM