
Финансовый отчёт — это не просто текст: его сила в проверяемых цифрах и понятных графиках со ссылками на источники. LLM хороши в написании текстов, но склонны к галлюцинациям. Команда FinSight решила эту проблему с помощью отдельной группы агентов, отвечающих за сбор данных и проверку расчетов, а также привлечением специализированных визуальных языковых моделей для итоговой проверки оформления графиков и таблиц. В итоге у читателя не возникает желания или необходимости перепроверять каждую цифру.

Какого результата мы ждем на выходе?
Структурированный отчет, в котором каждый раздел представлен комбинированным блоком: связный, но краткий текст с визуализацией, подкрепленный ссылками на источники. Текст должен передавать мысль автора, визуализация — подтверждать эту мысль данными, а ссылки указывать, где эти данные взяты. На выходе должен получиться такой отчет, читать который будет удобно и полезно, а главное — все, сказанное в нем, должно быть четко подтверждено данными и ссылками на источники. На словах все звучит просто, но на практике не так-то легко автоматизировать процесс, который на входе имеет набор разнородных источников, код для работы с данными, и на выходе выдает длинный текст без галлюцинаций, с подробным разъяснением использованных источников и ссылок на них.
Как все устроено внутри?
В основе используется фреймворк Code Agent with Variable Memory (CAVM) и общее пространство переменных, в котором одновременно доступны данные, инструменты и агенты. Каждый шаг CAVM — это рассуждение и написание кода: она генерирует код, исполняет его, обновляет переменные и историю. За счет этого CAVM не теряет нить происходящего даже при большом числе разношерстных задач.

Конвейер состоит из трёх этапов
Сбор данных реализован как отдельный этап конвейера: один агент осуществляет многошаговый веб-поиск с проверкой источников, второй собирает данные из финансовых баз, API или парсит веб-страницы. Важно, что если на этапе анализа каких-то данных не хватает, их целенаправленный сбор может быть запущен повторно, система не боится возвращаться за недостающими данными.
На этапе анализа отдельный агент вызывает инструменты, использует код для очистки и агрегации данных, и разбивает результат на компактные цепочки анализа (CoA). Визуализации доводятся до финального состояния в несколько итераций, где на каждом шаге визуально-языковая модель критиковала визуализацию, а код для построения графика автоматически исправлялся.
Итоговый текст пишется в два этапа. Сначала формируются компактные цепочки анализа с явными метками для дальнейших ссылок и визуализаций. Далее строится план и по разделам пишется длинный связный текст с явными ссылками на ранее упомянутые идентификаторы источников и визуализаций. Это сильно сдерживает галлюцинации и помогает держать ссылки и визуализации строго в тех местах длинного текста, где это нужно.


Почему это работает?
Потому что все действия каждого из нескольких агентов, работающих над отчетом — от загрузки квартальных таблиц конкретной компании до построения графиков — выражены кодом в общем пространстве переменных. Это дает большое пространство для маневра, но заставляет агентов говорить на одном языке и избавляет от разрывов между поиском, анализом и финальным текстом.. Двухэтапное написание нарратива, в свою очередь, помогает слить разрозненные куски цепочек анализа в общий рассказ, не потеряв при этом проверяемых ссылок на источники.
Как авторы проверяли, что все работает, как надо?
На выходе требовалось оценить сразу несколько аспектов отчета по девяти метрикам, сгруппированным в три категории. Во-первых, фактологию и связанность текста с источниками, а также согласованность текста и изображений. Во-вторых, полезность получившегося нарратива для инвестора, в разрезе насыщенности проверяемыми фактами, покрытия ключевых тем и глубины анализа. В-третьих, качество самого нарратива с точки зрения логики структуры, профессионализма используемого языка, и качество представленных визуализаций. Эталон отчета и прошедшие оценку кандидатные варианты подавались модели-оценщику Gemini-2.5-Pro, которая выдавала баллы и краткое обоснование по каждой из девяти метрик. Отдельно была интересна с практической точки зрения огранка длинных выходящих текстов — как финальная длина соотносится со всеми девятью метриками качества.
Спойлер: длиннее не значит лучше, баллы росли только в случае, когда длинный нарратив опирался на качественную структуру и ссылки на проверяемые источники.

Что в итоге на выходе?
FinSight применялся для составления отчетов в отдельных индустриях и компаниях — от коммунальной энергетики и термояда до логистики, образования и отдельных компаний внутри. В фокусе системы мультиагентный фреймворк CAVM, данными для анализов которого служат разнообразные внешние источники.
Отдельно стоит отметить итеративный подход к построению визуализаций, и двухэтапное написание длинного текста. Все вместе позволяет получить на выходе отчет с визуализациями, где каждая сказанная фраза аккуратно подкреплена ссылкой на проверяемый внешний факт, визуализация уместна и понятна, а структура позволяет за короткое время дойти от данных до выводов.
По экспериментам система заметно выигрывает у базовых вариантов по фактической корректности, проверяемости сказанного, а также глубине и полезности финального отчета. А сама система является отличным примером того, как использовать разнородные внешние данные, чтобы добиться нужного результата от продвинутых мультиагентных фреймворков.
Главное, чтобы во входном сценарии таких разнородных данных и задач хватало. Например, как в написании осмысленного финансового отчета, где нужен не только красивый текст, но и нечто большее.
***
Если вам интересна тема ИИ, подписывайтесь на мой Telegram-канал — там я регулярно делюсь инсайтами по внедрению ИИ в бизнес, запуску ИИ-стартапов и объясняю, как работают все эти ИИ-чудеса.