Skip to content
КОНЦЕПТЫ
2 мин. чтенияЧитать на английском

Четырёхуровневая иерархия источников промпта

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

Фикс — передавать все четыре уровня контекста в генерационный шаг и явно ранжировать их в системном промпте.

Четыре уровня

| Tier | Роль | Источник | |---|---|---| | 1 — Якорь | Главный субъект / драйвер | Артефакт, который пользователь выбрал — выбранная идея, отобранный референс, принятая подсказка | | 2 — Эмоциональная точка старта | Фоновая мотивация, тон | Исходный free-text-бриф пользователя | | 3 — Стилевые модификаторы | Ручки обработки | Структурированные выборы в форме (номинация, тип изображения, стилевые теги) | | 4 — Fine-tuning | Last-mile-доводка | Строка intent пользователя или follow-up-инструкция |

Правило: нижние уровни модифицируют верхние, никогда не перебивают. Тег «style: minimalist» не меняет субъект — он меняет, как субъект отрендерён.

Почему это важно

Если выбранная идея сидит на tier-3 (как «модификатор») вместо tier-1 (как «якорь»), каждый выход регрессирует к шаблонной середине пространства анкеты. Пользователь чувствует, что система его не слышит, даже если технически LLM в петле. Поднятие выбранного артефакта на tier-1 — и в payload'е, и в явной иерархии системного промпта — возвращает авторство.

Механизм

  1. Сохранять tier-1 и tier-2 в общем состоянии агента — session-scoped store (Zustand, Redux, server-side run record). Не полагаться на повторный вывод их из истории чата; история чата шумная и обрезается.
  2. Переносить их как структурированные аргументы на каждом tool-вызове, а не как chat-text pass-through. Сделать так, чтобы сигнатура функции явно принимала все четыре уровня.
  3. Системный промпт декларирует иерархию дословно. Перечислить четыре уровня, назвать, для чего каждый, и проинструктировать LLM «якориться на tier-1».
  4. Fallback-шаблон зеркалит иерархию. Когда LLM-вызов падает и мы скатываемся к детерминированному шаблону, шаблон всё ещё ведёт с blurb'а выбранной идеи. Иначе fallback противоречит доктрине и пользователь чувствует регрессию.

Пример — фикс инструмента craft_prompt

Реальный агент имел craft_prompt(nomination, image_type, style, user_intent) — только tier 3 и 4. Выбранная идея (tier 1) и исходный бриф (tier 2) сидели в чате и никогда не доходили до prompt-композера. Выходы ощущались как средние по анкете.

Фикс: расширить run-state-store, чтобы он нёс originalBrief и chosenIdea; расширить args-блок инструмента, чтобы тот передавал все четыре уровня как JSON; переписать системный промпт prompt-композера, чтобы он декларировал иерархию по порядку; переписать fallback-шаблон, чтобы он вёл с blurb'а выбранной идеи.

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

Идёт в паре с

  • typed-reference-composition — ортогонально: управляет ролью каждого multi-input-референса. Эта иерархия управляет приоритетом контента, когда несколько источников конкурируют за один вход.
  • template-dispatch-prompts — снова ортогонально: диспатчит какой промпт использовать; эта концепция управляет каким контентом он заполняется.