Привет, это команда Далее. На одном из проектов у нас есть терабайты данных о рекламных кампаниях, которые хранятся на десятках площадок. Это множество таблиц, агрегаций, расчетных метрик и формул.
Big Data обрабатывают аналитики и дата-инженеры: приводят в нормальный вид, следят за качеством, рассчитывают дополнительные метрики. В конце концов, все приходит в BI-систему, где менеджеры делают отчеты и визуализируют информацию на дашбордах.

Несмотря на неоспоримую пользу BI, с таким количеством разрастающихся данных все-таки остаются сложности:
Отчетов может быть несколько десятков. Руководителю, который их смотрит, неудобно навигироваться между ними.
Не каждый может получить нужные данные самостоятельно. Если речь о сложных запросах, без аналитика не обойтись. Менеджеру нужно знать SQL, подключаться к базе, формулировать запрос, запускать его. SQL вернет цифры, но сам процесс для менеджера трудный.
Нельзя нормально переиспользовать данные. Перенос информации в другую AI-систему придется делать вручную: скринить дашборды или парсить HTML. Это нерабочая история, не про автоматизацию.
Внедрение AI в BI решило сразу все три задачи. Теперь пользователь получает доступ ко всей информации в одном диалоговом окне. Может запросить трактовку показателей, сравнение и тут же все визуализировать.
Внедрение AI в BI: правильная инфраструктура = 90% успеха
Модель искусственного интеллекта важна. Еще важнее — инфраструктура, на которой она работает.

Главная ценность разработки решения именно в том:
как хранятся данные,
какие инструменты используются для их обработки,
как они подаются на выход.
Нам еще до реализации AI-агента удалось выстроить такую систему, с которой он будет работать эффективно.
В основе нашей структуры — семантический слой. Это отдельный сервис, который обогащает данные бизнес-логикой. Мы можем задать метаинформацию о датасете и о каждом его поле, в том числе описание для AI-агента. Можем формировать целые датасеты с конкретными формулами расчета.
Например, у нас есть поле CPC в таблице. Мы указываем формулу расчета и добавляем метаданные: описание и пояснения для ИИ.
Мы используем удобный механизм запроса данных, включая сложные запросы. Здесь есть разделение ответственности:
Аналитик формирует витрину, пишет сложный SQL, агрегирует данные, рассчитывает метрики. В семантическом слое он добавляет описание, документацию и дополнительные параметры для AI-агента.
После этого данные лежат в структурированном виде. Разработчик может получить их без написания SQL — достаточно передать несколько параметров. Вся сложная логика уже зафиксирована аналитиком.

Если аналитику нужно написать 12 строк SQL для расчета поля, то разработчику достаточно указать пару параметров, чтобы получить результат. И да, мы уверены, что нейросеть не должна генерить SQL. Это плохо контролируемый процесс, а вольности тут недопустимы.
Дальше появляется сам AI-агент с тулзами, через которые он взаимодействует с данными.
Внедрение AI в BI: процесс и архитектура
Трек внедрения AI в BI:
1. Data Agent
Реализовали инструменты, через которые AI получает метаданные, формирует структурированные запросы к аналитической модели и возвращает агрегированные данные.
2. Insight Agent
Обогатили семантический слой метаданными для AI-агента: дали краткое описание бизнес-логики каждой метрики и группировки.
3. Visualization Agent
Сделали API для работы AI-агента с BI-системой. Научили AI создавать графики и размещать их на интерактивном холсте в реальном времени.
4. Интеграция с аналитической платформой
Создали пользовательский интерфейс для AI. Настроили корпоративную авторизацию и обеспечили прозрачность работы AI.
5. Развертывание MCP-коннектора
Поднимаем сервер, который позволяет обращаться к агенту из внешних AI-клиентов с авторизацией и соблюдением прав доступа.
С точки зрения экономики, выбор одной модели под все задачи — невыгоден. Тяжелая модель может быть «умнее», но она дольше отвечает и дороже в эксплуатации. Ее разумно использовать там, где требуется сложная логика.
Если задача — просто определить тип запроса пользователя, то решать ее лучше через более легковесную модель, которая быстрее и дешевле справится с классификацией.
Наша архитектура построена так, чтобы на разных этапах использовались наиболее подходящие модели.

Data Agent работает с кубом и семантическим слоем.
Может:
Получить информацию о датасете: что это за набор данных, какому клиенту он принадлежит. Это важно для разграничения доступа, чтобы один клиент не мог запросить данные другого.
Запросить структуру датасета: какие там есть измерения и метрики. Например, клики, план-факт, разные статистические показатели по рекламным кампаниям. Он видит, какие поля доступны, и на основе этого принимает решение, использовать этот датасет или выбрать другой.
Уточнять значения измерений. Пользователи часто упрощают названия, а агент проверяет допустимые значения, находит корректное наименование и делает правильный запрос.
Кроме того, Data Agent выполняет запросы с фильтрацией по строкам, времени и другим параметрам.
Insight Agent отвечает за интерпретацию данных.
В семантическом слое хранится метаинформация по каждому полю — в том числе описание для AI. Если пользователь просит не просто цифры, а объяснение, этот агент может интерпретировать показатели.
Например, AI может сказать: «CPC у вас ниже среднего. Это означает, что кампания работает эффективно». Или наоборот — объяснить, что показатель ухудшился и с чем это связано. Он работает уже с полученными данными и добавляет контекст.
Visualization Agent нужен для визуализации.
Он интегрирован непосредственно с BI-системой, создает и размещает виджеты прямо на интерактивном холсте. Здесь же пользователь может доработать сгенерированный график или таблицу.
Допустим, менеджер запросил динамику количества показов и кликов по месяцам. Система получила данные, интерпретировала их, а дальше пользователь может сказать: «Визуализируй это на дашборде». И агент создаст нужный виджет.
Таким образом, мы разделяем ответственность: один AI-агент работает с кубом и данными, другой — с интерпретацией, третий — с визуализацией.
Какие инструменты писать, чтобы это работало
dataset_meta — список полей с описаниями;
dimension_values — поиск группируемых значений;
get_date — запрос актуальной даты;
dataset_query — формирование JSON-запроса в семантический слой данных;
методы для выбора и построения графиков, расчета позиции спавна виджетов и прочего визуального.
Пример того, как это выглядит:
import { createMcpHandler } from '@vercel/mcp-handler' import { z } from 'zod' const handler = createMcpHandler( (server) => { server.tool( 'dataset_query', 'Get data with Cube query', { measures: z.array(z.string()), dimensions: z.optional( z.array(z.string()) ), filters: z.optional( z.array( z.object({ member: z.string(), operator: z.string(), values: z.array(z.string()), }) ) ), // ... }) })
Внедрение AI в BI: что надо учесть
Модель — это по сути черный ящик. Если задать ей один и тот же вопрос сейчас и через пару часов с теми же вводными, ответ может отличаться. Это оборачивается челленджами в тестировании и контроле качества.
В классической разработке есть детерминированный результат, а здесь — вероятностный. У нас был набор сценариев: несколько типов запросов, реальные вопросы и ожидаемые ответы. Мы смотрели, насколько корректно агент формирует запрос и выбирает инструменты, а также соответствует ли ответ ожиданиям.
За AI всегда нужно проверять. В неудачных дублях скринкаста он дергал функцию генерации конфига виджета дважды, потому что первое изделие не прошло сертификацию.
Мультитенантность и RLS тоже не стоит доверять нейросети, для этого потребуются низкоуровневые методы.
Тестировали AI-агента на демо-датасетах с моделями Qwen и OpenAI. Сейчас продукт доступен в формате A/B-тестирования ограниченной группе пользователей внутри компании клиента.
MCP-коннектор для интеграции с другими агентами
MCP — это узел в нашей системе, который позволяет взаимодействовать с другими AI-системами. Мы публикуем через него инструменты нашего AI-агента. Любой клиент при наличии авторизации может подключиться к ним и использовать либо напрямую, либо через своего AI-агента.
Например, если у какого-то подразделения есть собственная модель, то ее можно подключить к нашему MCP-серверу. В этом случае модель будет работать с нашими инструментами и брать нужную информацию в соответствии с политиками безопасности внутри приложения.
Теоретически можно подключиться даже из внешнего клиента — условно, из GigaChat или Алиса AI — указав токен авторизации и получив доступ. Но это скорее возможность архитектуры, чем основной сценарий использования.
Главное — MCP позволяет настраивать взаимодействие с любой корпоративной моделью в соответствии с политикой безопасности.
Что имеем на данный момент
Система постепенно дорабатывается. Основной фокус сейчас — усиление безопасности. Мы дополнительно укрепляем защиту, учитывая обновления технологий и новые требования.
Со стороны функциональности кардинальных изменений нет, базовый набор возможностей уже реализован.
AI-агент объединяет разные отчеты и витрины в одной точке входа — человек задает вопрос и получает ответ.
Не нужно привлекать аналитика на каждый кастомный запрос менеджера.
Есть возможность интеграции с другими AI-агентами — наше решение может стать частью более широкой агентской сети.
Параллельно развивается рыночный продукт — Subquery. В нем планируем более расширенную версию AI-агента с дополнительным функционалом. Кстати, вы можете оставить в комментариях сценарии, которые хотели бы в нем видеть.
А если вам интересно, как мы разрабатывали саму BI-систему с динамичными дашбордами и реактивностью, то велком в статью Дмитрия Дина:
Как приручить сигналы или BI-система на графовой реактивности за 2 месяца
Комментарии (4)

koch
25.06.2026 11:56Спасибо, что поделились. Интересно подробнее узнать про создание/организацию/хранение семантического слоя, evals, (не)детерминированность ответов и приземление пользовательских вопросов.

menz1
25.06.2026 11:56Эммм, а какая это BI система? И почему она не умеет работать в графическом интерфейсе уже на уровне витрин или моделировать витрины, а требует сиквела для доступа к данным и написания кода для создания визуализации?
На гифке вроде как что-то типа пайвота показано с конструктором.

Pulso
25.06.2026 11:56Ощущение, что практически все в данном кейсе классическая автоматизация. А AI используется для фронта перед клиентом в виде примитивной MCP, что бы продать ему кейс который якобы уверенно решает бизнес-задачу с AI.
eignatiev
Интересный кейс, особенно про вызовы тестирования недетерминированных моделей. Сам столкнулся с этим на чат-агенте для малого бизнеса — Claude Haiku отвечал стабильно по смыслу, но формулировки плавали, и из-за этого вылезали внезапные косяки (то про сроки не то скажет, то предложит встречу клиенту слишком рано). Помогло неочевидное
решение: вместо чёрного списка запретов положил в SYSTEM-промпт FAQ-эталоны — 10-15 пар «типичный вопрос → эталонный ответ». Качество и сдержанность резко выросли, потому что модель тиражирует готовый паттерн вместо того чтобы обходить запрет. У вас архитектура сложнее, но интересно: как тестируете консистентность ответов на одинаковых вопросах? У Qwen/OpenAI плавающие формулировки больно бьют по UX в BI или вы нормализуете на выходе?