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-ассистент открывает отдельную страницу со всеми вашими разговорами. Здесь их можно искать, переименовывать, продолжать и удалять.

ai assistant 1
ai assistant 2

В заголовке боковой панели расположены три кнопки:

  • Все разговоры (иконка часов) — открывает страницу со всеми разговорами;

  • Новый чат (иконка плюса) — начинает новый разговор;

  • Закрыть (крестик) — закрывает панель.

Ширину панели можно изменить, перетащив её левый край.

Настройка

Ассистент подключается к большой языковой модели через API, совместимый с OpenAI. Подключение задаётся стандартными свойствами Spring AI — так же, как любые другие свойства приложения.

Свойство Переменная окружения Назначение

spring.ai.openai.api-key

SPRING_AI_OPENAI_API_KEY

API-ключ провайдера LLM. Обязателен: без него ассистент не отвечает.

spring.ai.openai.base-url

SPRING_AI_OPENAI_BASE_URL

Базовый URL эндпоинта, совместимого с OpenAI. Необязательно; указывается без суффикса /v1.

spring.ai.openai.chat.model

SPRING_AI_OPENAI_CHAT_MODEL

Имя модели в том виде, в котором его ожидает провайдер. Необязательно.

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

Минимальная локальная модель, с которой ассистент работает корректно, — qwen2.5:14b. Ассистент опирается на вызов инструментов (tool calling) и работу с длинным контекстом экрана; модели меньшего размера не справляются с этим стабильно — отвечают без обращения к данным или прерывают разговор. Более крупные модели улучшают качество ответов.

Приложение запускается и работает без этих настроек. Интерфейс ассистента при этом остаётся доступным, но в боковой панели и на странице разговоров отображается информационное сообщение: «Ассистент не настроен: требуется конфигурация подключения к ИИ. Задайте spring.ai.openai.api-key, spring.ai.openai.base-url и spring.ai.openai.chat.model и перезапустите приложение.» со ссылкой Документация по настройке.

ai assistant 3

После изменения настроек приложение нужно перезапустить.

Начало разговора

Новый пустой разговор открывается со стартовым экраном «Чем помочь?»: полем ввода и предлагаемыми шаблонами для самых частых вопросов.

ai assistant 4
  • Что случилось? Сводка инцидентов — обзор открытых инцидентов, сгруппированных по типам и процессам, с рекомендациями.

  • Сводка по всем процессам — развёрнутые процессы, их версии, число активных экземпляров и проблемные места.

  • Разобрать текущий объект — отображается, когда на открытом экране показан один объект (например, экземпляр процесса, инцидент, определение процесса или пользовательская задача). Ассистент анализирует именно этот объект: ставит диагноз, описывает статус и предлагает, что делать.

Можно также просто ввести свой вопрос в поле «Спросите что угодно…​».

Контекст экрана

Ассистент знает, на что вы смотрите. Под полем ввода сообщения отображается метка с объектом текущего экрана — например, с бизнес-ключом экземпляра процесса.

ai assistant 5

Контекст передаётся для экранов со следующими объектами:

  • экземпляр процесса;

  • инцидент;

  • определение процесса;

  • пользовательская задача;

  • определение решения (DMN);

  • экземпляр решения.

Когда вы пишете «текущий процесс», «этот экземпляр» и т. п., ассистент понимает, что речь идёт об объекте на вашем экране, и сам загружает его данные. На экранах без единственного объекта (списки, дашборд) на метке отображается Экран без объекта, и ассистент уточняет, какой объект вы имеете в виду, вместо того чтобы угадывать.

Ассистенту передаётся только ссылка на объект (его тип и идентификатор). Сами данные загружаются через те же сервисы с контролем доступа, что используются экранами OpenBPM Control.

Что умеет ассистент

  • Диагностика застрявшего экземпляра процесса. Ассистент определяет, где сейчас находится экземпляр и почему он ожидает: задание с ошибкой, внешняя задача без обработчика, неназначенная или просроченная пользовательская задача, таймер, срок которого ещё не наступил, приостановленный экземпляр. После этого он рекомендует следующий шаг. Если ожидание — нормальное поведение процесса (например, таймер сработает завтра), ассистент прямо говорит об этом и не предлагает вмешиваться.

    ai assistant 6
    ai assistant 7
  • Анализ инцидентов. Сводка открытых инцидентов по типам и процессам, анализ причины конкретного инцидента (с учётом стек-трейса упавшего задания) и рекомендация действия из инструментов OpenBPM Control: повторить задание, изменить переменную, прервать экземпляр или передать проблему разработчикам.

  • Объяснение процесса. Пошаговое объяснение развёрнутого процесса по его BPMN-модели: что он делает, кто в нём участвует, что происходит по таймерам, ошибкам и сообщениям.

  • Объяснение DMN-решений. Описание решения по его DMN-модели (политика срабатывания, входы и выходы, правила и выражения FEEL), история вычислений и разбор конкретного вычисления: какие правила сработали и почему решение вернуло такой результат.

  • Пользовательские задачи. Открытые и просроченные задачи, неназначенные задачи и задачи конкретного исполнителя.

  • Ответы со ссылками. Объекты, упомянутые в ответах, — экземпляры процессов, инциденты, определения, пользовательские задачи — отображаются как ссылки на соответствующие экраны OpenBPM Control.

Разговоры

Разговоры сохраняются. Боковая панель продолжает последний разговор, а кнопка Новый чат начинает новый. На странице AI-ассистент отображаются все разговоры текущего пользователя.

ai assistant 8
ai assistant 9

Доступ к данным и безопасность

  • Ассистент работает строго через сервисный слой OpenBPM Control: он видит только те данные, которые разрешено видеть текущему пользователю, и только на выбранном BPM-движке.

  • Все инструменты ассистента работают только на чтение. Ассистент рекомендует действия, но никогда их не выполняет.

  • Чувствительные сущности приложения — пользователи, подключения к BPM-движкам, данные лицензии — исключены из доступа ассистента.

  • Без API-ключа данные не покидают приложение: ассистент просто сообщает, что он не настроен.

  • Если в качестве провайдера используется внешний облачный сервис, данные, загруженные для ответа на вопрос, передаются этому провайдеру. Чтобы данные не покидали вашу сеть, используйте локально развёрнутую модель.