Skip to Content

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

ℹ️

Примечания к релизам: 1.26.10.1, 1.26.10.2

ℹ️

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

⚠️

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

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

  • Обновлены образы Docker всех сервисов AI Server (ai-server-*) – на машине сервера (Центр управления) и на целевых машинах. Образ ai-server-langflow-backend – с тегом 1.26.10.1, остальные образы AI Server – с тегом 1.26.10.2. Сторонние образы не обновлялись и остаются с прежними тегами
  • Обновлены дистрибутивы Api.MachineInfo-linux.zip (машина сервера) и Agent-linux.zip (целевые машины)
  • В конфигурации агента у vLLM добавлен параметр AdditionalArgs со значением --max-num-seqs 128. Без него гибридные модели с Mamba-слоями (Qwen3.6 и др.) на vLLM не запускаются
  • Структура БД не изменилась
  • Изменён разбор документов для базы знаний RAG: заголовки, сразу за которыми идёт другой заголовок, больше не теряются. Уже загруженные документы исправление не затрагивает – чтобы оно подействовало на них, загрузите их в базу знаний заново

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

Перед обновлением проверьте, что у пользователя primo, от имени которого работает Api.MachineInfo, есть домашний каталог. Если каталога нет, команда его создаст:

h=$(getent passwd primo | cut -d: -f6); [ -d "$h" ] && echo "Каталог $h уже есть" || { sudo install -d -m 700 -o primo -g "$(id -gn primo)" "$h" && echo "Создан $h"; }

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

Через архивы из Nexus (https://nexus.primo-rpa.ru):

Если 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

Через Docker-реестр Nexus, если с машины открыт 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 tag=1.26.10.2 [ "$name" = "ai-server-langflow-backend" ] && tag=1.26.10.1 # Исполнитель агентских систем в 1.26.10.2 не обновлялся docker pull nexus.primo-rpa.ru:8000/primo-rpa/$name:$tag done

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

Замените тег обновлённых образов в файле /app/Primo.AI/Api/docker-compose.yaml:

sudo sed -i -E \ -e 's#(image:[[:space:]]+nexus\.primo-rpa\.ru:8000/primo-rpa/ai-server-(api|auth|inference|logs|ui|langflow-frontend)):1\.26\.10\.0#\1:1.26.10.2#' \ -e 's#(image:[[:space:]]+nexus\.primo-rpa\.ru:8000/primo-rpa/ai-server-langflow-backend):1\.26\.10\.0#\1:1.26.10.1#' \ /app/Primo.AI/Api/docker-compose.yaml

Проверьте результат командой grep image: /app/Primo.AI/Api/docker-compose.yaml: у образа ai-server-langflow-backend тег 1.26.10.1, у остальных образов ai-server-* – 1.26.10.2.

3. Обновите 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

4. Обновите пресеты агентских систем

Скачайте пресеты конвейеров агентских систем в хранилище пресетов Api – файлы заменят прежние версии:

ПресетИмя файла
RAG-система3bc6dd44-226f-4a61-87e6-475e4c0e2dd0
RAG-система: наполнение базы знанийb933462a-b85e-4267-b5df-45a78f9453a4
Чатfd652603-1410-49cd-a3ab-6323256753fa
filenames="3bc6dd44-226f-4a61-87e6-475e4c0e2dd0 \ b933462a-b85e-4267-b5df-45a78f9453a4 \ fd652603-1410-49cd-a3ab-6323256753fa" for filename in $filenames; do sudo wget "https://nexus.primo-rpa.ru/repository/raw/1.26.10/ai-server/data/agsys-presets/$filename" -O /app/Primo.AI/Api/volumes/Api_LangflowScriptPreset/$filename done

5. Настройте права контейнеров на тома

Контейнеры Центра управления работают от непривилегированных пользователей: сервисы Api, Auth, Inference и Logs – от UID 1001, nginx (server_ui) и бэкенд Конструктора агентских систем – от UID 1000. Если UID учетной записи primo с ними не совпадает, контейнеры не могут прочитать свои конфигурации и писать в тома. Каталоги, созданные при обновлении через sudo, принадлежат root, и контейнеры не могут в них писать при любом UID primo. Механизм POSIX ACL с наследованием выдаёт контейнерам доступ ко всем текущим и будущим файлам. Команды безопасно выполнять повторно.

Установите пакет acl, если он отсутствует, из репозитория ОС (sudo apt install -y acl) или из комплекта поставки согласно статье Установка пакета из комплекта поставки.

volumes=/app/Primo.AI/Api/volumes sudo mkdir -p $volumes/Api_Models $volumes/Api_ContextFiles $volumes/Api_LangflowScriptPreset \ $volumes/Api_SmartOcrTestFile $volumes/Api_TestPackage \ $volumes/Logs/Api $volumes/Logs/Api.Auth $volumes/Logs/Api.Inference $volumes/Logs/Api.Logs \ $volumes/langflow_data/logs for dir in conf Api_Models Api_ContextFiles Api_LangflowScriptPreset Api_SmartOcrTestFile Api_TestPackage Logs; do sudo setfacl -R -m u:1001:rwX $volumes/$dir sudo find $volumes/$dir -type d -exec setfacl -d -m u:1001:rwX {} + done for dir in nginx langflow_data; do sudo setfacl -R -m u:1000:rwX $volumes/$dir sudo find $volumes/$dir -type d -exec setfacl -d -m u:1000:rwX {} + done

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

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).

ℹ️

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

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

Перед обновлением проверьте, что у пользователя agent, от имени которого работает агент, есть домашний каталог. Если каталога нет, команда его создаст:

h=$(getent passwd agent | cut -d: -f6); [ -d "$h" ] && echo "Каталог $h уже есть" || { sudo install -d -m 700 -o agent -g "$(id -gn agent)" "$h" && echo "Создан $h"; }

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

Загрузите образы серверов, которые работают на машине.

  • Вариант загрузки образов 1: скачайте архивы комплекта поставки из Nexus (https://nexus.primo-rpa.ru):

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

images="" 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" 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 "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/^ //') names=$(echo $images | tr ' ' '\n') echo "Загружаемые images: $images" 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 echo "Готово!"
  • Вариант загрузки образов 2: через Docker-реестр Nexus. Нужен доступ с машины к nexus.primo-rpa.ru:8000. Если открыт только https://nexus.primo-rpa.ru (порт 443), используйте вариант 1.
#!/bin/bash images="" 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" 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 "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/^ //') names=$(echo $images | tr ' ' '\n') echo "Загружаемые images: $images" for name in $names; do tag=1.26.10.2 [ "$name" = "ai-server-langflow-backend" ] && tag=1.26.10.1 # Исполнитель агентских систем в 1.26.10.2 не обновлялся docker pull nexus.primo-rpa.ru:8000/primo-rpa/$name:$tag 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. Обновите конфигурацию агента

a) Имена образов. Поднимите тег у образов серверов:

sudo sed -i -E \ -e 's#(nexus\.primo-rpa\.ru:8000/primo-rpa/ai-server-(nlp|idp-cpu|idp-gpu|rag-gpu|ft|sdc|ollama|llama-cpp-python)):1\.26\.10\.0"#\1:1.26.10.2"#' \ -e 's#(nexus\.primo-rpa\.ru:8000/primo-rpa/ai-server-langflow-backend):1\.26\.10\.0"#\1:1.26.10.1"#' \ /app/Primo.AI/Agent/appsettings.ProdLinux.json

Проверьте результат командой grep '"ImageName"' /app/Primo.AI/Agent/appsettings.ProdLinux.json: у образа ai-server-langflow-backend тег 1.26.10.1, у остальных образов ai-server-* – 1.26.10.2.

b) vLLM. Выполняйте только на машинах, где используется vLLM. Откройте файл конфигурации агента:

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

В секции LlmEngineProcess → EnginesDockerRun → Vllm добавьте параметр AdditionalArgs:

"EnginesDockerRun": { "Vllm": { ... "ExposePort": true, "AdditionalArgs": [ "--max-num-seqs 128" ] }, ...
ℹ️

Параметр ограничивает число одновременно обрабатываемых запросов vLLM. Значение по умолчанию (256) превышает число блоков Mamba-кэша, поэтому без параметра гибридные модели с Mamba-слоями (Qwen3.6 и др.) на vLLM не запускаются.

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

sudo systemctl restart Primo.AI.Agent

После обновления

ℹ️

Документы, загруженные в базу знаний RAG до обновления, остаются разобранными по-старому: заголовки, за которыми сразу шёл другой заголовок, и, в документах Word, пункты, оформленные стилем заголовка, могли в базу знаний не попасть. Чтобы исправление разбора подействовало на такие документы, загрузите их в базу знаний заново.

Что дальше

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