TL;DR
LLM уверенно находит причины ("почему произошло X?"), теряет точность при вопросах о вмешательстве ("что случится если сделать Y?") и сильнее всего ошибается при контрфактуальных вопросах ("а что если бы X не произошло?"). Это не случайность — у каждого уровня своя специфическая точка отказа. METER — бенчмарк, который впервые измерил все три уровня на одном и том же контексте, убрав случайные факторы оценки.
Первая точка отказа — отвлечение на нерелевантные факты. Дай модели текст про аварию и спроси "почему произошла авария?" — она часто выберет "водитель ехал по ул. Ленина" вместо "отказали тормоза". Обе фразы — правда из контекста. Но только одна является причиной. Модель плохо отфильтровывает каузально нерелевантные детали (те, что не связаны с причиной) от реальных причин.
Вторая точка отказа — отрыв от контекста. Чем сложнее вопрос, тем чаще модель уходит в свои знания вместо данного текста. При вопросах "а что если" модель начинает придумывать ответы, которых нет в исходном материале. Хорошая новость: это лечится двумя вещами — явной инструкцией "опирайся только на предоставленный текст" и примерами рассуждений (few-shot — когда перед вопросом даёшь 1-2 готовых примера как рассуждать).
Схема метода
Три уровня — три разные задачи, три разные точки отказа:
УРОВЕНЬ 1: Найди причину
Вопрос-тип: "Почему произошло X?"
→ Слабость: выбирает нерелевантный, но фактически верный контекстный факт
→ Фикс: явно попроси игнорировать фоновые детали, фокусироваться на причинной цепочке
УРОВЕНЬ 2: Предскажи последствие вмешательства
Вопрос-тип: "Что случится если сделать Y?"
→ Слабость: уходит от контекста, добавляет внешние знания, галлюцинирует
→ Фикс: few-shot примеры рассуждений + строгое "только на основе предоставленного текста"
УРОВЕНЬ 3: Контрфактуал
Вопрос-тип: "Что было бы, если бы X не произошло / произошло иначе?"
→ Слабость: генерирует логически противоречивые ответы, теряет нить гипотетического сценария
→ Фикс: few-shot + строгая привязка к контексту + пошаговая цепочка ("сначала установи, что изменилось...")
Все три уровня работают в одном чате. Никакого кода, никакой инфраструктуры.
Пример применения
Задача: Ты — основатель небольшого сервиса доставки еды в Казани. Написал аналитическую записку по итогам месяца. Хочешь попросить Claude проанализировать причины, спрогнозировать результат изменения и разобрать контрфактуальный сценарий.
Промпт:
Вот аналитическая записка по работе нашего сервиса за июнь:
[Вставь текст: выручка упала на 23%, количество заказов снизилось в три раза по
выходным, курьеры жаловались на задержки со стороны ресторанов-партнёров,
параллельно мы запустили новый дизайн приложения]
---
Я задам тебе три типа вопросов. Для каждого — опирайся СТРОГО на текст выше.
Не добавляй внешние знания. Рассуждай по шагам.
УРОВЕНЬ 1 (причина):
Почему упала выручка? Назови только то, что прямо вызвало падение по данным из
записки. Проигнорируй факты, которые просто сопутствовали событию, но не вызвали его.
УРОВЕНЬ 2 (вмешательство):
Что произойдёт с выручкой, если мы уберём нового партнёра-ресторан, давшего
наибольший процент задержек? Строй прогноз только на логике, описанной в тексте.
УРОВЕНЬ 3 (контрфактуал):
Что было бы с падением по выходным, если бы мы НЕ запускали новый дизайн
приложения в этот же период? Сначала установи, что именно изменилось бы,
а потом выведи логический результат — строго в рамках контекста.
Результат:
Модель даст три отдельных блока — по одному на каждый уровень. На первом уровне нужно смотреть, не притягивает ли она нерелевантные детали (например, не цепляется ли за запуск нового дизайна как причину, если в тексте нет явной связи с выручкой). На втором и третьем — насколько строго рассуждения привязаны к твоему тексту, не появляются ли ответы "из головы" про рынок доставки в целом.
Почему это работает
LLM не "понимает" причинность — она подбирает паттерн. Когда в тексте много деталей, модель ищет что-то "похожее на причину" по форме: упоминания до события, описательные фразы, явные глаголы ("вызвал", "привёл к"). Нерелевантный факт рядом с причиной — сильный конкурент за внимание, потому что он тоже "выглядит" как часть ответа.
Контрфактуальные и интервенциональные вопросы ломают "режим цитирования". Простые вопросы о причинах модель решает, воспроизводя то, что есть в тексте. Но "что было бы если..." требует симулировать альтернативную реальность. Здесь модель переключается в режим генерации по своим знаниям — и начинает уходить от контекста, добавляя то, чего в тексте нет.
Два рычага, которые это исправляют: - Явная привязка к контексту ("опирайся только на предоставленный текст") — это инструкция, которая сигнализирует: "режим цитирования, не фантазируй". Работает особенно на уровнях 2 и 3. - Few-shot ("вот пример как рассуждать") — даёт модели структуру рассуждения до того как она начнёт отвечать. Пример показывает правильный паттерн: шаг → следствие → вывод строго из контекста.
Рычаги управления:
- Усиление привязки → добавь "процитируй конкретное место из текста, которое привело тебя к этому выводу". Форсирует проверку.
- Few-shot → перед сложным вопросом дай один пример: "Вот похожая ситуация из другого кейса: [пример вопроса + пример рассуждения]". Для контрфактуалов эффект максимальный.
- Пошаговое рассуждение → добавь "сначала определи, что гипотетически изменилось, потом выведи следствие по шагам". Chain-of-Thought (пошаговое рассуждение) помогает не всем моделям одинаково, поэтому тестируй.
Шаблон промпта
Вот контекст для анализа:
[{текст — отчёт, статья, переписка, описание ситуации}]
---
Правило: опирайся СТРОГО на текст выше. Не добавляй внешние знания.
При каждом выводе укажи, какое место из текста его обосновывает.
{Выбери нужный уровень:}
УРОВЕНЬ 1 — Причина:
Почему произошло {событие-следствие}?
Назови только прямую причину из текста. Проигнорируй фоновые детали,
которые просто упоминаются рядом, но не вызвали событие.
УРОВЕНЬ 2 — Вмешательство:
Что произойдёт с {результат}, если {описание нового действия или изменения}?
Строй прогноз строго по логике, описанной в тексте. Рассуждай по шагам.
УРОВЕНЬ 3 — Контрфактуал:
Что было бы с {результат}, если бы {гипотетическое отличие от реальности}?
Сначала определи, что именно изменилось бы.
Потом выведи следствие строго в рамках контекста, по шагам.
Что подставлять:
- {текст} — любой документ, который хочешь анализировать причинно-следственно
- {событие-следствие} — то, что уже произошло и причину чего ищешь
- {описание нового действия} — изменение, которое рассматриваешь
- {гипотетическое отличие} — альтернативное прошлое, которое хочешь "отмотать"
Три уровня можно использовать по отдельности — берёшь только нужный блок.
🚀 Быстрый старт — вставь в чат:
Вот шаблон для анализа причинно-следственных связей в тексте.
Адаптируй под мою задачу: {твоя задача и текст для анализа}.
Задавай вопросы, чтобы заполнить нужные поля.
[вставить шаблон выше]
LLM спросит какой уровень нужен и какое событие анализировать — потому что именно это определяет, как формулировать вопрос и насколько строго привязываться к контексту.
Ограничения
⚠️ Для простых вопросов оверкилл: Если задача очевидная и контекст маленький — детализированная привязка к тексту не нужна и только замедляет.
⚠️ CoT не универсален: Пошаговое рассуждение помогает моделям с менее развитой логикой, но у мощных моделей (GPT-4o+) может добавлять "шум" и снижать качество. Тестируй оба варианта.
⚠️ Маленькие модели плохи на уровне 2 и 3: Для вмешательств и контрфактуалов нужны большие модели. Если работаешь через слабую модель — жди заметно худших результатов на сложных "а что если" вопросах.
⚠️ Исследование — диагностическое, не инструментальное: Оно объясняет почему LLM ошибается, но готового "волшебного промпта" нет. Принципы нужно применять с пониманием.
Как исследовали
Задача была сложная: как честно сравнить LLM на разных уровнях причинно-следственного мышления, если в существующих тестах каждый уровень проверялся на разных текстах? Это всё равно что проверять умение бегать, прыгать и плавать у разных людей и называть это сравнением одного спортсмена. Исследователи из Сычуаньского университета и Национального университета Сингапура решили проблему элегантно: каждая запись в датасете — один текст и три вопроса к нему, по одному на каждый уровень. Так убрали "шум" от разных контекстов.
Датасет из 4 145 записей собрали полуавтоматически: за основу взяли четыре существующих датасета с аннотированными парами "причина → следствие", потом Gemini 2.5-Pro генерировал вопросы всех трёх уровней, а люди-аннотаторы проверяли и правили. Интересная деталь дизайна: специально отфильтровали случаи, где модели уже знают ответ без контекста — чтобы тест проверял именно контекстное мышление, а не запомненные факты.
Тестировали 11 моделей — от Qwen3-0.6B до GPT-5 и Gemini3-Pro — под четырьмя схемами промптинга. Самая неожиданная находка: CoT (пошаговое рассуждение) ухудшило результат GPT-4o на уровне 1 — с 77.96% до 75.14%. Гипотеза авторов: модели, уже умеющие рассуждать эффективно, получают от явного CoT "шум" вместо помощи. Зато Llama-3.3-70B выиграла от CoT значительно (+5%). Это важный сигнал: не всегда "больше шагов = лучше".
Адаптации и экстраполяции
🔧 Техника: усиленная проверка источника → защита от галлюцинаций
Добавь в конце вопроса: "Для каждого вывода процитируй дословно место из текста, которое его обосновывает. Если цитаты нет — не делай вывод." Этот фикс форсирует модель оставаться в режиме "я воспроизвожу текст", а не "я знаю про это". Лучше всего работает для уровней 2 и 3.
🔧 Техника: few-shot для контрфактуала
Перед сложным "а что если" вопросом дай маленький пример рассуждения на похожей структуре (не обязательно из той же темы):
Пример рассуждения для контрфактуала:
Контекст: "Проект задержался потому что дизайнер заболел, из-за этого
разработчики ждали макеты три недели."
Вопрос: Что было бы, если бы дизайнер не заболел?
Рассуждение: Если дизайнер не болел → макеты готовы вовремя → разработчики
не ждали → задержки не было.
---
Теперь применяй такой же паттерн к моему вопросу:
[твой текст и вопрос]
Модель берёт структуру рассуждения из примера и применяет её к новому случаю. Особенно полезно для менее мощных моделей.
Ресурсы
Работа: METER: Evaluating Multi-Level Contextual Causal Reasoning in Large Language Models
Датасет и код: https://github.com/SCUNLP/METER
Авторы: Pengfeng Li, Chen Huang, Chaoqun Hao, Hongyao Chen, Xiao-Yong Wei, Wenqiang Lei, See-Kiong Ng
Организации: College of Computer Science, Sichuan University; Institute of Data Science, National University of Singapore
Теоретическая основа: Pearl and Mackenzie (2018) — The Book of Why (Лестница причинности: ассоциация → вмешательство → контрфактуал)
