TL;DR
Test-Taking Fact Check — техника, которая переформулирует проверку фактов в задачу "True/False из учебника по языку" и заставляет модель идти по жёсткой 4-шаговой цепочке критериев — от явного к выводимому — вместо того чтобы рассуждать без плана.
LLM плохо проверяет, соответствует ли утверждение исходному документу: либо разглагольствует на несколько абзацев, либо "угадывает" без проверки логики. Итог — пропускает ошибки там, где связь не лежит на поверхности, и тратит огромное количество токенов на открытые рассуждения без структуры.
Метод решает это двумя шагами: сначала разбивает сложное утверждение на простые атомарные факты (каждый проверяется отдельно), потом прогоняет каждый факт через 4 последовательных критерия: сначала явно упомянутое — потом то, что можно вывести логически.
Схема метода
Вход: [исходный документ] + [утверждение для проверки]
ШАГ 1: ДЕКОМПОЗИЦИЯ (один запрос)
Сложное утверждение → набор атомарных фактов
Пример: "Иван был директором завода в Перми в 2019 году"
→ [Иван был директором] + [завод в Перми] + [это было в 2019]
ШАГ 2: ПРОВЕРКА КАЖДОГО ФАКТА (один запрос на факт или все сразу)
C1: Субъект и объект факта вообще упомянуты в документе?
Нет → FALSE. Да → C2
C2: Описания субъекта и объекта прямо подтверждены документом?
Нет → переход к C4. Да → C3
C3: Связь между субъектом и объектом прямо подтверждена?
Нет → переход к C4. Да → TRUE
C4: Всё ещё непроверенное можно логически вывести из документа?
Да → TRUE. Нет → FALSE
Выход: TRUE / FALSE + краткое объяснение со ссылкой на фрагмент документа
Шаги можно объединить в один промпт — декомпозиция + проверка по критериям.
Пример применения
Задача: Ты написал краткое резюме условий договора с поставщиком для презентации директору. Хочешь проверить, не исказил ли что-нибудь — особенно сроки, штрафы, условия расторжения.
Промпт:
Ты — внимательный юридический ревьюер. Проверь, подтверждается ли
утверждение исходным документом.
Исходный документ:
---
[вставь текст договора или нужный раздел]
---
Утверждение для проверки:
"[вставь конкретную фразу из своего резюме — например:
'Поставщик обязан устранить дефекты в течение 14 дней,
иначе покупатель вправе расторгнуть договор в одностороннем порядке']"
Действуй строго по шагам:
ШАГ 1 — Разбей утверждение на отдельные атомарные факты.
Перечисли их пронумерованным списком.
ШАГ 2 — Для каждого факта пройди по критериям последовательно:
C1: Упомянуты ли субъект и объект факта в документе?
Если нет → FALSE, стоп.
C2: Явно ли подтверждены описания субъекта и объекта?
Если нет → переходи к C4.
C3: Явно ли подтверждена связь между субъектом и объектом?
Если нет → переходи к C4.
C4: Можно ли логически вывести всё ещё непроверенное из документа?
Если нет → FALSE. Если да → TRUE.
Для каждого факта выведи: [ФАКТ] → [C1/C2/C3/C4 с обоснованием] → [TRUE/FALSE]
В конце дай итоговый вердикт по всему утверждению.
Результат: Модель покажет список атомарных фактов из утверждения — каждый отдельно. Для каждого — цепочку проверки по критериям с цитатами из документа или указанием на отсутствие. В финале — вердикт TRUE/FALSE с объяснением, какой именно факт не подтверждён и почему.
Почему это работает
Проблема: LLM без структуры проверяет факт одним "взглядом" — как человек, который читает текст по диагонали. Многосоставные утверждения путают модель: она может подтвердить факт потому что часть его верна, пропустив неточность в деталях.
Что умеет модель: Следовать жёстким последовательным инструкциям с явными условиями перехода. Когда критерии заданы как "если A, то B, иначе C" — модель генерирует текст по этому паттерну без отступлений.
Как метод использует это: Критерии выстроены от явного к выводимому. Сначала проверяется то, что должно стоять в тексте буквально — субъект, объект, их описания, связь. Только если явное не нашлось — разрешается рассуждать об импликациях. Это отсекает галлюцинации: модель не может "додумать" факт, пока не убедится, что явное уже проверено.
Рычаги управления: - Детализация C4 → добавь "допускается максимум один логический шаг" — сделает вывод строже, уберёт многоходовые домыслы - Требование к цитате → добавь "приведи дословную цитату из документа для каждого TRUE" — повысит доверие, но удлинит ответ - Порог строгости → замени C4 на "если не подтверждено явно → FALSE" для юридических/финансовых задач, где вывод недопустим
Шаблон промпта
Ты — ревьюер фактов. Проверь, подтверждается ли утверждение
исходным документом.
Исходный документ:
---
{документ_или_фрагмент}
---
Утверждение:
"{утверждение_для_проверки}"
Действуй строго по шагам:
ШАГ 1 — Разбей утверждение на атомарные факты.
Перечисли пронумерованным списком — каждый факт отдельно
и независимо проверяем.
ШАГ 2 — Для каждого факта:
C1: Упомянуты ли субъект и объект в документе?
Нет → [FALSE]. Стоп.
C2: Явно ли подтверждены их описания?
Нет → переходи к C4.
C3: Явно ли подтверждена связь между ними?
Нет → переходи к C4.
C4: Можно ли вывести непроверенное из документа логически?
Нет → [FALSE]. Да → [TRUE].
Формат для каждого факта:
Факт N: [текст факта]
→ C1: [да/нет + объяснение]
→ C2: [да/нет + объяснение или "пропуск → C4"]
→ C3: [да/нет + объяснение или "пропуск → C4"]
→ C4: [если применимо]
→ Итог: [TRUE / FALSE]
Итоговый вердикт по утверждению: [TRUE / FALSE / ЧАСТИЧНО]
Объяснение: [какой факт не подтверждён и почему]
Что подставлять:
- {документ_или_фрагмент} — исходный текст, с которым сверяем. Это может быть договор, статья, конспект, транскрипт, официальный документ
- {утверждение_для_проверки} — конкретная фраза или предложение, которое нужно проверить. Одно утверждение за раз
🚀 Быстрый старт — вставь в чат:
Вот шаблон Test-Taking Fact Check для проверки фактов по документу.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит какой документ и какое утверждение проверяем — потому что метод работает только при наличии конкретного источника истины и конкретного тезиса для сравнения. Она возьмёт структуру критериев и адаптирует под твою задачу.
Ограничения
⚠️ Утверждения без исходного документа: Метод работает только при наличии документа-источника. Для проверки общих знаний ("правда ли, что...") — не подходит.
⚠️ Субъективные утверждения: Критерии заточены под факты — кто, что, когда, как. Оценочные суждения ("продукт качественный", "тон письма уважительный") метод не верифицирует.
⚠️ Длинные документы: Если документ большой, а факт упомянут в начале — модель может потерять нить. Лучше подавать релевантный фрагмент, а не весь документ целиком.
⚠️ Сложные многоходовые выводы: C4 хорошо работает для одного логического шага. Если для проверки нужна цепочка из трёх и более выводов — модель может ошибиться, приняв FALSE за TRUE.
Как исследовали
Исследователи из Бристольского университета взяли задачу, которую обычно решают специализированными классификаторами — проверку фактической согласованности — и переформулировали её как задачу чтения с пониманием. Идея пришла из педагогики: школьные упражнения True/False на уроках Language Arts давно используют именно такую структуру рассуждения.
Метод проверили на двух бенчмарках: FacTax-Benchmark (суммаризация новостей и диалогов) и LLM-AggreFact (более разнообразные источники и модели-генераторы). Сравнивали с десятком методов — от лёгких классификаторов (DeBERTa, 0.4B) до GPT-4o и Llama-3.3-70B. Метрика — сбалансированная точность (учитывает и ложные позитивы, и ложные негативы поровну).
Главный сюрприз: Qwen3-30B с этим промптом обошёл GPT-4o и Llama-70B, то есть меньшая модель с правильной структурой рассуждения победила вдвое большую. При этом расход токенов снизился на 80% по сравнению с открытым CoT — потому что структурированный чеклист убирает лишние "рассуждения ни о чём". На FacTax-Benchmark метод установил новый рекорд. На LLM-AggreFact занял второе место, уступив только методу, который требует дообучения модели.
Отдельно исследовали дообучение маленькой модели (0.6B) — это уже область MLops и не применимо в чате. Но сам промпт работал в zero-shot режиме без единого примера.
Адаптации и экстраполяции
🔧 Техника: строгий режим без C4 → убираем право на домысел
Для юридических, финансовых, медицинских контекстов — где "можно вывести логически" недостаточно:
C4: Если информация не подтверждена явно в C1–C3 → автоматически FALSE.
Домыслы и импликации не засчитываются.
Итог: проверка становится максимально консервативной — только то, что буквально написано в документе.
🔧 Техника: аудит AI-саммари целиком
Вместо одного утверждения — проверяй весь краткий пересказ разом:
Вот оригинальный документ и его краткое изложение.
Разбей изложение на отдельные утверждения.
Каждое проверь по критериям C1–C4.
В конце дай список: что подтверждено, что искажено, что добавлено от себя.
Полезно когда просишь AI сжать длинный документ и хочешь убедиться, что ничего ключевого не потерялось и не перевернулось.
Ресурсы
Название работы: Teaching Language Models to Check Grounded Claim Factuality with Human Test-Taking Strategies
GitHub: https://github.com/Haruhi07/Test-Taking
Авторы: Yuxuan Ye, Raul Santos-Rodriguez, Edwin Simpson
Организация: Intelligent Systems Laboratory, University of Bristol, UK
Бенчмарки: FacTax-Benchmark (Xu et al., 2024), LLM-AggreFact (Tang et al., 2024)
