TL;DR
Multi-hop разбор — это цепочка из семи шагов, где каждый следующий опирается на предыдущий. Сначала модель определяет, вредный ли текст, потом кого он атакует и каким приёмом. Затем она находит цитаты-доказательства и формулирует скрытую идею текста. Только в конце она выносит вердикт о тяжести. Вердикт строится на уже написанном разборе, а не «с нуля».
Главная находка: если просить модель сразу оценить тяжесть («Low / Medium / High / Severe»), она ошибается не в сторону, а в степень. Может поставить «лёгкое» вместо «тяжёлого» там, где человек увидел бы призыв к насилию. С промежуточными шагами согласие с эталоном по порядку уровней выросло у всех восьми моделей. Но точность по классам выросла только у части моделей, у трёх даже упала. Ещё один вывод: модели с «режимом рассуждений» не побеждают стабильно. На шагах с открытым текстом (скрытая идея, последствия) расхождения большие даже между людьми-разметчиками.
Суть метода: не просить вердикт сразу. Разложить задачу на цепочку «вредно ли → кого → чем → почему → какие слова → какой посыл → насколько опасно». Каждый шаг даёт короткий структурированный результат: метки из фиксированного списка или цитаты. Финальную оценку модель делает, опираясь на эти результаты.
Схема метода
ШАГ 1: Триаж — вредный текст или нет → одна метка из списка
ШАГ 2: Цель — кого и по какому признаку атакуют → метки из списка
ШАГ 3: Приём — как выражена враждебность → метки из списка
ШАГ 4: Мораль — какие ценности «нарушены» в оправдание → метки из списка
ШАГ 5: Доказательства — дословные цитаты для шагов 2–4 → фрагменты текста
ШАГ 6: Скрытый посыл — какую идею продвигает текст → 1–2 предложения
ШАГ 7: Тяжесть и последствия — вердикт на основе шагов 1–6 → уровень + абзац
Шаги 1–6 — один промпт с пошаговым рассуждением (CoT).
Шаг 7 в проверке — отдельный запрос, куда подан результат шагов 1–6.
Контрольная группа: шаг 7 «в лоб», только по исходному тексту.
Шаги 2–7 выполняются только для текстов, признанных вредными на шаге 1.
Пример применения
Задача: Вы ведёте модерацию комментариев под постами в Telegram-канале городского медиа на 200 тысяч подписчиков. Под новостью о сорванной доставке появился комментарий. Нужно решить: удалить, забанить или эскалировать юристу. Просто «токсично/нет» не помогает. Нужны причина и уровень опасности, чтобы решение можно было защитить перед автором и редакцией.
Промпт:
Ты помогаешь модератору городского Telegram-канала. Разбери комментарий строго по шагам. Каждый шаг строится на результате предыдущего. Не перескакивай к выводу.
<Комментарий>
«Опять приезжие курьеры сорвали доставку. Таким людям не место в нашем городе, пора их выселять отсюда.»
Комментарий>
<Шаг_1_Триаж>
Выбери ОДНУ метку: Оскорбление / Язык вражды / Опасная речь (призыв к вреду) / Не вредный.
Если «Не вредный» — остановись.
Шаг_1_Триаж>
<Шаг_2_Цель>
Кого атакует текст (явно или неявно) и по какому признаку (национальность, религия, пол, политические взгляды, профессия, статус мигранта, другое). Можно несколько меток.
Шаг_2_Цель>
<Шаг_3_Приём>
Выбери все подходящие: оскорбительная лексика / расчеловечивание / вредные стереотипы / призыв к насилию или вреду / призыв к дискриминации или изгнанию / теория заговора.
Шаг_3_Приём>
<Шаг_4_Мораль>
Какие ценности автор использует, чтобы оправдать враждебность: вред/забота, предательство/лояльность, подрыв авторитета, осквернение/чистота.
Шаг_4_Мораль>
<Шаг_5_Доказательства>
Для шагов 2, 3 и 4 приведи дословные цитаты из комментария, которые подтверждают каждую метку.
Шаг_5_Доказательства>
<Шаг_6_Скрытый_посыл>
Одним-двумя предложениями: какую идею на самом деле продвигает комментарий.
Шаг_6_Скрытый_посыл>
<Шаг_7_Тяжесть>
Опираясь ТОЛЬКО на результаты шагов 1–6, определи уровень: Низкий / Средний / Высокий / Критический.
Затем одним абзацем опиши возможные последствия для адресатов и для сообщества.
Шаг_7_Тяжесть>
Выводи каждый шаг под своим заголовком.
Результат: Модель выдаст семь блоков по порядку. В начале будет метка триажа, затем целевая группа и признак, приёмы с цитатами и моральная рамка. Дальше идёт формулировка скрытого посыла, потом уровень тяжести с абзацем о последствиях. Решение «удалить / забанить / эскалировать» вы принимаете, глядя на цепочку. Если вердикт не нравится, видно, на каком шаге модель свернула не туда.
Почему это работает
Слабость. Когда модель сразу выдаёт «тяжесть», решение принимается одним махом. Она не фиксирует, кого атакуют, чем и есть ли призыв к вреду. Поэтому оценка скачет и плохо объясняется. Особенно плохо модель различает редкие категории, а мелкие ошибки в градации (Средний вместо Критического) незаметны, пока не сравнишь с эталоном.
Сильная сторона. Модель хорошо выполняет узкие подзадачи с фиксированным списком ответов: определить цель, назвать приём, найти цитату. По таблицам статьи именно на таких шагах качество у лучших моделей высокое. Падает оно на открытых шагах: скрытый посыл, последствия.
Как метод это использует. Тяжесть выводится из уже написанного разбора: приёмы, цели, цитаты. Модель опирается на собственные промежуточные выводы, а не угадывает. В статье это дало стабильный выигрыш именно по порядку уровней: ошибки стали «ближе» к эталону. Заодно появляется след рассуждения, который можно проверить.
Рычаги управления: - Списки меток (шаги 1–4): замените на свои категории, например «спам / реклама / угроза / жалоба». Чем чётче список, тем стабильнее ответы. - Шкала тяжести: оставьте 4 уровня или сократите до 3. Чем меньше уровней, тем проще соглашаться с эталоном. - Шаг 5 (цитаты): оставьте, если нужны аргументы для бана или юриста. Уберите ради экономии токенов, если важен только вердикт. - Разделение запросов: шаги 1–6 в одном ответе, шаг 7 в новом сообщении с вставленным результатом. Так делали в статье, и это жёстче отсекает «угадывание».
Шаблон промпта
Ты помогаешь {роль_модератора_или_аналитика}. Разбери {объект_анализа} строго по шагам. Каждый шаг опирается на результат предыдущего. Не перескакивай к выводу.
<Контекст>
{платформа, правила_сообщества, на_что_обращать_внимание}
Контекст>
<Материал>
{текст}
Материал>
<Шаг_1_Триаж>
Выбери ОДНУ метку: {список_категорий_1}.
Если «{безопасная_метка}» — остановись.
Шаг_1_Триаж>
<Шаг_2_Цель>
Кого или что затрагивает материал. Метки: {список_целей}. Признак: {список_признаков}. Можно несколько.
Шаг_2_Цель>
<Шаг_3_Приём>
Как это выражено. Метки: {список_приёмов}. Можно несколько.
Шаг_3_Приём>
<Шаг_4_Мотив>
Чем автор оправдывает позицию. Метки: {список_мотивов}.
Шаг_4_Мотив>
<Шаг_5_Доказательства>
Для шагов 2, 3, 4 приведи дословные цитаты из материала.
Шаг_5_Доказательства>
<Шаг_6_Скрытый_посыл>
Одним-двумя предложениями: какую идею на самом деле продвигает материал.
Шаг_6_Скрытый_посыл>
<Шаг_7_Тяжесть>
Опираясь ТОЛЬКО на результаты шагов 1–6, определи уровень: {шкала_уровней}.
Затем одним абзацем опиши возможные последствия.
Шаг_7_Тяжесть>
Выводи каждый шаг под своим заголовком.
Что подставлять: {объект_анализа} — комментарий, отзыв, письмо, пост. Списки меток — ваши категории. {шкала_уровней} — 3–4 уровня с короткими определениями.
🚀 Быстрый старт — вставь в чат:
Вот шаблон multi-hop разбора. Адаптируй под мою задачу: {опиши, что за материалы разбираешь и какое решение нужно принять}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про платформу и правила, про категории для каждого шага и про шкалу тяжести. Эти списки задают рамки шагов, а без них метод превращается в обычное «оцени мне это». Модель возьмёт структуру шаблона и соберёт промпт под вашу задачу.
Ограничения
⚠️ Выигрыш неровный: промежуточные шаги стабильно улучшили согласие по порядку уровней тяжести. Но точность по классам выросла у части моделей, а у трёх упала. Это не гарантированное улучшение.
⚠️ «Режим рассуждений» не панацея: модели с длинными рассуждениями не выигрывали стабильно. На некоторых шагах они хуже обычных версий. Не рассчитывайте, что дорогая reasoning-модель сама решит задачу.
⚠️ Открытые шаги слабые: формулировка скрытого посыла и последствий даётся хуже всего. Даже два человека-разметчика тут расходятся. Относитесь к этим блокам как к черновику для человека.
⚠️ Редкие категории: модели хуже находят нечастые цели и приёмы. Если ваш случай редкий, проверяйте вручную.
⚠️ Эталон частично машинный: разметку первой делала сама LLM, а люди проверили лишь 100 текстов из 1200. Цифры стоит читать как ориентир.
⚠️ Один язык и одна задача: проверяли на персидских текстах из соцсетей. Перенос на русский и на другие задачи логичен, но в статье не проверялся.
⚠️ Остановка на шаге 1: шаги 2–7 имеют смысл только для вредного контента. В статье остальные шаги оценивали лишь на текстах, где эталон уже признал контент вредным.
Как исследовали
Исследователи собрали 1200 персидских текстов из X и Instagram: по 300 в каждой категории (оскорбление, язык вражды, опасная речь, безобидный). Часть взяли из прежних датасетов (348), остальное (852) добрали вручную свежими поисками по ключевым словам, которые подсказала сама LLM. Затем одна сильная модель разметила каждый текст по семи шагам. Два носителя языка независимо разметили 100 текстов тем же промптом, и разногласия решил первый автор. Выяснилось: согласие высокое на закрытых задачах (триаж, тяжесть, цели) и низкое на открытых (посыл, последствия). Этим же объясняется, почему модели хуже справляются с последними шагами.
Потом восемь моделей (четыре закрытые, четыре открытые, среди них пары «обычная и reasoning-версия») прошли весь бенчмарк с температурой 0. Главное сравнение: тяжесть «в лоб» против тяжести с опорой на шаги 1–6. Согласие по порядку уровней выросло у всех моделей. Точность по классам выросла у пяти моделей из восьми и упала у трёх. Вывод для практики: цепочка делает ошибки «ближе к истине», но не обещает чудес на каждой метрике.
Отдельно посчитали связи. Призыв к насилию или вреду даёт самую тяжёлую категорию в 70% случаев, призыв к дискриминации — в 51%. Теории заговора чаще попадают в лёгкие категории. Атаки по политической принадлежности чаще всего оправдываются «подрывом авторитета». Эти связи можно превратить в правила эскалации.
Адаптации и экстраполяции
🔧 Техника: разделить запросы → жёстче отсечь «угадывание».
Шаги 1–6 выполните в одном чате. Затем откройте новый чат и дайте модели только результат разбора:
Вот результат разбора комментария по шагам 1–6:
{вставь_результат}
Определи тяжесть (Низкий / Средний / Высокий / Критический) ТОЛЬКО на основе этого разбора и опиши последствия.
В статье вердикт тяжести строился именно на готовых промежуточных результатах, а не на исходном тексте.
🔧 Техника: добавить правила эскалации в шаг 7 → меньше разброса.
Из корреляций статьи можно вывести правило. Вставьте в шаг 7:
Если на шаге 3 есть «призыв к насилию или вреду» — уровень не ниже «Высокий». Если есть «призыв к изгнанию или дискриминации» — не ниже «Средний». Если только «теория заговора» и нет призывов — обычно «Низкий» или «Средний», но проверь контекст.
Это не метод статьи, а мой вывод из её связей «приём → тяжесть». Проверьте правила на 20–30 своих примерах, прежде чем доверять.
Экстраполяция: тот же каркас для отзывов клиентов. Замените «язык вражды» на «жалоба / угроза / публичная критика / спам». Шаги: что за жалоба → на кого → каким тоном → какие слова → что требует → насколько срочно. Модель определит срочность реакции на основе разбора, а не интуитивно. Подходит для отзывов на Ozon или Яндекс Картах и обращений в поддержку.
Ресурсы
- Работа: From Triage to Impact: A Multi-Hop Reasoning Benchmark for Explainable Persian Hate Speech
- Авторы: Ghazal Kalhor (EPFL), Sima Kamandloo (Shahid Beheshti University), Mehrsa Shamsian (University of Social Welfare and Rehabilitation Sciences), Behnam Bahrak (Khatam University)
- Датасет: https://github.com/kalhorghazal/From-Triage-to-Impact
- Теоретическая база: Moral Foundations Theory (Koleva et al., 2015)
