Установка и запуск агента LLM OpenAILTS
Агент LLM OpenAI — это дополнительный модуль системы Proceset, предназначенный для подключения внешних LLM-сервисов, совместимых с OpenAI API. Агент — опциональный компонент. Его устанавливают, если в системе Proceset необходимо выполнять запросы к внешним или внутренним LLM-сервисам: OpenAI, DeepSeek, Qwen, LLaMA через совместимых провайдеров или другим сервисам с OpenAI-совместимым API.
После запуска агента LLM OpenAI в блоках работы с нейросетью можно выбрать модели, указанные в конфигурации агента.
Proceset и агент LLM OpenAI взаимодействуют по gRPC. Агент обращается к внешнему или внутреннему LLM-сервису по адресу API, указанному в переменной окружения LLM_OPENAI_URL. Дистрибутив агента LLM OpenAI — Docker-образ. GPU на сервере с агентом LLM OpenAI не требуется: агент только передает запросы во внешний или внутренний OpenAI-совместимый сервис.
Установка агента LLM OpenAI
Подготовка хостов и параметров конфигурации
Перед запуском агента LLM OpenAI определите сетевые адреса и параметры конфигурации.
Для примера рассмотрим следующие условные имена хостов, которые можно заменить на актуальные в вашей системе:
proceset.domain.local— адрес хоста, на котором располагается система Procesetagent.domain.local— адрес хоста, на котором располагается агент LLM OpenAIhttps://api.openai.com/v1/— пример URL API внешнего LLM-сервиса
Если LLM-сервис расположен внутри инфраструктурного контура, доступ в интернет не требуется. Если используется внешний сервис, например OpenAI или DeepSeek, серверу с агентом LLM OpenAI необходим сетевой доступ к URL API этого сервиса.
Во время запуска агента LLM OpenAI задайте переменные окружения, определяющие его параметры работы.
| Переменная окружения | Обязательна | Описание |
|---|---|---|
CL_NAME | Да | Уникальное имя текущей ноды |
CL_PORT | Нет | Порт, используемый для входящих соединений gRPC. По умолчанию используется порт 7000 |
CL_REMOTE_NODES | Да | Полные адреса, включая порт, нод, с которыми происходит взаимодействие по gRPC. Несколько адресов указываются через разделитель ;. Для агента указывается адрес сервера Proceset, для сервера Proceset — адрес агента LLM OpenAI |
LLM_OPENAI_URL | Да | URL API LLM-сервиса. Укажите URL OpenAI-совместимого API |
LLM_OPENAI_TOKEN | Да | Токен доступа к LLM-сервису |
LLM_OPENAI_MODELS | Да | Список моделей, которые будут доступны в Proceset. Поддерживаются списочный формат и JSON-массив |
JVM_MAX_MEMORY | Нет | Максимальный объем памяти JVM, то есть значение параметра -Xmx. По умолчанию используется 4G |
Для публичных LLM-сервисов, например OpenAI, укажите действующий токен доступа. Если подключаемый внутренний OpenAI-совместимый сервис не требует авторизации по токену, переменную LLM_OPENAI_TOKEN все равно необходимо передать. В этом случае можно указать значение-заглушку: -e LLM_OPENAI_TOKEN='EXAMPLE'
Настройка URL API LLM-сервиса
В переменной LLM_OPENAI_URL укажите URL API OpenAI-совместимого LLM-сервиса.
| Сервис | Пример URL |
|---|---|
| OpenAI | https://api.openai.com/v1/ |
| DeepSeek | https://api.deepseek.com/v1/ |
| Другой OpenAI-совместимый сервис | URL указывается согласно документации используемого сервиса |
В значении LLM_OPENAI_URL необходимо указывать завершающий слеш / после v1/.
Настройка списка моделей
В переменной LLM_OPENAI_MODELS укажите модели, которые должны быть доступны в Proceset. Переменная поддерживает списочный формат и готовый JSON-массив.
Рекомендуется использовать списочный формат:
имя[=тип][,ключ=значение]…;…
Модели разделяются символом ;. Тип отделяется от имени модели символом =, так как символ : может входить в имя модели. Если тип не указан, используется тип llm.
После типа через запятую можно указать параметры модели:
temperature— температура генерацииmax_tokens— максимальное количество токеновmax_tokens_field_name— имя поля, в котором сервис принимает максимальное количество токеновfamilies— семейства модели, разделенные символом|
Пример:
LLM_OPENAI_MODELS='qwen-2.5-instruct-14B-Q4=llm,temperature=0.01,max_tokens=8000;qwen2.5-vl-32b=multimodal_llm'
Поддерживаются следующие типы моделей:
llm— текстовая модельmultimodal_llm— мультимодальная модель
Другие значения типа не поддерживаются агентом LLM OpenAI. При указании неподдерживаемого типа или неизвестного ключа параметра контейнер завершит запуск с сообщением об ошибке.
Вместо списочного формата можно передать JSON-массив. В этом случае значение переменной должно начинаться с символа [. Пример:
LLM_OPENAI_MODELS='[
{"name": "qwen3-32b", "model_type": "llm",
"params": {"temperature": 0.01, "max_tokens": 8000}},
{"name": "qwen2.5-vl-32b", "model_type": "multimodal_llm"}
]'
Объект модели в JSON-массиве поддерживает следующие поля:
| Поле | Обязательно | Описание |
|---|---|---|
name | Да | Уникальное имя модели у провайдера |
model_type | Да | Тип модели: llm или multimodal_llm |
params | Нет | Параметры temperature, max_tokens и max_tokens_field_name. Значение temperature по умолчанию — 0.01, значение max_tokens по умолчанию — 2000 |
model_families | Нет | Массив строк с семействами модели для автоматизации |
Ключи и строковые значения внутри JSON должны быть заключены в двойные кавычки. Если JSON некорректен, контейнер завершит запуск с сообщением об ошибке.
В командной строке Windows cmd.exe одинарные кавычки не удаляются, а внутренние двойные кавычки необходимо экранировать как \". Поэтому в cmd.exe рекомендуется использовать списочный формат.
В Docker Compose значение в формате JSON можно указать следующим образом:
LLM_OPENAI_MODELS: '[{"name":"qwen3-32b","model_type":"llm"}]'
В этом примере одинарные кавычки относятся к синтаксису YAML и не передаются в контейнер.
Подключение к LLM-сервису по HTTPS с самоподписанным сертификатом
Поддерживается подключение к LLM-сервисам по HTTPS с самоподписанными сертификатами, а также с сертификатами, выпущенными внутренним удостоверяющим центром клиента.
Чтобы агент доверял такому сертификату при подключении к LLM-сервису, передайте в контейнер сертификат сервиса или сертификат удостоверяющего центра, которым подписан сертификат сервиса. Смонтируйте сертификат в контейнер по пути /run/secrets/llm_openai.crt:
-v /opt/agent/<название сертификата>.crt:/run/secrets/llm_openai.crt
Где /opt/agent/<название сертификата>.crt — путь к сертификату на хосте, где запускается агент LLM OpenAI.
При запуске контейнера точка входа автоматически добавит параметр trusted_certificate во все элементы ai_configurations.
Этот сертификат используется только для проверки доверия к HTTPS-соединению с LLM-сервисом. Он не относится к настройке взаимодействия между сервером Proceset и агентом LLM OpenAI.
Подготовка образа
Загрузите образ с дистрибутивом агента LLM OpenAI на сервер, где он будет запущен. После этого добавьте образ в локальный реестр Docker:
docker load < infomaximum_app_llm-agent_<версия>-openai.tar
Имя образа с версией приведено для примера. Укажите образ, соответствующий устанавливаемой версии агента.
Запуск агента LLM OpenAI
Создайте volume для хранения логов агента LLM OpenAI:
docker volume create infomaximum-llm-agent-log
Запуск с помощью Docker
Запустите контейнер с агентом LLM OpenAI. Замените адреса, токен, список моделей и имя образа на значения, соответствующие вашей инфраструктуре:
docker run --name infomaximum-llm-agent \
-d \
-e CL_NAME='openai-agent' \
-e CL_PORT='7000' \
-e CL_REMOTE_NODES='proceset.domain.local:7000' \
-e LLM_OPENAI_URL='https://api.openai.com/v1/' \
-e LLM_OPENAI_TOKEN='your-api-token-here' \
-e LLM_OPENAI_MODELS='gpt-4o=multimodal_llm;gpt-4.1-mini=llm' \
--mount type=volume,src=infomaximum-llm-agent-log,target=/var/log/infomaximum/ \
-p 7001:7000 \
--restart=always \
infomaximum/infomaximum_app_llm-agent:<версия>-openai
Имя образа с версией приведено для примера. Укажите образ, соответствующий устанавливаемой версии агента.
Если LLM-сервис использует самоподписанный сертификат или сертификат, выпущенный внутренним удостоверяющим центром, добавьте в команду запуска монтирование сертификата:
-v /opt/agent/<название сертификата>.crt:/run/secrets/llm_openai.crt \
Где:
CL_NAME='openai-agent'— имя агента LLM OpenAICL_PORT='7000'— внутренний порт агента для входящих gRPC-соединенийCL_REMOTE_NODES='proceset.domain.local:7000'— адрес сервера Proceset, с которым должен взаимодействовать агент. Если серверов несколько, укажите их адреса через разделитель;LLM_OPENAI_URL='https://api.openai.com/v1/'— URL API OpenAI-совместимого LLM-сервисаLLM_OPENAI_TOKEN='your-api-token-here'— токен доступа к LLM-сервисуLLM_OPENAI_MODELS='gpt-4o=multimodal_llm;gpt-4.1-mini=llm'— список моделей и их типов-p 7001:7000— публикация порта агента на хосте. Если агент LLM OpenAI запускается на том же сервере, что и Proceset, внешний порт агента должен отличаться от внешнего gRPC-порта сервера Proceset. Например, можно использовать7001:7000. Если агент запускается на отдельном сервере, можно использовать7000:7000infomaximum/infomaximum_app_llm-agent:<версия>-openai— имя Docker-образа агента LLM OpenAI
Если агент LLM OpenAI запускается на том же сервере, где уже опубликован gRPC-порт сервера Proceset 7000, для агента укажите другой внешний порт, например 7001:7000. Если агент LLM OpenAI запускается на отдельном сервере, можно оставить публикацию порта 7000:7000.
Запуск с помощью Docker Compose
Создайте файл конфигурации Docker Compose. Замените адреса, токен, список моделей и имя образа на значения, соответствующие вашей инфраструктуре:
services:
llmagent:
image: infomaximum/infomaximum_app_llm-agent:<версия>-openai
restart: always
ports:
- "7001:7000"
volumes:
- ./data/logs:/var/log/infomaximum/
environment:
- "CL_NAME=openai-agent"
- "CL_PORT=7000"
- "CL_REMOTE_NODES=proceset.domain.local:7000"
- "LLM_OPENAI_URL=https://api.openai.com/v1/"
- "LLM_OPENAI_TOKEN=your-api-token-here"
- "LLM_OPENAI_MODELS=gpt-4o=multimodal_llm;gpt-4.1-mini=llm"
Если LLM-сервис использует самоподписанный сертификат или сертификат внутреннего удостоверяющего центра, добавьте сертификат как секрет:
services:
llmagent:
# ...
secrets:
- llm_openai.crt
secrets:
llm_openai.crt:
file: ./llm_openai.crt
Запуск в Docker Swarm
Если агент необходимо запустить как службу Docker Swarm, выполните команду:
docker service create --name infomaximum-llm-agent \
-e CL_NAME='openai-agent' \
-e CL_PORT='7000' \
-e CL_REMOTE_NODES='proceset.domain.local:7000' \
-e LLM_OPENAI_URL='https://api.openai.com/v1/' \
-e LLM_OPENAI_TOKEN='your-api-token-here' \
-e LLM_OPENAI_MODELS='gpt-4o=multimodal_llm;gpt-4.1-mini=llm' \
--publish published=7001,target=7000 \
--mount type=volume,src=infomaximum-llm-agent-log,target=/var/log/infomaximum/ \
--restart-max-attempts 5 \
--restart-condition "on-failure" \
infomaximum/infomaximum_app_llm-agent:<версия>-openai
Docker Swarm должен быть предварительно инициализирован. Имя образа с версией приведено для примера. Укажите образ, соответствующий устанавливаемой версии агента.
Итоговая конфигурация агента
Из шаблона и переменных окружения точка входа контейнера формирует файл /var/lib/infomaximum/config/com.infomaximum.subsystem.aiopenaiagent.json. Пример итоговой конфигурации:
{
"request_count_per_minute": 60,
"ai_configurations": [
{
"url": "https://api.openai.com/v1/",
"token": "your-api-token-here",
"request_timeout": "1m",
"models": [
{ "name": "gpt-4.1-mini", "model_type": "llm" },
{ "name": "gpt-4o", "model_type": "multimodal_llm" }
]
}
]
}
Настройка сервера Proceset для взаимодействия с агентом LLM OpenAI
Для работы агента LLM OpenAI с сервером Proceset укажите серверу Proceset параметры gRPC-взаимодействия с агентом. Перед запуском с новыми параметрами остановите службу Proceset:
docker service rm infomaximum-app
После этого выполните запуск службы Proceset с новыми параметрами. Ниже приведен пример команды для случая, когда агент LLM OpenAI опубликован на внешнем порту 7001. Сохраните параметры из вашей текущей команды запуска и добавьте к ним переменные CL_NAME, CL_PORT, CL_REMOTE_NODES, а также публикацию порта 7000 для gRPC-взаимодействия:
docker service create --name infomaximum-app \
--secret infomaximum_app_https_certificate \
--secret infomaximum_app_https_certificate_password \
--mount type=volume,src=infomaximum-app-data,target=/var/lib/infomaximum/data/ \
--mount type=volume,src=infomaximum-app-log,target=/var/log/infomaximum/ \
--publish published=443,target=8010,mode=host \
--publish published=7000,target=7000,mode=host \
--restart-max-attempts 5 \
--restart-condition "on-failure" \
-e JVM_MAX_MEMORY='4G' \
-e FE_URL='https://proceset.domain.local' \
-e FE_CORS_POLICY="*" \
-e CL_NAME='proceset' \
-e CL_PORT='7000' \
-e CL_REMOTE_NODES='agent.domain.local:7001' \
infomaximum/infomaximum_app:d<версия>
Имя образа с версией приведено для примера. Укажите образ, соответствующий устанавливаемой версии Proceset.
При запуске с новыми параметрами добавлены:
CL_NAME='proceset'— имя сервера ProcesetCL_PORT='7000'— порт сервера Proceset для gRPC-взаимодействияCL_REMOTE_NODES='agent.domain.local:7001'— адрес агента LLM OpenAI. Если агент запущен на том же сервере, что и Proceset, и опубликован как7001:7000, укажите внешний порт7001. Если агент запущен на отдельном сервере и опубликован как7000:7000, укажите порт7000--publish published=7000,target=7000,mode=host— публикация gRPC-порта сервера Proceset на хосте
Остальные параметры должны соответствовать вашей предыдущей команде запуска Proceset.
Проверка подключения агента к серверу Proceset
После успешного запуска агента LLM OpenAI дополнительных настроек в веб-интерфейсе Proceset не требуется.
Чтобы проверить, что агент LLM OpenAI подключился к серверу Proceset:
- Перейдите в веб-интерфейс Proceset.
- Откройте раздел Настройки → Администрирование → О системе.
- Проверьте, что в списке модулей появилась строка
llm-agent.proceset. - Разверните строку и проверьте наличие модуля
com.infomaximum.subsystem.aiopenaiagent.
Появление модуля в разделе О системе означает, что агент LLM OpenAI корректно подключился к серверу Proceset.
После этого проверьте выполнение запроса к модели:
- Создайте тестовый скрипт.
- Добавьте блок работы с нейросетью, поддерживающий выбор внешней модели.
- В настройках блока проверьте, что в списке доступны модели, указанные в
LLM_OPENAI_MODELS. - Выполните тестовый запрос к внешней модели.
Была ли статья полезна?