Нельзя просто так взять и..
Нельзя просто так взять и..

Сейчас нейросети – это хайп, который, кажется, прошёл свой пик завышенных ожиданий на кривой Гартнера, и внутри компании мы периодически спорим о полезности нейросетей и об их будущем. Один из споров даже вышел за пределы компании на Форум Data&AI с темой "AI мифы, хайп и реальность". Поэтому мы, как команда вендора платформы бизнес-аналитики Luxms BI, не смогли пройти мимо, и, по запросу одного из клиентов, развили нашу платформу в части интеграции с нейросетевой моделью GigaChat. Что из этого вышло, я сейчас расскажу.

Luxms BI – это платформа для визуализации и анализа данных, которая помогает компаниям контролировать процессы, анализировать показатели эффективности и готовить интерактивные отчёты.

GigaChat – это нейросетевая модель, которая  понимает и отвечает на запросы пользователей на естественном языке. Модель способна учитывать контекст, в котором формулируется запрос, что позволяет генерировать релевантные и контекстно-зависимые ответы. В отличие от ChatGPT, GigaChat обучается на русскоязычных текстах и поэтому лучше понимает русскую речь.

Интеграция с Luxms BI

Как правило, BI-платформы используются для визуализации данных. Пользователям часто требуется предоставлять руководителям или другим сотрудникам отчеты о своей работе, демонстрируя графики и давая объяснения к ним, поскольку другой человек может быть не сильно погружен в данные, их специфику. И, на наш взгляд, снабжать графики текстовым пояснением, выводами, рекомендациями — это одно из правил хорошего тона. Но людям не всегда хочется их писать, или хочется делать это как-то легче и быстрее.

Цель интеграции Luxms BI и GigaChat в этом примере – упростить для пользователя подготовку отчетов для руководства на основе визуализированных в Luxms BI данных. И мы хотели сделать это так, чтобы ИИ реально помогал пользователям BI и был легок в использовании.

В результате, работа с GigaChat в Luxms BI будет удобной и привычной для тех, кто когда-либо использовал нейросети или даже чаты онлайн-консультантов на сайтах.

Сценарий использования:

  1. Пользователю системы бизнес-аналитики нужно предоставить письменный (текстовый) отчет руководителю;

  2. Пользователь внутри системы Luxms BI с помощью визуального интерфейса выбирает дэш (график), анализ которого ему необходим;

  3. В чате пользователь формирует запросы к GigaChat и в процессе диалога редактирует результат, итеративно создавая итоговый текст;

  4. Сформированный текст пользователь переносит в отчет для руководителя.

Но не все так просто было для нас.

Что «под капотом»

Для интеграции нам потребовалось:

  • получить токены GigaChat (тарифы), 

  • написать API, чтобы из браузера отправлялся запрос в ядро Luxms BI, там получал токен, и потом уже оттуда шло обращение к GigaChat, так как довольно небезопасно хранить токен на клиенте,

  • написать большое количество разных промтов и провести тестирование.

Самым сложным в этой задаче было – правильно писать слова запросов (промты), чтобы нейросеть выдавала необходимый результат. 

Промты, используемые для генерации ответов, задают роль GigaChat, определяют целевую аудиторию и основные акценты ответа. 

К примеру: ответ нейросети на вопрос «Кто такой снегирь?», будет отличаться в зависимости от контекста. Если мы напишем «представь, что все птицы динозавры и расскажи, кто такой снегирь», то информация и подача изменится.

Изменение ответа ИИ в зависимости от контекста
Изменение ответа ИИ в зависимости от контекста

В бизнес-аналитике тоже можно задать контекст. Например, промт может указывать, что GigaChat выступает в роли бизнес-аналитика с 10-летним опытом, ориентированного на топ-менеджмент, и должен акцентировать внимание на стратегических аспектах и ключевых метриках. В этом случае при описании данных о продажах за квартал GigaChat может автоматически сформулировать основные тенденции, выделить ключевые показатели и предложить рекомендации по их улучшению. А может выступить в роли HR-специалиста, который готовит отчет по этим же данным для своего руководителя, и тогда GigaChat будет делать другие акценты, например, на достижении KPI каждым конкретным сотрудником для премирования.

С помощью заранее подготовленных нами промтов GigaChat получает контекст для ответов, посредством которого мы формируем понимание, где он находится, что от него требуется, что с ним происходит и т.д. Они включают, в том числе, описание визуализации (название, данные, категории и т.д.), а GigaChat потом генерирует текстовые описания к представленным данным. Но не все шло гладко. 

Написание промта для нейросети похоже на обучение ребенка или новичка в чем-либо. Здесь не подойдут общие инструкции. Например:

  • Если дать ребенку задание сделать салат одной фразой «Приготовь салат», то результат будет непредсказуем и будет сильно зависеть от предыдущего опыта ребенка: он может приготовить фруктовый салат или порезать овощи, но не заправить его сметаной или майонезом, или даже попробовать его подогреть в микроволновке, если посчитает, что готовое – это горячее; 

  • Новому сотруднику в компании тоже нужны дополнительные пояснения, потому что даже обычная фраза «сделай копию этого документа» может вызвать сложности на разных этапах – он может сделать ксерокопию, может сканкопию, а может быть, «зависнет» перед МФУ, если никогда им не пользовался.

Так и нейросеть: чтобы получить от нее нужную информацию, нужно учесть множество нюансов и предоставить ей исчерпывающий контекст. Если этого не сделать, то результаты могут сильно отличаться от нужных. И много промтов в этой битве полегло :D

Пример неверного анализа и понимания данных во время тестов:

Тестирование ИИ
Тестирование ИИ

В этой интеграции GigaChat мы не дообучали нейросеть после стыковки, мы только давали ей контекст - дополнительное понимание, что нам от нее нужно именно в наших запросах. 

И смогли добиться определенных результатов. Например, при нажатии на кнопку чата, мы открываем GigaChat, он представляется и предлагает на выбор дэши для обсуждения. После выбора – предлагает 3 варианта вопросов, которые можно ему задать по этому дэшу. После каждого ответа он генерирует новые вопросы. 

Варианты вопросов от GigaChat  самому себе в рамках интеграции
Варианты вопросов от GigaChat самому себе в рамках интеграции

При этом мы сохранили возможность самому задать вопрос GigaChat или даже дать ему дополнительный контекст. 

Промты и более глубокие детали реализации пока не раскрываем - в настоящее время занимаемся обеспечением патентной защиты наших наработок.

Четкая формулировка запроса критически важна для получения корректного и полезного результата. 

Подобрать верные слова - непростая задача
Подобрать верные слова - непростая задача

Что получилось в итоге

«Если долго мучиться, то что-нибудь получится» - гласит народная мудрость. И у нас получилось следующее:

  • Пользователь может работать с языковой моделью напрямую из интерфейса Luxms BI;

  • Информация с графиков (контекст) передается в языковую модель для последующей работы с ней;

  • Пользователь может генерировать текстовые описания к визуальным элементам;

  • Пользователь может создавать оформленные фрагменты текстового отчета по данным (структура, списки и т.д.)

Несмотря на значительные достижения, текущая интеграция с GigaChat имеет несколько ограничений:

  • Потеря контекста при закрытии чата: в настоящее время контекст взаимодействия теряется после закрытия чата, что ограничивает возможность дальнейшего использования накопленных данных для улучшения взаимодействия. В перспективе мы можем обеспечить сохранение контекста, так как техническая возможность этого у GigaChat есть.

  • Необходимость проверки результатов: хотя GigaChat генерирует качественные ответы, необходима проверка результатов для подтверждения их точности и релевантности, особенно в критических бизнес-процессах. Для повышения достоверности и фактологичности можно использовать RAG (Retrieval Augmented Generation) - генерацию с дополненной выборкой. У нас есть успешный опыт использования RAG на таких задачах, как работа с технической документацией, но в этой версии приложения мы ее не использовали.

А дальше…

Поскольку интеграция Luxms BI и GigaChat в этом кейсе освободила пользователей от необходимости ручного написания текстовых комментариев, позволяя сосредоточиться на анализе и принятии решений на основе полученной информации, мы планируем улучшать работу как с контекстом, так и с результатом. У нас в планах развитие в нескольких направлениях:

  1. Описание не только отдельных элементов, но и целиком панелей визуализации. Расширение возможностей GigaChat для описания не только отдельных элементов визуализации, таких как графики и диаграммы, но и общих данных, что позволит получать более точные и специфические отчеты;

  2. Интеграция с системами Data Governance, в приоритете – интеграция с Arenadata Catalog. Внедрение интеграции с системами управления данными позволит обогатить контекст, используемый GigaChat, что повысит точность и полноту генерируемых ответов;

  3. Встраивание генерации текста в шаблоны отчетов, создание которых уже реализовано в Luxms BI. Разработка функционала для автоматического встраивания генерируемого текста в заранее подготовленные шаблоны отчетов позволит упростить процесс подготовки документов и обеспечить единообразие представления информации;

  4. Управление параметрами визуализации через GigaChat. В перспективе планируется предоставить возможность управления параметрами визуализации, такими как изменение цвета столбцов, масштабирование графиков и другие настройки, непосредственно через команды GigaChat. Это позволит пользователям более гибко и удобно настраивать визуальные представления данных, давая команды на естественном языке.

Этот проект оказался интересным и позволил по-новому взглянуть на то, как и какими словами мы ставим задачи не только нейросети, но даже коллегам или подчиненным XD

Комментарии (4)


  1. ENick
    23.10.2024 11:47

    Компания, которая специализируется в визуализации данных, приводит результаты тестирования ИИ в виде картинки отвратительного качества. Это прикол???


  1. ENick
    23.10.2024 11:47

    "RAG (генерацию с дополненной выборкой)" , может быть не отходить от классики: RAG (Retrieval Augmented Generation)


    1. iamrozanov Автор
      23.10.2024 11:47

      Добавили английский вариант в текст)


  1. alexxxdevelop
    23.10.2024 11:47

    Прекратил чтение после слов "промты не раскрываем". Я только ради этого открыл статью. Полезной информации в статье нет. Можно только похвалить вас, какие вы молодцы, работаете, начальник будет доволен