Skip to Content

Обновление 1.25.12.4 → 1.26.3.1

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

  • Уничтожен Agent.NlpEngine (его функционал переехал в Agent)
  • Изменились файлы конфигураций всех сервисов
  • Изменилась конфигурация docker compose для сервера
  • Изменилось содержимое .env-файла для сервера
  • Изменилось содержимое nginx.conf для сервера
  • Обновлена модель Умного OCR
  • Добавлены модели NLP, RAG
  • Обновились все образы
  • Добавлен компонент “Агентские системы”

Загрузка образов

Загрузите обновленные образы в соответствии со статьями для сервера и целевых машин

Где используетсяНаименованиеСтарое имя образаНовое имя образаИзменение
Машина сервераUIprimo-rpa/ai-server-uiprimo-rpa/ai-server-uiОбновлен
Машина сервераApiprimo-rpa/ai-server-apiprimo-rpa/ai-server-apiОбновлен
Машина сервераAuthprimo-rpa/ai-server-authprimo-rpa/ai-server-authОбновлен
Машина сервераInferenceprimo-rpa/ai-server-inferenceprimo-rpa/ai-server-inferenceОбновлен
Машина сервераLogsprimo-rpa/ai-server-logsprimo-rpa/ai-server-logsОбновлен
Машина сервераКонструктор агентских систем (Backend)-primo-rpa/ai-server-langflow-backendДобавлен
Машина сервераКонструктор агентских систем (UI)-primo-rpa/ai-server-langflow-frontendДобавлен
Целевая машинаIDP-сервер (cpu)primo-rpa/ai-server-smartocr-cpuprimo-rpa/ai-server-idp-cpuОбновлен
Целевая машинаIDP-сервер (gpu)primo-rpa/ai-server-smartocr-gpuprimo-rpa/ai-server-idp-gpuОбновлен
Целевая машинаNLP-серверprimo-rpa/ai-server-logicsprimo-rpa/ai-server-nlpОбновлен
Целевая машинаFT-сервер-primo-rpa/ai-server-ftОбновлен
Целевая машинаvLLM (cpu)primo-rpa/ai-server-vllm-cpuprimo-rpa/ai-server-vllm-cpuОбновлен
Целевая машинаvLLM (gpu)primo-rpa/ai-server-vllm-gpuprimo-rpa/ai-server-vllm-gpuОбновлен
Целевая машинаOllamaprimo-rpa/ai-server-ollamaprimo-rpa/ai-server-ollamaОбновлен
Целевая машинаRAG-сервер-primo-rpa/ai-server-rag-gpuДобавлен
Целевая машинаPostgreSQL + pgVector-externals/pgvector:pg18Добавлен
Целевая машинаИсполнитель агентских систем (Backend)-primo-rpa/ai-server-langflow-backendДобавлен
Целевая машинаIgX-сервер-primo-rpa/ai-server-igxДобавлен

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

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. Обновите образы.

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

sudo apt update && sudo apt install 7z names="ai-server-api ai-server-auth ai-server-inference ai-server-logs ai-server-ui" externals="redis:latest rabbitmq:3.10.7-management postgres:17.6" for name in $names; do wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr&files=$name.tar.7z" 7z x $name.tar.7z docker load -i $name.tar done for external in $externals; do filename=$(echo "$external" | sed 's/:/_/g') wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr%2Fexternals&files=$filename.tar.7z" 7z x $filename.tar.7z docker load -i $filename.tar done

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

names="ai-server-api ai-server-auth ai-server-inference ai-server-logs ai-server-ui ai-server-langflow-backend ai-server-langflow-frontend" externals="redis:latest rabbitmq:3.10.7-management postgres:17.6" for name in $names; do images+=" primo-rpa/$name" done for external in $externals; do images+=" externals/$external" done for image in $images; do docker pull nexus.primo-rpa.ru:8000/$image docker tag nexus.primo-rpa.ru:8000/$image $image docker rmi nexus.primo-rpa.ru:8000/$image done

3. Подготовьте Центр управления к запуску

  1. Скачайте актуальный файл конфигурации docker compose и замените содержимое /app/Primo.AI/Api/docker-compose.yaml, учитывая нестандартные параметры конфигурации.
ℹ️

Выполните шаг вручную.

  1. Скачайте актуальный файл с переменными окружения для docker compose и замените содержимое /app/Primo.AI/Api/.env, учитывая нестандартные параметры конфигурации.
ℹ️

Выполните шаг вручную.

  1. Скачайте актуальный файл с переменными окружения для docker compose и замените содержимое /app/Primo.AI/Api/volumes/nginx/nginx.conf, учитывая нестандартные параметры конфигурации.
ℹ️

Выполните шаг вручную.

  1. Подготовьте Конструктор агенстких систем к запуску:
sudo mkdir /app/Primo.AI/Api/volumes/langflow_data/ \ /app/Primo.AI/Api/volumes/lffe/ && \ sudo touch /app/Primo.AI/Api/volumes/langflow_data/langflow.db \ /app/Primo.AI/Api/volumes/langflow_data/langflow.db-shm \ /app/Primo.AI/Api/volumes/langflow_data/langflow.db-wal && \ sudo chmod -R 777 /app/Primo.AI/Api/volumes/langflow_data /app/Primo.AI/Api/volumes/lffe
  1. Отредактируйте файл конфигурации /app/Primo.AI/Api/volumes/conf/Api/appsettings.ProdLinux.json:
  • Добавьте параметры Конструктора агентских систем в Api:
... "Api": { ... "LangflowConstructor": { "ApiBaseUrl": "https://192.168.1.2:44392" } ... }, ...
  • Добавьте параметры запуска компонентов Агентских систем:
... "Rag": { "StartTimeoutSeconds": 180, "StopTimeoutSeconds": 10 }, "Langflow": { "StartTimeoutSeconds": 180, "StopTimeoutSeconds": 10 }, ...
  1. Отредактируйте файл конфигурации /app/Primo.AI/Api/volumes/conf/Auth/appsettings.ProdLinux.json:
  • Скорректируйте время жизни токенов:
... "Security": { "Jwt": { ... "SessionLifetimeMin": 10, // access токен: 10 минут "SessionLifetimeTailMin": 60, "SessionRefreshTokenLifetimeMin": 600 // refresh токен: 10 часов }, ... }, ...
  1. Отредактируйте файл конфигурации /app/Primo.AI/Api/volumes/conf/Inference/appsettings.ProdLinux.json:
  • Добавьте ключ ServerLoad:
... "ServerLoad": { "PeriodMilliseconds": 1000, "Cpu": { "DegradationLimitPercents": 95, "DegradationLimitElapsedSeconds": 30 } }, ...

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

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

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

  1. Обновите сервис Api.MachineInfo, скачав файл Api.MachineInfo-linux.zip из каталога distr:
wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr&files=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

6. Обновите модель УПД:

wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdata%2Fmodels%2FSmartOCR&files=9a529a4c-2807-41a9-bee9-72a511681000" -P /app/Primo.AI/Api/volumes/Api_Models/

7. Скачайте новые LLM для NLP:

Имя моделиИмя файлаИсполнение
base-llm-06-7b-gguf-fp16c7a88b7f-bf7e-484b-bcc4-fea147315c83Ollama
base-llm-11-9b-safetensors-fp16610d3c1c-6674-460e-8652-fc9f597aa370vLLM
base-llm-11-9b-gguf-q4_k_m6383fa95-74fa-4a1f-8b05-3e57e0a37f21Ollama
base-llm-11-9b-safetensors-fp8ca4a4832-54e3-4601-bcf8-c5672ee6808avLLM
filenames="c7a88b7f-bf7e-484b-bcc4-fea147315c83 \ 610d3c1c-6674-460e-8652-fc9f597aa370 \ 6383fa95-74fa-4a1f-8b05-3e57e0a37f21 \ ca4a4832-54e3-4601-bcf8-c5672ee6808a" cd /app/Primo.AI/Api/volumes/Api_Models/ for filename in filenames; do wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdata%2Fmodels%2FNLP&files=$filename" -P /app/Primo.AI/Api/volumes/Api_Models/ done

8. Скачайте новые LLM для RAG-сервера:

ℹ️

Только при наличии GPU и для проектов “Агентская система”.

Имя моделиИмя файла
embeddinggemma-300m9fbc250f-fb1d-43c0-9af5-957a7f8c5aa7
jina-rerank-v33cf2d1e8-e15b-4633-933f-556823ada8ce
qwen3-embed-0.6b18851aa6-af5f-4569-8084-f7db6b820e32
qwen3-embed-4b7316ea9c-eb37-40fd-ba09-551d5568c60e
qwen3-rerank-0.6b91b8ef72-f954-4409-8b7b-26c7a9bedefe
qwen3-rerank-4ba55e5fe7-6545-4777-9e75-7eae472c3ff0
filenames="9fbc250f-fb1d-43c0-9af5-957a7f8c5aa7 \ 3cf2d1e8-e15b-4633-933f-556823ada8ce \ 18851aa6-af5f-4569-8084-f7db6b820e32 \ 7316ea9c-eb37-40fd-ba09-551d5568c60e \ 91b8ef72-f954-4409-8b7b-26c7a9bedefe \ a55e5fe7-6545-4777-9e75-7eae472c3ff0" cd /app/Primo.AI/Api/volumes/Api_Models/ for filename in filenames; do wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdata%2Fmodels%2FRAG&files=$filename" -P /app/Primo.AI/Api/volumes/Api_Models/ done

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

Уничтожение Agent.NlpEngine

  1. Уничтожьте службу Primo.AI.Agent.NlpEngine.service:
sudo systemctl stop Primo.AI.Agent.NlpEngine sudo systemctl disable Primo.AI.Agent.NlpEngine sudo rm /etc/systemd/system/Primo.AI.Agent.NlpEngine.service sudo systemctl daemon-reload
  1. Удалите сервис Agent.NlpEngine:
sudo mkdir -p /app/Primo.AI/backups sudo zip -r /app/Primo.AI/backups/Agent.NlpEngine.zip /app/Primo.AI/Agent.NlpEngine sudo rm -r /app/Primo.AI/Agent.NlpEngine
  1. Перенесите модели:
sudo mv /app/Primo.AI/Agent.NlpEngineData/ModelTemplates/* /app/Primo.AI/AgentData/ModelTemplates/.

Агент

  1. Актуализируйте файл конфигурации:
  • Добавьте таймаут ожидания ответа при инференсе моделей:
... "Api": { ... "InferenceTimeoutSeconds": 600 // Таймаут запроса к LLM / IDP-серверу. Если null: 5 минут }, ...
  • Удалите блок NlpProcess > Engines.
  • Добавьте блок LlmEngineProcess:
... "LlmEngineProcess": { "HealthCheck": { "Vllm": { "Url": "http://localhost:8000/version", "TimeoutSeconds": 600, "PeriodMilliseconds": 500 }, "Ollama": { "Url": "http://localhost:8004/v1/models", "TimeoutSeconds": 600, "PeriodMilliseconds": 500 }, "LlamaCppPython": { "Url": "http://localhost:8003/v1/models", "TimeoutSeconds": 600, "PeriodMilliseconds": 500 } }, "EnginesDockerRun": { "Vllm": { "ImageName": "primo-rpa/ai-server-vllm-cpu", // primo-rpa/ai-server-vllm-gpu "ContainerName": "vllm", "Port": 8000, "Subnet": "agent_agent_ai" }, "Ollama": { "ImageName": "primo-rpa/ai-server-ollama", "ContainerName": "ollama", "Port": 8004, "Subnet": "agent_agent_ai", "PostRunCommands": [ "ln {modelFilePath} {blobFilePath}", "ollama create {modelId} -f {modelMetaFilePath}", "ollama run {modelId} \"\"" ] }, "LlamaCppPython": { "ImageName": "primo-rpa/ai-server-llama-cpp-python", "ContainerName": "llama", "Port": 8003, "Subnet": "agent_agent_ai" } } }, ...

При наличии GPU замените имя образа vLLM: primo-rpa/ai-server-vllm-cpu > primo-rpa/ai-server-vllm-gpu.

  • Добавьте блок Rag:
... "Rag": { "Cpus": null, "HealthCheck": { "TimeoutSeconds": 90, "PeriodMilliseconds": 500 }, "DockerOptions": { "PortsRangeFrom": 9400, "PortsRangeTo": 9499, "ImageName": "primo-rpa/ai-server-rag-gpu", "ContainerNamePrefix": "rag", "Subnet": "agent_agent_ai", "SharedMemorySize": 2 } }, ...
  • Добавьте блок RagPostgres:
... "RagPostgres": { "DbName": "rag_db", "Password": "postgres", "User": "postgres", "Cpus": null, "HealthCheck": { "TimeoutSeconds": 30, "PeriodMilliseconds": 500 }, "DockerOptions": { "PortsRangeFrom": 5433, "PortsRangeTo": 5440, "ImageName": "externals/pgvector:pg18", "ContainerNamePrefix": "rag_postgres", "Subnet": "agent_agent_ai", "SharedMemorySize": 2 }, "Volumes": { "/app/Primo.AI/AgentData/PostgresData": "/var/lib/postgresql" } }, ...
  • Добавьте блок Lfx:
... "Lfx": { "Cpus": null, "Password": "JLWIyl1xZNDVVx8tcVllOg==", "HealthCheck": { "TimeoutSeconds": 30, "PeriodMilliseconds": 500 }, "DockerOptions": { "PortsRangeFrom": 9500, "PortsRangeTo": 9599, "ImageName": "primo-rpa/ai-server-langflow-backend", "ContainerNamePrefix": "lfx", "Subnet": "agent_agent_ai", "SharedMemorySize": 2 }, "Volumes": { "/app/Primo.AI/AgentData/LangflowData": "/app/data" } }, ...
  • Добавьте блок IgX:
... "IgX": { "Cpus": null, "HealthCheck": { "TimeoutSeconds": 30, "PeriodMilliseconds": 500 }, "DockerOptions": { "PortsRangeFrom": 9600, "PortsRangeTo": 9699, "ImageName": "primo-rpa/ai-server-igx", "ContainerNamePrefix": "igx", "Subnet": "agent_agent_ai", "SharedMemorySize": 2 } }, ...
  1. Обновите файлы агента:
wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr&files=Agent-linux.zip&downloadStartSecret=uf3pctriscf" sudo systemctl stop Primo.AI.Agent sudo rm /app/Primo.AI/Agent/InMemoryProcessStore.json 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/ sudo systemctl start Primo.AI.Agent

Образы

  1. Удалите старые образы.
images=( "primo-rpa/ai-server-idp-gpu" "primo-rpa/ai-server-idp-cpu" "primo-rpa/ai-server-nlp" "primo-rpa/ai-server-ollama" "primo-rpa/ai-server-vllm-cpu" "primo-rpa/ai-server-vllm-gpu" "primo-rpa/ai-server-ft" ) for img in "${images[@]}"; do echo "Обрабатываем образ: $img" docker stop $(docker ps -a -q --filter ancestor="$img") 2>/dev/null || true docker rm $(docker ps -a -q --filter ancestor="$img") 2>/dev/null || true done # Удаляем образы docker rmi "${images[@]}"
  1. Загрузите новые образы:
  • Вариант загрузки образов 1: скачайте необходимые архивы из официальной поставки AI Server:
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 ai-server-igx" externals+=" 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 images+=" ai-server-vllm-gpu" 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 "vLLM? y/n" read vllm if [ "$vllm" = "y" ] || [ "$vllm" = "Y" ]; then images+=" ai-server-vllm-cpu" fi echo "IDP-сервер? y/n" read idp_server if [ "$idp_server" = "y" ] || [ "$idp_server" = "Y" ]; then images+=" ai-server-idp-cpu" fi fi # Удаляем ведущий пробел images=$(echo $images | sed 's/^ //') names=$(echo $images | tr ' ' '\n') echo "Загружаемые images: $images" echo "Externals: $externals" sudo apt update && sudo apt install -y 7z for name in $names; do echo "Загрузка $name..." wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr&files=$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..." wget --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdistr%2Fexternals&files=$external.tar.7z" 7z x $external.tar.7z docker load -i $external.tar rm -f $external.tar.7z $external.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 ai-server-igx" externals+=" 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 images+=" ai-server-vllm-gpu" 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 "vLLM? y/n" read vllm if [ "$vllm" = "y" ] || [ "$vllm" = "Y" ]; then images+=" ai-server-vllm-cpu" fi echo "IDP-сервер? y/n" read idp_server if [ "$idp_server" = "y" ] || [ "$idp_server" = "Y" ]; then images+=" ai-server-idp-cpu" fi fi # Удаляем ведущий пробел images=$(echo $images | 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/$image docker tag nexus.primo-rpa.ru:8000/primo-rpa/$image primo-rpa/$image docker rmi nexus.primo-rpa.ru:8000/primo-rpa/$image done for external in $externals; do docker pull nexus.primo-rpa.ru:8000/externals/$external docker tag nexus.primo-rpa.ru:8000/externals/$external externals/$external docker rmi nexus.primo-rpa.ru:8000/externals/$external done echo "Готово!"