AI-ассистент
|
Эта функция доступна только в редакции OpenBPM Control Enterprise начиная с версии 2.0.0. |
AI-ассистент помогает операторам разобраться, что происходит в процессах, и решить, что делать дальше. Он умеет делать сводку по открытым инцидентам, объяснять, как устроен развёрнутый процесс или DMN-решение, выяснять, почему экземпляр процесса «застрял», и отвечать на произвольные вопросы о данных, доступных в OpenBPM Control.
Ассистент только читает данные. Все действия — повтор задания, завершение задачи, прерывание экземпляра процесса — по-прежнему выполняются стандартными экранами и кнопками OpenBPM Control.
Предварительные условия
-
Лицензия. Лицензия OpenBPM Control Enterprise должна включать функцию
AI_ASSISTANT. Если функция не лицензирована, кнопка AI в заголовке приложения и пункт меню AI-ассистент отображаются с иконкой замка и недоступны. -
Права доступа. Пользователю должна быть назначена ресурсная роль
AI Assistant User(ai-assistant-user). Она открывает доступ к боковой панели ассистента, странице со списком разговоров и собственным разговорам пользователя. Для пользователей без этой роли кнопка AI не отображается. Какие данные ассистент может прочитать, определяется остальными ролями пользователя, см. Доступ к данным и безопасность и Управление доступом. -
Подключение к языковой модели. Для ответов ассистенту нужен доступ к LLM, см. Настройка.
Открытие ассистента
Ассистент доступен из двух мест:
-
Кнопка AI в заголовке приложения открывает боковую панель справа. Панель остаётся открытой при переходе между экранами, поэтому разговор можно вести рядом с данными, с которыми вы работаете.
-
Пункт меню AI-ассистент открывает отдельную страницу со всеми вашими разговорами. Здесь их можно искать, переименовывать, продолжать и удалять.
В заголовке боковой панели расположены три кнопки:
-
Все разговоры (иконка часов) — открывает страницу со всеми разговорами;
-
Новый чат (иконка плюса) — начинает новый разговор;
-
Закрыть (крестик) — закрывает панель.
Ширину панели можно изменить, перетащив её левый край.
Настройка
Ассистент подключается к большой языковой модели через API, совместимый с OpenAI. Подключение задаётся стандартными свойствами Spring AI — так же, как любые другие свойства приложения.
| Свойство | Переменная окружения | Назначение |
|---|---|---|
|
|
API-ключ провайдера LLM. Обязателен: без него ассистент не отвечает. |
|
|
Базовый URL эндпоинта, совместимого с OpenAI. Необязательно; указывается без суффикса |
|
|
Имя модели в том виде, в котором его ожидает провайдер. Необязательно. |
Portable-дистрибутив
Раскомментируйте и заполните блок AI Assistant в файле config/application.properties рядом с JAR:
spring.ai.openai.api-key=<ключ>
spring.ai.openai.base-url=https://api.openai.com
spring.ai.openai.chat.model=gpt-4o-mini
Файл читается автоматически при запуске через run.sh / run.bat; после изменения перезапустите приложение.
Docker
Передайте настройки контейнеру переменными окружения:
services:
openbpm-control:
image: <образ OpenBPM Control Enterprise>
environment:
SPRING_AI_OPENAI_API_KEY: "<ключ>"
SPRING_AI_OPENAI_BASE_URL: "https://api.openai.com"
SPRING_AI_OPENAI_CHAT_MODEL: "gpt-4o-mini"
Ключ удобнее хранить не в docker-compose.yml, а в файле .env рядом с ним или в secret-хранилище оркестратора.
Локальная модель
Можно использовать любого провайдера с API, совместимым с OpenAI, в том числе модели, развёрнутые локально (например, через Ollama). В этом случае весь цикл работы ассистента, включая саму модель, остаётся внутри периметра вашей сети:
spring.ai.openai.base-url=http://localhost:11434
spring.ai.openai.chat.model=qwen2.5:14b
|
Минимальная локальная модель, с которой ассистент работает корректно, — |
Приложение запускается и работает без этих настроек. Интерфейс ассистента при этом остаётся доступным, но в боковой панели и на странице разговоров отображается информационное сообщение: «Ассистент не настроен: требуется конфигурация подключения к ИИ. Задайте spring.ai.openai.api-key, spring.ai.openai.base-url и spring.ai.openai.chat.model и перезапустите приложение.» со ссылкой Документация по настройке.
|
После изменения настроек приложение нужно перезапустить. |
Начало разговора
Новый пустой разговор открывается со стартовым экраном «Чем помочь?»: полем ввода и предлагаемыми шаблонами для самых частых вопросов.
-
Что случилось? Сводка инцидентов — обзор открытых инцидентов, сгруппированных по типам и процессам, с рекомендациями.
-
Сводка по всем процессам — развёрнутые процессы, их версии, число активных экземпляров и проблемные места.
-
Разобрать текущий объект — отображается, когда на открытом экране показан один объект (например, экземпляр процесса, инцидент, определение процесса или пользовательская задача). Ассистент анализирует именно этот объект: ставит диагноз, описывает статус и предлагает, что делать.
Можно также просто ввести свой вопрос в поле «Спросите что угодно…».
Контекст экрана
Ассистент знает, на что вы смотрите. Под полем ввода сообщения отображается метка с объектом текущего экрана — например, с бизнес-ключом экземпляра процесса.
Контекст передаётся для экранов со следующими объектами:
-
экземпляр процесса;
-
инцидент;
-
определение процесса;
-
пользовательская задача;
-
определение решения (DMN);
-
экземпляр решения.
Когда вы пишете «текущий процесс», «этот экземпляр» и т. п., ассистент понимает, что речь идёт об объекте на вашем экране, и сам загружает его данные. На экранах без единственного объекта (списки, дашборд) на метке отображается Экран без объекта, и ассистент уточняет, какой объект вы имеете в виду, вместо того чтобы угадывать.
Ассистенту передаётся только ссылка на объект (его тип и идентификатор). Сами данные загружаются через те же сервисы с контролем доступа, что используются экранами OpenBPM Control.
Что умеет ассистент
-
Диагностика застрявшего экземпляра процесса. Ассистент определяет, где сейчас находится экземпляр и почему он ожидает: задание с ошибкой, внешняя задача без обработчика, неназначенная или просроченная пользовательская задача, таймер, срок которого ещё не наступил, приостановленный экземпляр. После этого он рекомендует следующий шаг. Если ожидание — нормальное поведение процесса (например, таймер сработает завтра), ассистент прямо говорит об этом и не предлагает вмешиваться.
-
Анализ инцидентов. Сводка открытых инцидентов по типам и процессам, анализ причины конкретного инцидента (с учётом стек-трейса упавшего задания) и рекомендация действия из инструментов OpenBPM Control: повторить задание, изменить переменную, прервать экземпляр или передать проблему разработчикам.
-
Объяснение процесса. Пошаговое объяснение развёрнутого процесса по его BPMN-модели: что он делает, кто в нём участвует, что происходит по таймерам, ошибкам и сообщениям.
-
Объяснение DMN-решений. Описание решения по его DMN-модели (политика срабатывания, входы и выходы, правила и выражения FEEL), история вычислений и разбор конкретного вычисления: какие правила сработали и почему решение вернуло такой результат.
-
Пользовательские задачи. Открытые и просроченные задачи, неназначенные задачи и задачи конкретного исполнителя.
-
Ответы со ссылками. Объекты, упомянутые в ответах, — экземпляры процессов, инциденты, определения, пользовательские задачи — отображаются как ссылки на соответствующие экраны OpenBPM Control.
Разговоры
Разговоры сохраняются. Боковая панель продолжает последний разговор, а кнопка Новый чат начинает новый. На странице AI-ассистент отображаются все разговоры текущего пользователя.
Доступ к данным и безопасность
-
Ассистент работает строго через сервисный слой OpenBPM Control: он видит только те данные, которые разрешено видеть текущему пользователю, и только на выбранном BPM-движке.
-
Все инструменты ассистента работают только на чтение. Ассистент рекомендует действия, но никогда их не выполняет.
-
Чувствительные сущности приложения — пользователи, подключения к BPM-движкам, данные лицензии — исключены из доступа ассистента.
-
Без API-ключа данные не покидают приложение: ассистент просто сообщает, что он не настроен.
-
Если в качестве провайдера используется внешний облачный сервис, данные, загруженные для ответа на вопрос, передаются этому провайдеру. Чтобы данные не покидали вашу сеть, используйте локально развёрнутую модель.