Реализация кастомизируемого бота на основе ИИ-моделей

Введение

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

Вышесказанное стало заданием и мы приступили к выполнению. В качестве управляющего языковыми моделями модулями было выбрано решение Ollama. Выбор решения был продиктован конфиденциальностью хранения данных запросов и ответов, возможностью работы с языковыми модулями Lama, возможность развертывания проекта полностью локально.

Выбор Llama был продиктован открытостью проекта, его активным развитием и адекватностью генерируемых ответов.

В качестве front-end решения были использованы: чат-бот телеграмм и собственно разработанный front-end интерфейс.

Интеграция с чат-ботом телеграмм выполнялась с использованием API интерфейса Ollama и прикладного интерфейса telegramm для написания ботов.

Бот в телеграмм

Первым этапом, был разработан сервер для телеграмм бота.

Затем, Llama была дообучена, в нее был дозагружен размеченный текст. Этот текст расширяет языковую модель, вводя в нее поле уникальных запросов и ответов, которых нет в стандартной поставке модели. Эти тексты были предоставлены заказчиком и обработаны нами.

Также, мы ограничили спектр ответов от модели, чтобы она работала только в рамках тематики «учеба и наука». Теперь пользователь может получать как общие ответы, так и ответы в рамках дообучения модели.

Настраиваемый UI

Настраиваемый интерфейс представляет собой виджет для встраивания на сайт в виде iframe решения, подгружающего с центрального сервера отвечающего за back-end часть, интерфейс.

Макеты интерфейса были реалзованы в sketch, они охватывали несколько популярных разрешений экрана.

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

Интерфейс решения был реализован по реактивной технологии на архитектурном стеке:

  • Python Flask реализует серверную оснастку для обмена данными через запросы/ответы с telegramm api.
  • Python numpy добавляет механизм работы с большими данными для обучения модели.

Технологически, построенное решение работает следующим образом:

Технологический стек
Back-end
  • Python язык содержащий необходимые библиотеки и для telegram api и для взаимодействия с языковыми моделями. Использованные библиотеки: Flask, Flask-SocketIO, python-telegram-bot, Ollama, Sentence Transformers, FAISS, python-docx. Можно было бы использовать и node.js. В следующем проекте, попробуем такой стек.
Front-end
  • VUE.JS современная реактивная реализация js с использованием composition api. Позволило в проекте создать настраиваемые шаблоны, эффективно переключать цветовые схемы.
  • vanilla js современный js дал проекту чистый функциональный код в части клиент-серверного взаимодействия.
В заключении

Разработанное решение позволило широкий спектр задач:

  • Реализовать общение с пользователем с использованием семантической модели языка, что позволило создать эффект присутствия.
  • Дало возможности по быстрой кастомизации интерфейса. Что особенно полезно в экосистеме МГУ, в которой различные проекты имеют различное цветовое оформление.
  • Позволило использовать собственную закрытую экосистему и дообучить ее в соответствии с полставленными задачами в рамках лексикона МГУ.
Свяжитесь с нами, если Вам необходимо качественное выполнение поставленных Вами задач