Skip to Content

Обновление 1.26.8.4 → 1.26.10.0

ℹ️

Примечания к релизу: 1.26.10.0

ℹ️

Обязательные пакеты: unzip. Необязательные: 7zip и wget — для загрузки образов через архивы. Отсутствующие пакеты можно установить из комплекта поставки согласно статье Установка пакета из комплекта поставки.

⚠️

Перед началом работ на целевой машине остановите все её процессы через Центр управления (UI).

Значимые изменения, которые следует учитывать системному администратору:

  • Обновлены образы Docker всех сервисов AI Server (ai-server-*) — на машине сервера (Центр управления) и на целевых машинах
  • Обновлены дистрибутивы Api.MachineInfo-linux.zip (машина сервера) и Agent-linux.zip (целевые машины)
  • Изменена структура БД: миграции выполняются автоматически при запуске, одна из них удаляет столбец LlmRunnerId из таблицы процессов инференса. Перед обновлением обязательно создайте бэкап БД
  • Добавлен SDC-сервер (семантический классификатор документов) — новый образ целевых машин ai-server-sdc и новая секция DocClassifyProcess в конфигурации агента
  • Образы Docker теперь указываются полным путём в реестре Nexus: nexus.primo-rpa.ru:8000/primo-rpa/<образ>:1.26.10.0 для образов AI Server и путь как на Docker Hub для сторонних: nexus.primo-rpa.ru:8000/library/<образ>:<тег> для официальных образов (PostgreSQL, Redis, RabbitMQ), для остальных — пространство издателя (vllm/vllm-openai, pgvector/pgvector). Имена образов нужно заменить в docker-compose.yaml на машине сервера и в конфигурации агента на целевых машинах. Образ vLLM обновлён до nexus.primo-rpa.ru:8000/vllm/vllm-openai:v0.30.0
  • Добавлены модели: эмбеддинг-модель qwen3vl-embed-2B и модель семантического классификатора для SDC, базовые LLM base-LLM-12-35b-safetensors-4bit, base-LLM-14-27b-safetensors-4bit (vLLM) и base-LLM-14-27b-gguf-q4_k_m (Ollama)
  • В docker-compose.yaml у сервиса Api добавлены тома Api_SmartOcrTestFile и Api_TestPackage — в них хранятся тестовые файлы Умного OCR и тестовые пакеты
  • В конфигурации Api добавлены необязательные секции ExternalS3 (внешнее S3-хранилище заказчика), ExternalModelRegistries (загрузка базовых моделей из Hugging Face и Ollama) и параметр Agents.ManagementEnabled (страница управления целевой машиной)
  • В конфигурации агента добавлены параметр Lfx.SuperUserPassword и том LangfuseData для трассировки агентских систем
  • Из конфигураций сервисов и агента удалены неиспользуемые параметры, например RabbitMQ.ConnectionWithRetry, SessionLifetimeTailMin, FileDownload, ProcessStore. Оставлять их в конфигурации можно: они больше не читаются
  • Страница чата агентской системы теперь требует входа в AI Server
⚠️

Прежние сессии чатов агентских систем пропадут из списков пользователей. Сессии теперь хранятся на сервере и привязаны к пользователю, который их создал. Для сессий, созданных до обновления, пользователь не известен, поэтому в списке сессий они не отображаются.

Машина сервера

1. Создайте бэкап БД

docker exec -it postgres mkdir -p /var/lib/postgresql/data/backups && \ docker exec -it postgres pg_dump -U postgres -d primo-ai-identity -F c -f /var/lib/postgresql/data/backups/identity_$(date +%F).dump && \ docker exec -it postgres pg_dump -U postgres -d primo-ai-application -F c -f /var/lib/postgresql/data/backups/application_$(date +%F).dump && \ docker exec -it postgres pg_dump -U postgres -d primo-ai-filestore -F c -f /var/lib/postgresql/data/backups/filestore_$(date +%F).dump && \ docker exec -it postgres pg_dump -U postgres -d primo-ai-license -F c -f /var/lib/postgresql/data/backups/license_$(date +%F).dump && \ docker exec -it postgres pg_dump -U postgres -d primo-ai-logs -F c -f /var/lib/postgresql/data/backups/logs_$(date +%F).dump && \ docker exec -it postgres pg_dump -U postgres -d primo-ai-inference -F c -f /var/lib/postgresql/data/backups/inference_$(date +%F).dump && \ mkdir -p /app/Primo.AI/Api/backups && \ sudo mv /app/Primo.AI/Api/volumes/pgsql-data/backups/*.dump /app/Primo.AI/Api/backups/.

2. Обновите образы

Через архивы:

Если 7z не установлен, установите пакет 7zip из репозитория ОС или из комплекта поставки согласно статье Установка пакета из комплекта поставки.

names="ai-server-api ai-server-auth ai-server-inference ai-server-logs ai-server-machineinfo ai-server-ui ai-server-langflow-backend ai-server-langflow-frontend" for name in $names; do wget "https://nexus.primo-rpa.ru/repository/raw/1.26.10/ai-server/docker/images/$name.tar.7z" 7z x $name.tar.7z docker load -i $name.tar rm $name.tar.7z $name.tar done

Если есть доступ к nexus.primo-rpa.ru:8000:

names="ai-server-api ai-server-auth ai-server-inference ai-server-logs ai-server-machineinfo ai-server-ui ai-server-langflow-backend ai-server-langflow-frontend" for name in $names; do docker pull nexus.primo-rpa.ru:8000/primo-rpa/$name:1.26.10.0 done

3. Обновите docker-compose.yaml

Создайте каталоги для новых томов:

sudo mkdir -p /app/Primo.AI/Api/volumes/Api_SmartOcrTestFile /app/Primo.AI/Api/volumes/Api_TestPackage

В файле /app/Primo.AI/Api/docker-compose.yaml добавьте в секцию volumes сервиса Api два тома:

Api: ... volumes: ... - ./volumes/Api_LangflowScriptPreset:/app/Primo.AI/Api_LangflowScriptPreset - ./volumes/Api_SmartOcrTestFile:/app/Primo.AI/Api_SmartOcrTestFile - ./volumes/Api_TestPackage:/app/Primo.AI/Api_TestPackage ...
⚠️

Без этих томов тестовые файлы Умного OCR и тестовые пакеты хранятся внутри контейнера и пропадают при его пересоздании.

Образы теперь указываются полным путём в реестре Nexus. Замените имена образов в docker-compose.yaml:

sudo sed -i -E \ -e 's#image:[[:space:]]+primo-rpa/(ai-server-[a-z-]+)(:[^[:space:]]+)?[[:space:]]*$#image: nexus.primo-rpa.ru:8000/primo-rpa/\1:1.26.10.0#' \ -e 's#image:[[:space:]]+externals/#image: nexus.primo-rpa.ru:8000/library/#' \ /app/Primo.AI/Api/docker-compose.yaml

Проверьте результат: все образы в выводе команды grep image: /app/Primo.AI/Api/docker-compose.yaml должны начинаться с nexus.primo-rpa.ru:8000/.

4. Обновите конфигурацию Api (при необходимости)

Новые параметры Api необязательны: если их нет в файле /app/Primo.AI/Api/volumes/conf/Api/appsettings.ProdLinux.json, используются значения по умолчанию. Добавляйте секции, только если нужно изменить поведение.

a) Управление целевой машиной. По умолчанию в меню целевой машины доступен пункт Управление. На странице управления можно менять настройки агента, завершать процессы, останавливать контейнеры и очищать кэш моделей. Чтобы скрыть этот пункт, добавьте в секцию Agents параметр ManagementEnabled:

... "Agents": { ... "ManagementEnabled": false }, ...

b) Внешнее S3-хранилище. Если PDF-документы пакетной обработки и файлы запросов нужно сохранять в S3-хранилище заказчика, добавьте секцию ExternalS3:

... "ExternalS3": { "Endpoint": "", "AccessKey": "", "SecretKey": "", "SSL": true, "ForcePathStyle": false, "StoreType": "Minio", // Minio, AmazonS3 "PackageFiles": { "Enabled": false, "Path": "" }, "RequestFiles": { "Enabled": false, "Path": "" } }, ...
ℹ️

SecretKey указывается в зашифрованном виде (утилита шифрования конфигов).

c) Загрузка базовых моделей из Hugging Face и Ollama. Базовую модель теперь можно добавить из Hugging Face или из реестра Ollama прямо в интерфейсе. Для этого машине сервера нужен доступ к huggingface.co, registry.ollama.ai и ollama.com. Параметры задаются секцией ExternalModelRegistries: добавьте её, если нужно указать токен Hugging Face или изменить таймауты.

... "ExternalModelRegistries": { "DownloadTimeoutMinutes": 240, "ConnectivityTimeoutSeconds": 10, "IgnoreCertificateErrors": true, "TempFolder": "", "HuggingFace": { "ApiUrl": "https://huggingface.co/api", "FilesUrl": "https://huggingface.co", "Token": "" }, "Ollama": { "RegistryUrl": "https://registry.ollama.ai", "LibraryUrl": "https://ollama.com/library" } }, ...
ПараметрПо умолчаниюОписание
DownloadTimeoutMinutes240Максимальное время загрузки модели (мин)
ConnectivityTimeoutSeconds10Таймаут проверки связи с реестром (сек)
IgnoreCertificateErrorstrueНе проверять сертификаты реестров
TempFolderпустоКаталог для временных файлов; пусто — используется FileUpload.Temp
HuggingFace.TokenпустоТокен Hugging Face для закрытых моделей

5. Скачайте новые модели

⚠️

Файлы моделей, пресетов и контекста не имеют расширения, и AI Server ищет их по точному имени. Скачивайте их командами из статьи. Браузер добавляет к имени расширение по типу содержимого (например, .txt) — если файл скачан браузером, удалите это расширение.

Модели SDC-сервера (нужны для проектов Классификация (семантическая)):

Имя моделиИмя файла
qwen3vl-embed-2B2263ec5f-b843-422f-b9e0-78e98549e738
Классификатор (семантический)8502296a-9608-4672-bd7a-05acb32b50ef
wget "https://nexus.primo-rpa.ru/repository/raw/data/ai-server/models/2263ec5f-b843-422f-b9e0-78e98549e738" -O /app/Primo.AI/Api/volumes/Api_Models/2263ec5f-b843-422f-b9e0-78e98549e738 wget "https://nexus.primo-rpa.ru/repository/raw/data/ai-server/models/8502296a-9608-4672-bd7a-05acb32b50ef" -O /app/Primo.AI/Api/volumes/Api_Models/8502296a-9608-4672-bd7a-05acb32b50ef

Новые LLM для NLP:

Имя моделиИмя файлаИсполнение
base-llm-12-35b-safetensors-4bit471c79fa-17b3-46a6-a42f-b93eef012012vLLM
base-llm-14-27b-safetensors-4bit312244b9-9d2e-4553-8bd1-b135e739af13vLLM
base-llm-14-27b-gguf-q4_k_m40d9afa6-de73-46e6-a85d-8816d54cafb7Ollama
filenames="471c79fa-17b3-46a6-a42f-b93eef012012 \ 312244b9-9d2e-4553-8bd1-b135e739af13 \ 40d9afa6-de73-46e6-a85d-8816d54cafb7" for filename in $filenames; do wget "https://nexus.primo-rpa.ru/repository/raw/data/ai-server/models/$filename" -O /app/Primo.AI/Api/volumes/Api_Models/$filename done

6. Обновите Api.MachineInfo

wget "https://nexus.primo-rpa.ru/repository/raw/1.26.10/ai-server/linux/Api.MachineInfo-linux.zip" sudo systemctl stop Primo.AI.Api.MachineInfo sudo unzip -o Api.MachineInfo-linux.zip -x "appsettings*" -d /app/Primo.AI/Api.MachineInfo/ sudo chmod +x /app/Primo.AI/Api.MachineInfo/Primo.AI.Api.MachineInfo sudo chown primo:primo-ai /app/Primo.AI/Api.MachineInfo/ sudo systemctl start Primo.AI.Api.MachineInfo

7. Перезапустите компоненты

docker compose -f /app/Primo.AI/Api/docker-compose.yaml down && \ docker compose -f /app/Primo.AI/Api/docker-compose.yaml up -d

Убедитесь, что Центр управления доступен по HTTPS (порт 44392).

ℹ️

После обновления Центра управления выполните повторный вход в систему.

Целевые машины

1. Обновите образы

  • Вариант загрузки образов 1: скачайте необходимые архивы из официальной поставки AI Server:

Если 7z не установлен, установите пакет 7zip из репозитория ОС или из комплекта поставки согласно статье Установка пакета из комплекта поставки.

images="" externals="" echo "GPU? y/n" read GPU if [ "$GPU" = "y" ] || [ "$GPU" = "Y" ]; then echo "Агентские системы? y/n" read agent_systems if [ "$agent_systems" = "y" ] || [ "$agent_systems" = "Y" ]; then images+=" ai-server-rag-gpu ai-server-langflow-backend" externals+=" pgvector/pgvector:pg18" fi echo "FT-сервер? y/n" read ft_server if [ "$ft_server" = "y" ] || [ "$ft_server" = "Y" ]; then images+=" ai-server-ft" fi echo "NLP-сервер? y/n" read nlp_server if [ "$nlp_server" = "y" ] || [ "$nlp_server" = "Y" ]; then images+=" ai-server-nlp" fi echo "Ollama? y/n" read ollama if [ "$ollama" = "y" ] || [ "$ollama" = "Y" ]; then images+=" ai-server-ollama" fi echo "vLLM? y/n" read vllm if [ "$vllm" = "y" ] || [ "$vllm" = "Y" ]; then externals+=" vllm/vllm-openai:v0.30.0" fi echo "IDP-сервер? y/n" read idp_server if [ "$idp_server" = "y" ] || [ "$idp_server" = "Y" ]; then images+=" ai-server-idp-gpu" fi else echo "NLP-сервер? y/n" read nlp_server if [ "$nlp_server" = "y" ] || [ "$nlp_server" = "Y" ]; then images+=" ai-server-nlp" fi echo "Ollama? y/n" read ollama if [ "$ollama" = "y" ] || [ "$ollama" = "Y" ]; then images+=" ai-server-ollama" fi echo "IDP-сервер? y/n" read idp_server if [ "$idp_server" = "y" ] || [ "$idp_server" = "Y" ]; then images+=" ai-server-idp-cpu" fi fi echo "SDC-сервер (семантический классификатор)? y/n" read sdc_server if [ "$sdc_server" = "y" ] || [ "$sdc_server" = "Y" ]; then images+=" ai-server-sdc" fi # Удаляем ведущий пробел images=$(echo $images | sed 's/^ //') externals=$(echo $externals | sed 's/^ //') names=$(echo $images | tr ' ' '\n') echo "Загружаемые images: $images" echo "Externals: $externals" for name in $names; do echo "Загрузка $name..." wget "https://nexus.primo-rpa.ru/repository/raw/1.26.10/ai-server/docker/images/$name.tar.7z" 7z x $name.tar.7z docker load -i $name.tar rm -f $name.tar.7z $name.tar done for external in $externals; do echo "Загрузка external $external..." filename=$(echo "${external##*/}" | sed 's/:/_/g') wget "https://nexus.primo-rpa.ru/repository/raw/data/libraries/docker/images/$filename.tar.7z" 7z x $filename.tar.7z docker load -i $filename.tar rm -f $filename.tar.7z $filename.tar done echo "Готово!"
  • Вариант загрузки образов 2: используя репозиторий Docker: Работает при наличии подключения к nexus.primo-rpa.ru:8000.
#!/bin/bash images="" externals="" echo "GPU? y/n" read GPU if [ "$GPU" = "y" ] || [ "$GPU" = "Y" ]; then echo "Агентские системы? y/n" read agent_systems if [ "$agent_systems" = "y" ] || [ "$agent_systems" = "Y" ]; then images+=" ai-server-rag-gpu ai-server-langflow-backend" externals+=" pgvector/pgvector:pg18" fi echo "FT-сервер? y/n" read ft_server if [ "$ft_server" = "y" ] || [ "$ft_server" = "Y" ]; then images+=" ai-server-ft" fi echo "NLP-сервер? y/n" read nlp_server if [ "$nlp_server" = "y" ] || [ "$nlp_server" = "Y" ]; then images+=" ai-server-nlp" fi echo "Ollama? y/n" read ollama if [ "$ollama" = "y" ] || [ "$ollama" = "Y" ]; then images+=" ai-server-ollama" fi echo "vLLM? y/n" read vllm if [ "$vllm" = "y" ] || [ "$vllm" = "Y" ]; then externals+=" vllm/vllm-openai:v0.30.0" fi echo "IDP-сервер? y/n" read idp_server if [ "$idp_server" = "y" ] || [ "$idp_server" = "Y" ]; then images+=" ai-server-idp-gpu" fi else echo "NLP-сервер? y/n" read nlp_server if [ "$nlp_server" = "y" ] || [ "$nlp_server" = "Y" ]; then images+=" ai-server-nlp" fi echo "Ollama? y/n" read ollama if [ "$ollama" = "y" ] || [ "$ollama" = "Y" ]; then images+=" ai-server-ollama" fi echo "IDP-сервер? y/n" read idp_server if [ "$idp_server" = "y" ] || [ "$idp_server" = "Y" ]; then images+=" ai-server-idp-cpu" fi fi echo "SDC-сервер (семантический классификатор)? y/n" read sdc_server if [ "$sdc_server" = "y" ] || [ "$sdc_server" = "Y" ]; then images+=" ai-server-sdc" fi # Удаляем ведущий пробел images=$(echo $images | sed 's/^ //') externals=$(echo $externals | sed 's/^ //') names=$(echo $images | tr ' ' '\n') echo "Загружаемые images: $images" echo "Externals: $externals" for name in $names; do docker pull nexus.primo-rpa.ru:8000/primo-rpa/$name:1.26.10.0 done for external in $externals; do docker pull nexus.primo-rpa.ru:8000/$external done echo "Готово!"

2. Обновите файлы агента

wget "https://nexus.primo-rpa.ru/repository/raw/1.26.10/ai-server/linux/Agent-linux.zip" sudo systemctl stop Primo.AI.Agent sudo unzip -o Agent-linux.zip -x "appsettings*" -d /app/Primo.AI/Agent/ sudo chmod +x /app/Primo.AI/Agent/Primo.AI.Agent sudo chown -R agent:primo-ai /app/Primo.AI/Agent/
ℹ️

Флаг -x "appsettings*" сохраняет ваш файл конфигурации агента. Правки конфигурации внесите на следующем шаге, агент запустится на шаге «Перезапустите агента».

3. Обновите конфигурацию агента

Откройте файл конфигурации агента:

sudo nano /app/Primo.AI/Agent/appsettings.ProdLinux.json

a) SDC-сервер. Добавьте секцию DocClassifyProcess (рядом с секцией IdpProcess). Без неё SDC-сервер на целевой машине не запустится.

... "DocClassifyProcess": { "HealthCheck": { "TimeoutSeconds": 180, "PeriodMilliseconds": 500 }, "DockerOptions": { "PortsRangeFrom": 9600, "PortsRangeTo": 9699, "ImageName": "nexus.primo-rpa.ru:8000/primo-rpa/ai-server-sdc:1.26.10.0", "ContainerNamePrefix": "sdc", "Subnet": "agent_agent_ai", "SharedMemorySize": 4 }, "VolumeMounts": [ { "HostPath": "/app/Primo.AI/AgentData/SdcModels", "ContainerPath": "/app/apps/doc_classify/model_store" } ] }, ...

b) IDP-сервер. Чтобы IDP-сервер не скачивал модели заново при каждом запуске, добавьте в секцию IdpProcess параметр VolumeMounts:

"IdpProcess": { ... "VolumeMounts": [ { "HostPath": "/app/Primo.AI/AgentData/IdpModels", "ContainerPath": "/app/apps/idp/model_store" } ] },

c) Агентские системы. Выполняйте только на машинах с Агентскими системами. В секции Lfx:

  • добавьте параметр SuperUserPassword — пароль суперпользователя исполнителя в зашифрованном виде (утилита шифрования конфигов). Ниже указано значение из поставки. Если параметр не задан, исполнитель использует собственный пароль по умолчанию;
  • замените параметр Volumes списком VolumeMounts и добавьте в него том LangfuseData — в нём хранятся трассы агентских систем. Без этого тома трассы теряются при каждом перезапуске исполнителя.
"Lfx": { ... "SuperUserPassword": "JLWIyl1xZNDVVx8tcVllOg==", ... "VolumeMounts": [ { "HostPath": "/app/Primo.AI/AgentData/LangflowData", "ContainerPath": "/app/data", "AppendPort": true }, { "HostPath": "/app/Primo.AI/AgentData/LangfuseData", "ContainerPath": "/app/langfuse", "AppendPort": true } ] },

d) Имена образов. Образы теперь указываются полным путём в реестре Nexus с тегом версии. Замените значения ImageName в конфигурации агента:

sudo sed -i -E \ -e 's#"ImageName": "primo-rpa/ai-server-vllm-(cpu|gpu)(:[^"]*)?"#"ImageName": "nexus.primo-rpa.ru:8000/vllm/vllm-openai:v0.30.0"#' \ -e 's#"ImageName": "primo-rpa/(ai-server-[a-z-]+)(:[^"]*)?"#"ImageName": "nexus.primo-rpa.ru:8000/primo-rpa/\1:1.26.10.0"#' \ -e 's#"ImageName": "externals/vllm-openai:[^"]*"#"ImageName": "nexus.primo-rpa.ru:8000/vllm/vllm-openai:v0.30.0"#' \ -e 's#"ImageName": "externals/pgvector:([^"]*)"#"ImageName": "nexus.primo-rpa.ru:8000/pgvector/pgvector:\1"#' \ /app/Primo.AI/Agent/appsettings.ProdLinux.json

Проверьте результат: все значения в выводе команды grep '"ImageName"' /app/Primo.AI/Agent/appsettings.ProdLinux.json должны начинаться с nexus.primo-rpa.ru:8000/.

e) Настройки, изменённые через интерфейс. Настройки агента, изменённые на странице Управление целевой машины, сохраняются в файл appsettings.Runtime.json. Чтобы он хранился рядом с данными агента, а не в каталоге программы, добавьте секцию RuntimeSettings:

... "RuntimeSettings": { "Directory": "/app/Primo.AI/AgentData" }, ...
ℹ️

Каталоги SdcModels, IdpModels и LangfuseData агент создаёт сам при первом запуске процесса.

4. Перезапустите агента

sudo systemctl restart Primo.AI.Agent

Что дальше

После завершения обновления выполните проверку работоспособности системы.

Last updated on