Как я строил фактчекер на все случаи жизни и что из этого вышло

 Публичный пост
17 августа 2026  27

Предыстория: как я вообще дошёл до задачи такой

Началось всё с того, что я задумал сделать youtube канал, где всё будет делать агент. Пишешь ему: хочу видос на тему и он через несколько часов выдаёт тебе готовый ролик, заливаешь на youtube. Ну вот и он. Профит.

Ну а что, всякие учёные дают моделям магазинами и радиостанциями порулить. Чем я хуже?

Кстати, сделать это даже почти получилось, правда видосы получались не смотрибельные, т.к. насквозь ИИшные. Но в процессе было весело.
Но это отдельная тема.

Так вот, одним из элементов этой системы должен был стать фактчекер.
Причём в самом начале большого пути я наивно полагал, что достаточно сказать llm: "проверь факты" или "проведи фактчек" и всё будет.
Как же я ошибался.

Я с самого начала правда подумал, что модельки галлюцинируют, сейчас вроде получше, но если я хочу сделать надёжную проверку надо попросить перепровить ещё две llm'ки. И там вообще даже не 146, а все 300% успеха.
Поскольку у меня основная - claude, то запасными стали chatgpt и gemini. Последний кстати, вообще ни хрена не ловит, только поёт дифирамбы про то какой клёвый текст и какой молодец его автор.

Начало стройки

Поскольку я не программист, выбор очевиден. А процесс немного предсказуем.
Причём делаю я это обычно в две ступени. Сперва в чате расписываю проблему, и как я думаю её решать. Мы это отдельно обсуждаем.

Из этого кстати почти получился "ассистент для думанья", но это опять же отдельная тема. И там всё ещё сыро.

На выходе получается постановка задачи для claude code. Которому отдаётся эта постановка. Результат работы опять в чат с моими комментраиями. И так - до потери пульса. Или появления результата.

Кстати, тот же самый клод в чате в последнее время стал феерически тупить. Подчёркиваю, именно в чате. Поэтому использовать его как постановщика задач было очевидной ошибкой. Это стоило мне примерно 25 итераций.
Так что сейчас я ставлю задачу claude code сам. Получается намного лучше.

Изначальная постановка задачи была в стиле: я думал что llm умеет, а он вообще ни фига. Надо сделать так чтоб сумел.
Всё же простааа!!111

Быстро стало понятно, что не всё. И не просто.
Промежуточный этап:

  1. Поиск в интернете ищет очень приблизительно. Что человек будет искать что интеллект - разницы никакой. Ищет похожее, а не факты. Например, надо проверить фразу "Население Земли 9 миллиардов". Результатом поиска будет 5 страниц с таргетированной рекламой, 3 битые ссылки и ещё некоторое количество страниц содержащих похожие слова. Например твит Илоши Маска с его прогнозом когда население Марса достигнет 9% населения Земли.
  2. Модель не смотрит в интернет. "У мальчика абсолютная память" (с) поэтому он описывает всех в первом ряду безошибочно, а в твоих запросах лажает через раз. Это лечится строгой инструкцией "не бери значения из памяти"
  3. Бинарное: да / нет. Не работает. Состояний 4. Может даже больше. Но это не точно. Подтверждено, опровергнуто, источники противоречат и "хрен его знает". С первыми двумя всё понятно. "Источники противоречат" чтоб долго не расписывать, например, "Бог создал Землю за 6 дней, на седьмой бухал, на 8 автапати, на 9 - отходняк" Другой источник, описывает это немного по-другому. Это может быть смешно, но люди друг другу столетиями из-за верности этих утверждений бошки рубили. Хрен его знает - доказательств недостаточно. Не одни протестанты сказали одно, а католики другое. А вообще нет инфы.
  4. Найти то, что надо это даже не полдела, а в лучшем случае треть. По данным ООН численность за последние годы подошла к девяти миллиардам. - сколько утверждений? Правильный ответ: примерно три-четыре :) значение - численность +- 9 млрд атрибуция - что это данные именно ООН, динамика - «подошла» утверждает рост (а может падение) и что раньше было меньше (или больше) и дата.
  5. Арифметика - отдельная часть. Казалось бы самая простая, но по факту как бы не наоборот. "Компания с годовой выручкой около 25 миллиардов подписала обязательств на 1,15 триллиона. Это в сорок шесть раз больше выручки." - вот эта фраза пережила 6 проверок разными llm. Кто хорошо учился, посчитайте? Сколько получилось? Правильно, получилось 46. Только проблема была в том что выручка бралась за год, а обязательства за 10 лет. Внимательный читатель скажет: "ага!" это НЕ арифметика! Ага, типа того. Только когда я решил разбить задачу на компоненты и отдельно проверять математику, это была как раз "арифметическая проверка". И модель радостно сообщала, что ошибок нет.

Что с этим делать?

"Орешек знаний твёрд, но мы не привыкли отступать" (с) диды помнят.

В конце концов я остановился на следующем варианте. Он потребляет дофига контекста и жрёт лимиты, но даёт более или менее приемлемый результат.
Текст разбирается на отдельные утверждения отдельным агентом, а потом другие агенты начинают в параллель шустрить выискивая эти утверждения в интернете.

На начальных стадиях эксперимента я уработал за 30 минут пятичасовой лимит. После сброса лимита ещё за 20 минут ещё раз пятичасовой лимит. Решил что это как-то дофига встроил ограничитель. Что влияет на качество результата.>

Запускается всё это великолепие в claude code opus 5 (ultracode).

Как это работает:

  1. Ограничение по бюджету. Считаются слова, и сейчас у меня стоит ограничитель: 30 минут на каждые 2000 слов. Хвост статьи получает результат: "не проверялось"
  2. Извлечение утверждений. Тут начинается работа. Текст делится на предложения, каждое из них разбирается на факты. Метафоры, оценки и словоблудие помечаются отдельно и не проверяются.
  3. Отдельный агент ищет внутренние противоречия в тексте.
  4. Проверка по источникам. Самый сложный шаг. Идёт волнами. Несколько агентов параллельно берут по факту и начинают искать его источник. Если источник найден, то делается скриншот и подсвечивается место с цитатой.
  5. Сборка и контроль качества. Выполняется программно (не llm), понижается рейтинг информации из ненадёжных источников, а также если скриншота фактически нет. Расшифровку пишет llm. Возможны как я уже говорил, 4 варианта:
    • Подтверждено (есть источник "за" и нет "против")
    • Опровергнуто (ровно наоборот)
    • Источники противоречат (источники одинаковой "силы")
    • Не верифицируемо (не путать с противоречивыми источниками)

Результат выглядит примерно так:

Источники ранжируются по силе от 0 - самый надёжный до 5 - самый отстойный.
0 - Научные работы и иже с ними. Там где информация возникла (научные работы, данные нацстатистики, законы) - документ сам порождает факт
1 - Мировые агентства и качественная пресса (Reuters, AP, Bloomberg и т.п.)
2 - Аналитика с методологией и авторитетные НКО (Gartner, Amnesty International, Human Rights Watch)
3 - Национальные и локальные СМИ
4 - НЕ источники. Википедия, энциклопедии, агрегаторы, соцсети, форумы, YouTube-пересказы, ИИ-сводки. Годится только для перехода к источникам.
5 - Отрицательная надёжность. Анонимные сайты. Известные фейкометатели и т.п. Слабый сигнал о том, что факт лажовый.

Тонкий момент. Допустим, пресс-релиз Nvidia - это уроверь 0 для факта «Nvidia объявила о соглашении» (организация говорит о себе). Но тот же самый пресс-релиз — не выше 2 для факта «соглашение будет выполнено». Ибо, Nvidia тут - заинтересованная сторона.

Чем это отличается от простого погуглить или от обычной llm?

Погуглить - надо делать всю эту работу самому. Ссылка на википедию, а на кого ссылается википедия? На новостника? круто, а он на кого? на научную работу. Хорошо.
Если реально большая статья с большим количеством фактов, то можно йобу даться всё это раскапывать.

От llm это отличается примерно всем. Что и как там проверяет модель, вообще никто не знает. Подозреваю разработчики тоже не знают. А следующая версия может ловить косяка там где предыдущая работала нормально.

Бонусом есть "типа пруф" - скрин на момент запуска верификатора (выглядит примерно так).

А как у других?

В какой-то момент стал искать как вообще такую задачу решают. И понял, что не надо было изобретать велосипед. Сама методика существует и применяется.

Есть бенчмарк.
AVeriTeC (Automated Verification of Textual Claims. Шлихткрулль, Го и Влахос, Кембридж, NeurIPS 2023.)
https://proceedings.neurips.cc/paper_files/paper/2023/file/cd86a30526cd1aff61d6f89f107634e4-Paper-Datasets_and_Benchmarks.pdf?utm_source=chatgpt.com
4.5 тысячи настоящих утверждений, взятых из фактчеков 50 организаций. К каждому утверждению в вебе есть реальные доказательства (человеки проверили), и зачёт идёт только если сказано не просто одно из 4х утверждений, но и как именно было получено это утверждение (сама цепочка рассуждений)
Победитель соревнования 63%. Меньше двух третей передовой ИИ смог подтвердить.
Соответственно 1/3 в пролёте.
Но это не значит, что "аааа, модель смогла отличить только 63% фейковых новостей"
Это значит что "в 63% случаев модель нашла доказательства И на их основании правильно вынесла вердикт"
Такие дела.

Что дальше?

В какой-то момент закопаюсь поглубже в AVeriTeC и посмотрю, как там решали задачу. Должно быть интересно. И обновлю свой фактчекер на основании этого.

Откомментируйте первым 👇

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб