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 следуйте инструкциям в разделе Дополнения.

Для ручной установки выполните следующие шаги.

  1. Настройте доступ к премиум-репозиторию.

    • Добавьте премиум-репозиторий в свой 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.

  2. Добавьте зависимость в build.gradle:

    implementation 'io.jmix.aichat:jmix-aichat-flowui-starter'

Компоненты передают ответы в потоковом режиме через соединение server push, поэтому в приложении должен быть включен push. Добавьте аннотацию @Push к классу приложения, если ее там еще нет:

@Push
@SpringBootApplication
public class AiChatEx1Application implements AppShellConfigurator {