TL;DR
Когда строишь многошаговый рабочий процесс с несколькими ролями или шагами — любое смещение в формулировке одной роли нелинейно усиливается на выходе. Не суммируется, а именно умножается: финальный результат оказывается более искажённым, чем сумма искажений каждого шага по отдельности.
Главная находка: LLM не просто «принимает и передаёт» фрейминг по цепочке — она его усиливает при каждом взаимодействии. Если на первом шаге роль чуть благосклоннее к одному варианту, второй шаг строит на этом, третий — на результате второго. К финалу смещение может вдвое превышать то, что ты ожидал от «небольшого уклона» в одном месте.
Защита существует: добавить «нейтральный якорь» — явный шаг, который работает только с сырыми фактами, без накопленного фрейминга. Это снижает усиление, хотя и не устраняет полностью.
Схема метода
Это не пошаговая техника, а принцип устройства цепочек + защитный паттерн.
ЦЕПОЧКА БЕЗ ЗАЩИТЫ:
Роль А (небольшой уклон) → Роль Б (строит на выводах А) →
→ Роль В (строит на выводах Б) → Финал (уклон × 2-3)
ЦЕПОЧКА С НЕЙТРАЛЬНЫМ ЯКОРЕМ:
Роль А (анализ) → [ЯКОРЬ: только факты, без оценок] →
→ Роль Б (строит на фактах, не на оценках А) → Финал (уклон ×0.3-0.5)
Якорь — отдельный запрос в цепочке. Всё остальное — в одном или разных промптах по желанию.
Пример применения
Задача: Ты — продакт-менеджер в Яндексе. Строишь цепочку из трёх шагов для анализа фидбека пользователей: сначала «опытный UX-аналитик» читает отзывы, потом «менеджер по продукту» формулирует выводы, потом «стратег» даёт рекомендации. Ты заметил, что финальные рекомендации всегда выглядят чрезмерно оптимистично — даже когда отзывы смешанные.
Промпт — нейтральный якорь (вставляется между шагами):
Перед тобой вывод предыдущего анализа:
[вставь вывод предыдущего шага]
Твоя задача — извлечь только факты.
Правила:
— Только то, что буквально написано в исходных отзывах
— Никаких интерпретаций, оценок, прогнозов
— Никакого фрейминга ("это хорошо", "это указывает на")
— Формат: нумерованный список фактов
Если в предыдущем анализе есть оценочные суждения без опоры
на конкретные факты — не включай их.
Результат: Якорь выдаст сухой список: «32% упомянули долгую загрузку», «11 из 40 отзывов содержат слово "неудобно"», «5 пользователей сравнивают с конкурентом». Следующий шаг получит факты, а не окрашенную интерпретацию — и финальные рекомендации будут менее раздутыми.
Почему это работает
LLM не хранит «объективный счётчик» отдельно от фрейминга. Когда роль А пишет «несмотря на отдельные замечания, продукт воспринимается положительно» — это не просто транслируется в роль Б. Роль Б строит своё рассуждение поверх этого вывода как поверх факта. Каждый шаг добавляет своё усиление заложенного уклона.
LLM хорошо умеет следовать установленному фреймингу. Это делает её мощной при правильном контексте — и уязвимой при искажённом. Когда контекст уже содержит смещение, модель не «исправляет» его, а естественно продолжает в том же направлении.
Нейтральный якорь разрывает цепочку усиления. Он переключает задачу с «продолжи рассуждение» на «извлеки только то, что буквально написано». Это меняет режим работы модели — с интерпретационного на извлекательный. Следующий шаг получает «чистый» вход.
Рычаги управления: - Жёсткость якоря → чем строже запрет на оценочные суждения, тем лучше фильтрация - Позиция якоря → можно ставить после каждого шага или только перед финальным — зависит от длины цепочки - Явный запрет на наследование → добавь «не используй выводы предыдущего шага, только исходный текст» для максимальной изоляции
Шаблон промпта
Нейтральный якорь для чистки между шагами:
Перед тобой результат предыдущего анализа:
[{вывод_предыдущего_шага}]
Исходный материал:
[{исходный_текст_или_данные}]
Извлеки только факты из исходного материала.
Требования:
— Только то, что буквально присутствует в исходнике
— Никаких интерпретаций, оценок, прогнозов
— Никаких ссылок на выводы предыдущего анализа
— Формат: нумерованный список
Если видишь в предыдущем анализе оценочные суждения
без прямой опоры на факты — игнорируй их.
Плейсхолдеры:
- {вывод_предыдущего_шага} — текст, который выдал первый шаг цепочки
- {исходный_текст_или_данные} — оригинальный материал: отзывы, письма, документы
Шаблон цепочки с защитой (полный):
ШАГ 1 — АНАЛИЗ
Ты — {роль_аналитика}.
Проанализируй следующий материал: {материал}
Задача: {что_нужно_сделать}
---
ШАГ 2 — ЯКОРЬ (отдельный запрос)
Перед тобой анализ: [вставь результат шага 1]
Исходный материал: {тот_же_материал}
Извлеки только факты из исходного материала.
Никаких интерпретаций. Только буквальные наблюдения.
Формат: нумерованный список.
---
ШАГ 3 — ВЫВОД
Ты — {роль_финального_эксперта}.
На основе следующих фактов: [вставь результат шага 2]
Сформулируй: {что_нужен_вывод}
🚀 Быстрый старт — вставь в чат:
Вот шаблон многошагового анализа с нейтральным якорём.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит: какой материал анализировать, какие роли нужны в цепочке, что должно быть на выходе — потому что без этого нельзя расставить роли и правильно сформулировать ограничения якоря.
Ограничения
⚠️ Модели различаются сильно: GPT-4/GPT-5 устойчивы к фреймингу значительно больше, чем Gemini или Qwen. Якорь полезен в первую очередь в цепочках с менее устойчивыми моделями.
⚠️ Защита частичная: Якорь снижает усиление, но не устраняет полностью. При намеренно сильном уклоне в нескольких ролях сразу — итоговое смещение всё равно проявляется.
⚠️ Контекст важнее метода: Усиление работает в направлении, которое соответствует «очевидному» распределению в данных. Если твои материалы изначально склонены к одному ответу — протоколировать это нужно вне зависимости от защиты.
⚠️ Исследовалось на структурированных данных: Результаты получены на студенческих датасетах с бинарной меткой. Насколько точно это переносится на неструктурированный текст (отзывы, письма, статьи) — открытый вопрос.
Ресурсы
«Examining Agents' Bias Amplification versus Suppression in Multi-Agent Systems» Zejian (Eric) Wu, Zhongyi Jiang, Yuan Zhuang, Paul Jen-Hwa Hu Oregon State University, Independent Researcher, Amazon, University of Utah
