TL;DR
Когда просишь LLM найти проблемы в тексте, она критикует чужие цитаты как авторскую позицию — и ставит тревогу там, где её нет. Исследование предлагает архитектуру из трёх ролей: сканер, жюри из пяти агентов и арбитр. Ключевой инсайт — сначала маркируй, чья речь, потом оценивай.
Главная находка: одиночная модель в режиме «найди проблемы» системно завышает оценку опасности. В эксперименте она давала средний балл 5.4 из 7 и не опускалась ниже 4 — даже для нейтрального контента. Проблема не в тексте, а в том, что у модели нет тормоза: её попросили критиковать, она критикует всё подряд. При этом она путает что написал автор и что автор процитировал — и флагует, например, нацистскую риторику в учебнике, не заметив, что это цитата из исторического источника.
Архитектура решает это тремя шагами: разметка (что авторское, что цитата), жюри (пять независимых оценщиков с явной инструкцией «dismissing — это нормально»), арбитр (не усредняет оценки, а выбирает наилучше аргументированную позицию). Результат: 83% контента получает оценку «педагогически приемлемо», а реальные проблемы всплывают с высокой уверенностью.
Схема метода
ШАГ 1 — МАРКИРОВКА (отдельный промпт)
Раздели текст на фрагменты
Каждый фрагмент пометь: "авторская речь" | "чужая цитата/источник"
→ JSON-список с атрибуцией и кратким обоснованием
ШАГ 2 — ЖЮРИ (один промпт, несколько ролей)
Для каждого фрагмента: 3-5 независимых оценщиков с разными перспективами
Каждый присваивает: тип проблемы + серьёзность (1-7) + уверенность (0-1) + обоснование
Ключевая инструкция: "Если аргументов нет — отклони, это нормально"
→ Структурированные оценки от каждой роли
ШАГ 3 — АРБИТР (отдельный промпт)
Читает все оценки жюри
Выбирает НЕ большинство, а наилучше аргументированную позицию
Если разброс большой — эскалирует: "требует проверки человека"
→ Финальный вердикт с обоснованием
Шаги 1 и 3 — отдельные запросы. Шаг 2 можно уложить в один запрос через многоролевой промпт.
Пример применения
Задача: Ты готовишь статью для корпоративного блога «Тинькофф Журнала» про микрозаймы. Редактор просит проверить, нет ли в тексте формулировок, которые могут вызвать претензии со стороны регулятора или негативную реакцию аудитории. Попросил ChatGPT — тот раскритиковал половину статьи, включая цитаты из закона и отзывы реальных клиентов.
Промпт — Шаг 1 (маркировка):
Прочитай текст ниже. Раздели его на смысловые фрагменты (1-3 предложения).
Для каждого фрагмента укажи:
- fragment: сам фрагмент
- source_type: "авторская речь" (автор статьи высказывается сам)
или "цитата/источник" (цитата из закона, чужие слова, данные исследований,
отзывы клиентов)
- attribution_note: одна строка — почему ты так решил
Верни нумерованный список.
[ТЕКСТ СТАТЬИ]
Промпт — Шаг 2 (жюри):
Ты — комиссия из трёх экспертов. Оцени каждый фрагмент независимо.
Эксперт А: юрист по финансовому регулированию
Эксперт Б: редактор потребительских медиа
Эксперт В: специалист по репутационным рискам
Для каждого фрагмента каждый эксперт указывает:
- risk_type: тип риска или "нет риска"
- severity: 1 (нет проблем) — 5 (серьёзная проблема)
- confidence: 0.0 — 1.0
- reasoning: 1-2 предложения
Важно: если оснований для тревоги нет — прямо пиши severity: 1 и кратко объясни почему
всё в порядке. Отсутствие проблемы — тоже валидный результат.
Учитывай атрибуцию: фрагменты типа "цитата/источник" оценивай по критерию
"правильно ли это процитировано и контекстуализировано", а НЕ как позицию автора.
[ФРАГМЕНТЫ С АТРИБУЦИЕЙ ИЗ ШАГА 1]
Промпт — Шаг 3 (арбитр):
Ты — главный редактор. Получи оценки трёх экспертов и вынеси финальный вердикт.
Правила:
- Не усредняй оценки механически
- Выбирай позицию с наилучшим аргументом, даже если её держит меньшинство
- Если confidence всех экспертов < 0.6 — отметь: "требует живого редактора"
- Если разброс severity > 2 пунктов — объясни, почему эксперты разошлись
Для каждого фрагмента: финальный severity, тип риска, рекомендация (переформулировать /
оставить / проверить с юристом).
[ОЦЕНКИ ЖЮРИ ИЗ ШАГА 2]
Результат: Модель выдаст три слоя. Сначала — фрагменты с маркировкой «авторское/цитата». Потом — независимые мнения трёх ролей с уровнями уверенности. Наконец, арбитражный разбор: где эксперты сошлись, где разошлись и почему. Реальные проблемы выделятся на фоне отклонённых ложных тревог. Фрагменты с низкой уверенностью пойдут на эскалацию.
Почему это работает
Проблема по умолчанию. Когда просишь модель «найди проблемы» — она их ищет. Это не баг, это задача. Модель генерирует текст следующего токена, и если контекст настроен на поиск проблем, она будет находить их везде. Без инструкции «можно ничего не найти» она не остановится.
Слабость атрибуции. Модель видит текст линейно. Фраза «евреи подлежат уничтожению» в нацистском плакате 1942 года для учебника истории и та же фраза как авторская позиция — это разные вещи. Без явной разметки модель критикует цитату как авторское высказывание. Добавляешь шаг маркировки — и модель меняет фрейм: «это цитата, оцениваю корректность контекстуализации», не «это позиция автора, осуждаю».
Как метод обходит слабость. Три механизма работают вместе. Маркировка снимает ложные атрибуции до оценки. Явная инструкция («отклони — это нормально») даёт модели тормоз. Арбитр по аргументу, не по большинству — страховка от дрейфа к усреднённой позиции, которая часто оказывается ни рыбой ни мясом.
Рычаги управления: - Число экспертов в жюри → 2 для быстрого черновика, 5 для серьёзного аудита - Роли экспертов → подбирай под задачу: юрист + маркетолог + ЦА вместо абстрактных «аналитиков» - Шкала severity → замени 1-7 на 1-3 для простых задач, добавь конкретные якоря («1 = публиковать сейчас, 3 = только с юристом») - Порог эскалации → опусти confidence-порог для высокорисковых текстов, подними для черновиков
Шаблон промпта
Шаг 1 — маркировка:
Прочитай {текст}. Раздели на фрагменты по 1-3 предложения.
Для каждого укажи:
- fragment: текст фрагмента
- source_type: "авторская речь" | "цитата или чужой источник"
- attribution_note: одна строка обоснования
Верни нумерованный список.
Шаг 2 — жюри:
Ты — комиссия из {число} экспертов: {роль_1}, {роль_2}, {роль_3}.
Оцени каждый фрагмент独立но от имени каждого эксперта:
- risk_type: тип проблемы или "нет проблем"
- severity: 1 (норма) — {максимум} (критично)
- confidence: 0.0 — 1.0
- reasoning: 1-2 предложения
Важно: если аргументов для критики нет — прямо пиши severity: 1.
Отсутствие проблемы — валидный результат.
Для фрагментов типа "цитата или чужой источник": оценивай
корректность подачи, а не содержание цитаты как позицию автора.
[ФРАГМЕНТЫ С АТРИБУЦИЕЙ]
Шаг 3 — арбитр:
Ты — {финальный_эксперт}. Вынеси итоговый вердикт по оценкам жюри.
Правила:
- Выбирай позицию с наилучшим аргументом, не большинством голосов
- Если все confidence < 0.6 — отметь "требует живого {специалиста}"
- Если разброс severity ≥ {порог} — объясни причину расхождения
Итог по каждому фрагменту: финальный severity, тип риска, рекомендация.
[ОЦЕНКИ ЖЮРИ]
Плейсхолдеры:
- {текст} — что анализируешь
- {число} и {роль_N} — сколько экспертов и кто они (юрист, редактор, ЦА, конкурент)
- {максимум} — верхняя граница шкалы (5 или 7)
- {порог} — при каком разбросе эскалировать (1.5–2 балла)
- {финальный_эксперт} — роль арбитра (главный редактор, председатель комиссии)
🚀 Быстрый старт — вставь в чат:
Вот трёхшаговый шаблон для экспертного анализа текста.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит: какой текст анализировать, какие роли экспертов нужны, какую шкалу использовать — потому что без этого она не сможет подобрать правильные роли жюри и порог эскалации. Она возьмёт структуру трёх шагов и соберёт промпты под твою задачу.
Ограничения
⚠️ Три шага = три запроса: Метод не укладывается в один промпт. Результат каждого шага нужно вручную передавать в следующий. Для длинных документов это несколько раундов копипаста.
⚠️ Субъективные оценки: Если домен нишевый (юридический, медицинский, исторический) — роли экспертов всё равно симулируются моделью. Для по-настоящему спорных случаев финальное слово за живым специалистом.
⚠️ Слабость на коротких текстах: Трёхэтапная архитектура избыточна для одного абзаца. Окупается на структурированных документах от 500 слов.
⚠️ Калибровочная инструкция — это переменная: Исследователи сами признают: «можно отклонять» снижает severity, но непонятно — из-за многоагентности или из-за самой инструкции. Возможно, просто добавить «будь сдержан в критике» к обычному промпту даёт похожий эффект.
Ресурсы
Работа: An Agentic Evaluation Architecture for Historical Bias Detection in Educational Textbooks
Авторы: Gabriel Ștefan, Adrian Marius Dumitran — University of Bucharest, Romania
GitHub: github.com/submission-its/bias-detection
Демо и HTML-отчёты: submission-its.github.io/bias-detection
Датасет учебников: manuale.edu.ro
