"Мем смешной, ситуация страшная"
Ситуация на меме на самом деле не страшная, но имеет место быть. Большие языковые модели набирают популярность, и компании все чаще смотрят в сторону их использования. Haulmont не стал исключением.
В этой статье я хочу рассказать вам о нашем новом продукте – Jmix AI Assistant. Пока не понятно, кто увидит эту статью, и будет ли у этих замечательных людей базовое представление о фреймворке Jmix, так что с вашего позволения начну с его краткого описания.
Что такое Jmix
Jmix – высокоуровневый фреймворк для создания корпоративных веб-приложений, который ускоряет разработку благодаря готовым компонентам и инструментам, повышая эффективность и облегчая работу разработчиков. Jmix наиболее подходит для создания приложений со сложной моделью данных и богатым пользовательским интерфейсом. Это полноценный фреймворк, который предоставляет поддержку как для создания бэкенда, так и пользовательского интерфейса вашего приложения.
Jmix основан на Spring Boot, который является де-факто стандартом для создания корпоративных Java веб-приложений. Это означает, что вы можете использовать множество сторонних библиотек и фреймворков с минимальной конфигурацией, в дополнение к функциональности, предоставляемой Jmix.
Jmix Studio, в свою очередь, – это плагин для IntelliJ IDEA, который помогает на всех этапах разработки приложения:
создание и настройка проекта,
определение модели данных,
генерация скриптов миграции базы данных,
разработка пользовательских интерфейсов в визуальном редакторе.
Он предоставляет продвинутую навигацию, автоматическое дополнение кода и инспекции, специфичные для проектов Jmix.
В целом, Jmix – полезный и богатый функциональностью продукт. Его богатство является его силой, и одновременно его слабостью: порог вхождения в технологию может оказаться довольно высоким. Одна из основных целей создания Jmix AI Assistant – снизить этот порог. Ассистент прямо сейчас может давать ответы на разнообразные вопросы, основанные на документации и других источниках, начиная с уровня «что ты такое?» и заканчивая вопросами, связанными со спецификой работы платформы и дополнений, причём на разных языках.
Откуда мы начали
В начале работы над ассистентом мы поняли, что его развитие напрямую зависит от наших пользователей, от тех, кто работает с платформой Jmix. На этом этапе нам удалось собрать порядка 300 примеров запросов к боту и ответов от него. Мы попросили наших альфа-тестеров оценить ответы по шкале от 1 до 10, и результаты обнадеживают: ответы с оценкой от 7 до 10 составляют около 80% от всех ответов. Все, что в оставшейся части, – наши самые важные данные. С их помощью мы способны понять, где наш ассистент отвечает плохо, не отвечает совсем или начинает галлюцинировать. Обработав указанные данные, а также пометив правильные ответы как справочные, мы хотим повысить качество работы нашего ассистента. Справочные ответы также планируется использовать для дообучения ассистента в будущем.
Стартовая структура
Бот и приложение для обратной связи находились в разных местах, по двум несвязанным адресам. Мы создавали наших пользователей в приложении для обратной связи статически, возможности внешней регистрации на альфа-тестирование не было. Кроме того, пользователю приходилось перемещаться между вкладками браузера и переносить запросы и ответы в приложение обратной связи вручную.
Для старта и обсуждения пути это было нормально, но для продакшена – так себе, конечно. Хотя некоторые разработчики и любят копировать и вставлять код, это явно не тот случай.
Что есть сейчас
AI Assistant интегрирован в приложение, и основная функция приложения теперь – взаимодействие с ассистентом. Мы добавили возможность внешней регистрации, и теперь будем просить наших пользователей просто задавать боту вопросы, а после получения ответа – поставить оценку. Никаких больше копи-паст (но все еще можно на Stack Overflow). Основная цель данного этапа – сбор статистики запросов и ответов, для дальнейшего тонкого тюнинга ассистента.
А что внутри?
Само приложение для работы с ассистентом написано на Jmix, и интерфейс на данный момент довольно лаконичный - можно задать вопрос и получить на него ответ, а ещё посмотреть статистику своих запросов. Более подробное описание внутреннего устройства можно найти в статье моего коллеги @RomanOdobesku по ссылке
Обязательно почитайте, если вам интересны подходы к работе с LLM.
Что будет дальше
Сначала мы сделаем наш бот очень крутым в области работы с документацией. Цель – максимально упростить вход в технологию Jmix. От простого к сложному, в виде диалога, с объяснением особенностей и помощью в понимании кода. На этой стадии доступ к ассистенту будет бесплатным, с ограничением в 100 запросов от пользователя в месяц (бот бесплатный, а токены Chat GPT, к сожалению, не совсем).
А еще дальше?
А потом рассмотрим возможности его интеграции в Студию. В планах – научить его создавать все, что может понадобиться разработчику в приложении Jmix, с помощью ввода простого запроса, например: «сделай экраны для этой сущности», «добавь слушатели для кнопки и реализуй их логику», «добавь компоненты в экран» и так далее. Это все доступно в студии прямо сейчас, но приходится нажимать на кнопки. Будем ли мы использовать голосовой ввод команд для бота? Возможно. Представьте себе функциональность, когда разработчик просто говорит в микрофон порядок действий, и сущности, экраны, записи в базе данных – все остальное просто появляется в приложении.
Поскольку студия умеет делать очень много полезных вещей с использованием собственных компонентов, такая интеграция с AI Assistant не только не выглядит невозможной, но и напрашивается сама собой. Результат обещает быть впечатляющим.
Зачем вся эта статья?
Воспринимайте эту статью как призыв к действию. Сейчас мы делаем нашего ассистента доступным для всех бесплатно. Кстати, и сама студия доступна для небольших проектов тоже бесплатно. Вы можете просто взять и начать им пользоваться, изучая платформу и ее возможности. У нас уже есть 1000+ записей взаимодействия с ассистентом, а в наших планах – многие тысячи. Таким образом, вместе с нашим сообществом мы сделаем Jmix еще круче, чем сейчас.
Присоединяйтесь, будет интересно!