Журнал фактов: как в KW-7 AI победили галлюцинации цифр в автономных отчётах
Разработчики корпоративного ИИ-ассистента KW-7 AI столкнулись с тем, что автономный агент, готовя отчёты, выдумывал цифры и подкреплял их несуществующими ссылками. Решение было найдено в архитектуре «журнала фактов», которая заставляет модель работать только с проверенными данными и исключает появление чисел, которых нет в источниках.
В корпоративном ИИ-ассистенте KW-7 AI появился режим автономного выполнения целей, который позволяет пользователю ставить задачу не в формате вопроса, а в формате цели. Например, «Подготовь обзор рынка электромобилей в России: продажи по годам, доля рынка, основные марки, прогноз». Система самостоятельно составляет план, ищет информацию в интернете, читает страницы, выполняет расчёты, строит графики и сохраняет готовый отчёт. На выполнение такой задачи уходит от пятнадцати минут до часа без участия человека. Первые же прогоны показали внешне безупречные результаты: аккуратные таблицы, графики, список источников, а встроенная проверяющая модель, оценивавшая ответ, ставила «высокое качество». Однако при сверке цифр с источниками выяснилось, что отчёты содержат множество ошибок, которые не видны невооружённым глазом.
Анализ одного отчёта выявил несколько типов проблем. Во-первых, цифры из ниоткуда: ряд продаж «2019 — 1 118 … 2022 — 2 993» был подписан ссылками на три сайта, но ни на одном из них этих чисел не было — модель сгенерировала их и сохранила в файл, а проверяющая модель одобрила ответ, так как он выглядел полным и развёрнутым. Во-вторых, неверная интерпретация величины: модель взяла со страницы ряд цифр и выдала его за продажи, посчитав рост «+79% и +62%», хотя на самом деле это были данные о количестве автомобилей в парке, а не о продажах за год. В-третьих, перепутанные источники: некоторые цифры присутствовали на одном сайте, а ссылка вела на другой. В-четвёртых, придуманные адреса: в отчёте указывались ссылки вида autostat.ru/news/2024/12/31/…, которых в действительности не существовало. Самое опасное заключалось в том, что такой отчёт выглядел убедительно, и руководитель, использующий эти цифры на совещании, мог не заметить ошибку.
Первая попытка решения состояла в постпроверке: после выполнения запроса система сверяла каждое число в отчёте с текстом страниц, которые реально открывались. Если числа на страницах не было, ставилась пометка. Сначала это работало, но затем начались ложные срабатывания на служебных данных: год «2024», номер в рейтинге, строка «Прочие» в таблице — всё это воспринималось как отсутствующие данные. Разработчик провёл десять раундов доводки аудита на одной и той же цели, каждый раз закрывая найденную ошибку и добавляя новое правило, но следующий прогон приносил новую ложную тревогу, а правила становились всё более специфичными для электромобилей. Особенно проблематичным был случай с парком вместо продаж: число на странице присутствовало и было верным, но его смысл истолкован неверно, и правилами это не ловилось. Создание ловушек и фильтров улучшало только один конкретный отчёт и не работало на других.
Вторая попытка заключалась в том, чтобы каждая цифра сопровождалась дословной цитатой и адресом страницы, а система механически проверяла наличие фразы на странице и числа внутри неё. Это заметно улучшило ситуацию, но корень проблемы остался: модель читала страницы, сохраняла прочитанное в истории диалога, а затем пересказывала. При длительной работе, включающей 30–50 вызовов инструментов, история сжимается, и информация, прочитанная в начале, теряется. К моменту написания отчёта модель уже не помнила, на какой странице что было, и восстанавливала данные «по смыслу». Аудит ловил последствия, но не устранял причину.
Третья попытка стала поворотной: разработчик изучил, как аналогичная задача решается в других агентных системах. В Hermes источники регистрируются кодом при чтении, а модель только ссылается на номер; в OpenClaw отдельный короткий вызов модели извлекает записи по схеме; в Ouroboros результат принимает не автор, а отдельный проверяющий. На основе этого была создана схема «журнал фактов». На этапе планирования модель записывает, что именно нужно найти: «продажи электромобилей, Россия, 2025», «доля рынка, 2026, январь–сентябрь» — это становится критерием готовности. Каждая открытая страница автоматически получает номер (S1, S2, S3) и сохраняется в реестре с полным текстом, поэтому модель больше не обязана помнить, где что было. После чтения страницы отдельный короткий вызов модели извлекает факты по нужным показателям с дословной цитатой. Затем система проверяет каждый факт: если не указан показатель, не найден источник, отсутствует цитата, цитаты нет на странице или в цитате нет числа, факт отклоняется с указанием причины. Отклонённый факт возвращается модели, и пересказ не проходит — фраза должна стоять на странице дословно, а число — внутри неё. Отчёт пишется ссылками на факты: модель вставляет не «продажи выросли до 17,8 тыс.», а «продажи выросли до {F7}», и система сама подставляет значение и добавляет сноску с цитатой и адресом. Цифре, которой нет в журнале, просто неоткуда появиться. Расчёты также выполняет система: модель передаёт формулу из номеров фактов, например «(F12 − F7) / F7 × 100», а не считает в уме. Графики строятся из фактов по номерам. Первый прогон с журналом принял 37 фактов, большую часть нашёл извлекатель, включая данные за 2026 год, а собственную цифру модели, пересказанную «по памяти», система отклонила, так как такой фразы на странице не было.
Описанный подход решает проблему галлюцинаций цифр в автономных отчётах, но имеет ограничения. Журнал фактов требует дополнительных вызовов модели для извлечения фактов и проверки, что увеличивает время и стоимость выполнения задачи. Кроме того, система не защищена от ошибок в самих источниках: если страница содержит неверные данные, они попадут в журнал как факты. Тем не менее, для корпоративного использования, где точность цифр критична, такой подход представляется важным шагом. В отличие от простых проверок после генерации, журнал фактов устраняет саму возможность появления необоснованных чисел, делая отчёты прозрачными и проверяемыми. Разработчики KW-7 AI планируют развивать систему, добавляя новые типы показателей и улучшая извлечение фактов, чтобы сделать автономных агентов надёжными помощниками в бизнес-аналитике.