AI Chat
Начиная с Jmix 3.1
Дополнение AI Chat предоставляет компоненты Flow UI для создания интерфейсов AI-чата в приложении Jmix: готовый чат, части, из которых он собран, и блок кода, который отображает исходный код как в диалоге, так и вне его.
Дополнение предоставляет пользовательский интерфейс, но не модель. Ответы формирует LLMProvider, который реализуется в приложении, поэтому компоненты работают с любым бэкендом: Spring AI, SDK поставщика модели или вашим собственным сервисом.
Основные возможности:
-
Готовый чат: aiChat объединяет aiMessageList и aiMessageInput с пустым состоянием поверх провайдера с потоковой передачей. Чтобы получить работающий чат, достаточно одного элемента и провайдера.
-
Потоковая передача ответов: токены появляются по мере поступления, с индикатором размышления и необязательной лентой, которая в реальном времени показывает, что делает ассистент.
-
Сообщения в формате Markdown: сообщения ассистента отображают Markdown, включая блоки кода, которые становятся компонентами aiCodeBlock.
-
Вложения: файлы прикрепляются перетаскиванием или через диалог выбора файла, сохраняются в файловом хранилище Jmix и остаются доступными для скачивания из истории диалога.
-
Связывание с данными и сохранение: свяжите чат с контейнером коллекции вашей собственной сущности сообщения и сохраняйте диалог.
-
Действия для сообщений: обычные действия Jmix для каждой роли сообщения, со встроенными действиями копирования и повторной генерации.
-
Самостоятельные компоненты: список сообщений, поле ввода сообщений и блок кода можно использовать отдельно, вне чата.
-
Собственный чат: приложение может полностью управлять списком сообщений: добавлять сообщение, передавать в него ответ в потоковом режиме, сообщать о ходе выполнения и ошибках. Если готовый чат не подходит, можно собрать чат из отдельных частей.
|
Дополнение является экспериментальным. Его API может измениться в будущих релизах, а Studio и IntelliJ IDEA отмечают вызовы его классов предупреждением experimental API. Это предупреждение ожидаемо и появляется и для корректного кода. |
Связь с дополнением AI Tools
Дополнение AI Tools решает другую задачу. Оно поставляет готового ассистента: UI чата с историей диалогов, реестр инструментов, которые может вызывать ассистент, и предопределенные инструменты, которые анализируют данные приложения и выполняют запросы к ним. Вы устанавливаете его и настраиваете модель.
Дополнение AI Chat поставляет строительные блоки. В нем нет ассистента, реестра инструментов и механизма сохранения данных. Вы сами решаете, что такое сообщение, где оно хранится и что на него отвечает.
Выбирайте AI Tools, если вам нужен ассистент для работы с данными вашего приложения. Выбирайте AI Chat, если диалог является частью вашей собственной предметной области или если вам нужен особый интерфейс чата.
Установка
|
Для этого дополнения требуется Enterprise подписка. Если у вас нет подписки, ознакомьтесь с разделом Пробная Enterprise подписка, чтобы получить пробную версию. |
Для автоматической установки через Jmix Marketplace следуйте инструкциям в разделе Дополнения.
Для ручной установки выполните следующие шаги.
-
Настройте доступ к премиум-репозиторию.
-
Добавьте премиум-репозиторий в свой
build.gradle:repositories { // ... maven { url = 'https://nexus.jmix.io/repository/premium' credentials { username = rootProject['premiumRepoUser'] password = rootProject['premiumRepoPass'] } } } -
Добавьте учетные данные премиум-репозитория в
~/.gradle/gradle.properties:premiumRepoUser=123456123456 premiumRepoPass=abcdefabcdefПолучите учетные данные репозитория из вашего лицензионного ключа: первая часть ключа перед тире – это имя пользователя репозитория, часть после тире – пароль. Например, если ваш ключ выглядит как
123456-abcdef abcdef, имя пользователя –123456, а пароль –abcdef abcdef.
-
-
Добавьте зависимость в
build.gradle:implementation 'io.jmix.aichat:jmix-aichat-flowui-starter'
Компоненты передают ответы в потоковом режиме через соединение server push, поэтому в приложении должен быть включен push. Добавьте аннотацию @Push к классу приложения, если ее там еще нет:
@Push
@SpringBootApplication
public class AiChatEx1Application implements AppShellConfigurator {