Включение и подключение модели
Настройка AI-ассистента (чат)
AI-ассистент StormBPMN — это чат, встроенный в приложение. Он умеет читать ваши диаграммы, процессы, роли и документы, отвечать на вопросы по базе знаний, создавать и редактировать BPMN-диаграммы, назначать роли и привязывать документы — всё реальными вызовами инструментов, а не выдумывая результат.
Чтобы ассистент заработал, нужно две вещи: подключить языковую модель (LLM) и включить чат. Обе настройки — в этой статье.
Что эта статья НЕ описывает
Здесь мы не разворачиваем собственную модель (vLLM, Ollama, llama.cpp и т.п.) — про развёртывание self-hosted LLM есть отдельный раздел: Self-hosted LLM. В этой статье мы подключаем Storm к уже работающему эндпоинту модели — облачному (OpenAI, Anthropic, ProxyAPI и пр.) или вашему собственному — и настраиваем поведение чата.
Два уровня настроек
Как и вся конфигурация StormBPMN (см. Конфигурация системы), настройка чата делится на:
Уровень 1 — включение на сервере: переменная окружения MCP_ENABLED и лицензия с AI-модулем (enableAiFeatures). ENV требует перезапуска приложения; AI-модуль — соответствующей лицензии.
Уровень 2 — Админ-панель (тонкая настройка): тумблер «Включение ИИ-Чата», модель, токен, температура, промпты, порог качества. Применяются на лету, без перезапуска.
Шаг 1. Включение чата
Чтобы кнопка чата появилась у пользователя, должны выполняться все условия ниже.
| Параметр | Где | Описание | По умолчанию |
|---|---|---|---|
| MCP_ENABLED | Переменная окружения (ENV) | Включает все сервисы чата на бэкенде. Без неё чат полностью выключен. | false |
| AI-модуль в лицензии | Лицензия (enableAiFeatures) | Чат, как и вся AI-функциональность, входит в AI-модуль. Без него API чата закрыто, кнопки нет. | — |
| Включение ИИ-Чата | Админ-панель → «🤖 AI-ассистент» | Тумблер показа кнопки чата. Позволяет включать/выключать чат без правки лицензии и ENV. | включён |
Итого, чтобы чат был доступен пользователю:
- На бэкенде задано
MCP_ENABLED=true(после изменения — перезапуск контейнера); - Лицензия включает AI-модуль (
enableAiFeatures); - В админ-панели включён тумблер «Включение ИИ-Чата» (по умолчанию включён);
- Пользователь авторизован.
Кнопки чата нет, хотя `MCP_ENABLED=true`?
Проверьте по порядку: (1) лицензия содержит AI-модуль (enableAiFeatures); (2) в админ-панели, раздел «🤖 AI-ассистент», включён тумблер «Включение ИИ-Чата»; (3) вы авторизованы. Тумблер — самый быстрый способ скрыть или показать чат без изменения лицензии или ENV.
Шаг 2. Где настраивается модель
Все остальные настройки — в админ-панели, в разделе «🤖 AI-ассистент». Ключевые блоки для чата:
- Включение ИИ-Чата — тумблер показа кнопки чата (см. Шаг 1);
- Основная модель — модель для чтения и обычных ответов;
- Отдельная модель для правок (write) — необязательно: можно направить ходы, меняющие данные, на более надёжную/мощную модель;
- Порог качества правок — авто-доработка диаграммы под линтер;
- Системные промпты — инструкции ассистенту (базовый + отдельный для правок).
В том же разделе ниже есть настройки «классических» AI-функций (автодополнение BPMN, анализ процессов, Assistants API) — они к чату напрямую не относятся.
Совет
Изменения в админ-панели применяются на следующем запросе в чат — перезапуск не нужен. Токен отображается как поле пароля (маскируется).
Основная модель
Минимально необходимый набор полей для работы чата.
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
| Формат API | выбор | ✅ | OPENAI или ANTHROPIC — какой «диалект» API у эндпоинта. Должен совпадать с URL и моделью. |
| Базовый URL | строка | ✅ | Адрес эндпоинта модели без /v1 — путь дописывается автоматически. |
| Токен | пароль | ✅¹ | API-ключ провайдера. Маскируется в интерфейсе. |
| Модель | строка | ✅ | Идентификатор модели (например gpt-4.1, актуальный id Claude, или имя вашей self-hosted модели). |
| Температура | число (дробное) | — | Креативность ответа, 0.0–2.0. Пусто = параметр не отправляется (нужно для reasoning-моделей). |
| Лимит токенов | число (целое) | — | Максимум токенов в ответе. Пусто — модель использует свой дефолт (для ANTHROPIC применяется 4096). |
¹ Токен может быть пустым только для self-hosted эндпоинта без авторизации.
Формат API: OPENAI или ANTHROPIC
Формат определяет, по какому контракту Storm общается с моделью:
OPENAI— OpenAI-совместимый API. Подходит для OpenAI, DeepSeek, OpenRouter, ProxyAPI, а также для большинства self-hosted решений (vLLM, Ollama, llama.cpp в режиме OpenAI-совместимости). Storm обращается по пути…/v1/chat/completions.ANTHROPIC— нативный API Anthropic (Claude). Storm обращается по пути…/v1/messages, авторизация через заголовокx-api-key.
Формат, URL и модель должны быть согласованы
Нельзя указать формат OPENAI с URL Anthropic, или модель Claude с форматом OPENAI. Несовпадение даёт ошибки 400/404 от провайдера.
Базовый URL — без /v1!
Указывайте корень эндпоинта, без /v1 и без /chat/completions. Storm сам дописывает нужный путь в зависимости от формата.
| Провайдер / случай | Базовый URL |
|---|---|
| OpenAI напрямую | https://api.openai.com |
| Anthropic напрямую | https://api.anthropic.com |
| ProxyAPI — OpenAI | https://api.proxyapi.ru/openai |
| ProxyAPI — DeepSeek / OpenRouter | https://api.proxyapi.ru/openrouter |
| ProxyAPI — Anthropic | https://api.proxyapi.ru/anthropic |
| Self-hosted (OpenAI-совместимый) | http://10.0.0.5:8000 (адрес вашего сервиса) |
Температура
Управляет «творческостью»: ниже — стабильнее и предсказуемее, выше — разнообразнее. Для рабочего ассистента рекомендуется 0.2.
Reasoning-модели и температура
Некоторые модели (o-серия OpenAI, deepseek-reasoner и подобные «думающие») не принимают параметр температуры и возвращают 400, если он передан. Для таких моделей оставьте поле температуры пустым — тогда Storm вообще не отправит этот параметр.
Лимит токенов
Максимальная длина ответа модели.
OPENAI: если поле пустое — параметр не отправляется, действует дефолт модели.ANTHROPIC: параметр обязателен; если поле пустое — Storm подставляет4096.
Увеличьте значение, если ответы обрываются на полуслове.
Примеры подключения
ProxyAPI (российский прокси к зарубежным LLM)
ProxyAPI даёт доступ к OpenAI / Anthropic / DeepSeek из РФ. Базовый URL зависит от провайдера, путь — /openai, /openrouter или /anthropic.
Важно про `/v1` и ProxyAPI
В официальной документации ProxyAPI базовый URL указан как https://api.proxyapi.ru/openai/v1 (с /v1) — так его ждёт OpenAI-клиент. В Storm /v1 писать НЕ нужно — приложение дописывает /v1/chat/completions само. То есть в поле «Базовый URL» вводите https://api.proxyapi.ru/openai (без /v1). То же правило для любого OpenAI-совместимого эндпоинта (vLLM, Ollama и т.п.).
OpenAI через ProxyAPI:
| Поле | Значение |
|---|---|
| Формат API | OPENAI |
| Базовый URL | https://api.proxyapi.ru/openai |
| Модель | gpt-4.1 (или другая OpenAI) |
| Токен | ключ из личного кабинета ProxyAPI |
DeepSeek через ProxyAPI (идёт через /openrouter):
| Поле | Значение |
|---|---|
| Формат API | OPENAI |
| Базовый URL | https://api.proxyapi.ru/openrouter |
| Модель | deepseek/deepseek-chat-v3.1 |
| Токен | ключ ProxyAPI |
Anthropic (Claude) через ProxyAPI:
| Поле | Значение |
|---|---|
| Формат API | ANTHROPIC |
| Базовый URL | https://api.proxyapi.ru/anthropic |
| Модель | актуальный id Claude (см. док. Anthropic) |
| Токен | ключ ProxyAPI |
| Лимит токенов | например 4096 |
OpenAI напрямую:
| Поле | Значение |
|---|---|
| Формат API | OPENAI |
| Базовый URL | https://api.openai.com |
| Модель | gpt-4.1 |
| Токен | ключ OpenAI (sk-...) |
Self-hosted OpenAI-совместимый эндпоинт (например, ваша модель за vLLM или Ollama):
| Поле | Значение |
|---|---|
| Формат API | OPENAI |
| Базовый URL | http://10.0.0.5:8000 (ваш адрес) |
| Модель | имя модели как её отдаёт сервис |
| Токен | ваш ключ или пусто (если без авторизации) |
Развёртывание собственной модели — отдельная тема
Как поднять vLLM/Ollama, какие модели выбрать и как их обслуживать — см. отдельный раздел Self-hosted LLM. Здесь предполагается, что у вас уже есть рабочий OpenAI-совместимый эндпоинт, и мы лишь указываем на него Storm.
Отдельная модель для правок (write) — необязательно
Ходы, которые меняют данные (создать/изменить диаграмму, назначить роль, привязать документ), сложнее обычного чтения: слабые модели чаще ошибаются. Поэтому такие ходы можно направить на отдельную, более надёжную модель (например, облачную), оставив чтение на основной.
Блок «Отдельная модель для правок (write)» содержит те же поля, что и основная модель (Формат / Базовый URL / Токен / Модель / Температура / Лимит токенов), но все они необязательны.
Как работает наследование
- Поле «Модель» — ключ активации. Если оно пустое, весь блок write игнорируется, и правки идут на основную модель.
- Если «Модель» задана — write-ходы идут на write-модель, а любое пустое поле наследуется от основной (URL, токен, формат, температура, лимит — что не задали, берётся из основной модели).
Когда это полезно: основная модель — быстрая/дешёвая (в т.ч. self-hosted) для чтения, а правки — на более «умной» облачной модели для надёжности.
Порог качества правок
| Поле | Тип | По умолчанию | Диапазон |
|---|---|---|---|
| Порог качества | число (дробное) | 8.0 | 0.0–10.0 |
После того как ассистент отредактировал диаграмму, Storm прогоняет её через собственный линтер качества (детерминированную проверку BPMN). Если оценка ниже порога, ассистент скрыто переделывает диаграмму под линтер — и только потом показывает ответ пользователю.
- Выше порог (ближе к
10) — строже требования к качеству, чаще авто-доработка. - Ниже порог — мягче, реже вмешательство.
Системные промпты
Промпты — это инструкции, которые задают поведение ассистента. Их два, и они разделены по типу хода:
| Промпт | Когда применяется | Тип |
|---|---|---|
| Базовый системный промпт | Ходы чтения / вопросы / уточнения (read) | многострочный текст |
| Системный промпт для правок (write) | Ходы, меняющие данные (write) — необязательный | многострочный текст |
Как они взаимодействуют
- На read-ходах действует базовый промпт.
- На write-ходах базовый промпт полностью заменяется на write-промпт (он сфокусирован на исполнении правок и запрете «выдуманных» результатов).
- Если write-промпт пустой — на write-ходах используется базовый.
Оба промпта редактируются прямо в админ-панели (поле «многострочный текст»). Под полем показывается счётчик символов и кнопка сохранения.
Промпты поставляются оптимизированными — менять не рекомендуется
Системные промпты тщательно настроены под поведение ассистента (off-topic-фильтр, работа с инструментами, анти-фабрикация, правила BPMN). Мы рекомендуем не менять их без необходимости — неаккуратная правка легко ломает работу чата.
Промпты могут перезаписываться при обновлении
Системные промпты обновляются вместе со StormBPMN (через миграции). Если вы изменили промпт под себя — при обновлении версии ваша правка может быть перезаписана нашей новой версией промпта. Поэтому: сохраняйте свою версию промпта отдельно (например, в своём репозитории/документе), чтобы после обновления при необходимости вернуть её вручную.
Диагностика (FAQ)
Провайдер возвращает 400 / 404
- Базовый URL с
/v1на конце — уберите/v1, Storm дописывает путь сам. - Несовпадение формата — например
OPENAI-формат с URL Anthropic. Сверьте Формат ↔ URL ↔ Модель. - Температура на reasoning-модели — оставьте поле температуры пустым (o-серия,
deepseek-reasonerи др.).
ANTHROPIC: ошибка про max_tokens
Для формата ANTHROPIC лимит токенов обязателен. Если поле пустое, Storm подставит 4096; при ошибке — задайте лимит явно (например 4096).
Ответы обрываются на середине
Увеличьте Лимит токенов в настройках модели.
Кнопки чата нет в интерфейсе
Проверьте: (1) MCP_ENABLED=true на бэкенде и контейнер перезапущен; (2) лицензия содержит AI-модуль (enableAiFeatures); (3) в админ-панели, раздел «🤖 AI-ассистент», включён тумблер «Включение ИИ-Чата»; (4) вы авторизованы.
Изменил настройки — не применилось
Настройки модели/промптов из админ-панели применяются на следующем запросе в чат, перезапуск не нужен. А вот MCP_ENABLED (ENV) требует перезапуска контейнера.