Обновление 1.25.12.4 → 1.26.10.1
Обязательные пакеты: unzip, acl. Необязательные: 7zip и wget — для загрузки образов через архивы. Отсутствующие пакеты можно установить из комплекта поставки согласно статье Установка пакета из комплекта поставки.
Перед началом работ на целевой машине остановите все её процессы через Центр управления (UI).
Данная инструкция позволяет обновиться с версии 1.25.12.4 напрямую до версии 1.26.10.1, минуя промежуточные версии 1.26.3.1, 1.26.3.2, 1.26.3.3, 1.26.3.4, 1.26.6.0, 1.26.6.1, 1.26.6.2, 1.26.6.3, 1.26.6.4, 1.26.8.0, 1.26.8.1, 1.26.8.2, 1.26.8.3 и 1.26.8.4.
Значимые изменения, которые следует учитывать системному администратору:
- Уничтожен
Agent.NlpEngine(его функционал переехал в Agent) - Изменились файлы конфигураций всех сервисов
- Изменилась конфигурация docker compose для сервера
- Изменилось содержимое .env-файла для сервера
- Изменилось содержимое nginx.conf для сервера
- Обновлена модель Умного OCR
- Добавлены модели NLP, RAG
- Обновились все образы (включая IDP-сервер)
- Упразднён образ
ai-server-igx(функционал перенесён вai-server-langflow-backend) - Упразднён образ
ai-server-vllm-cpu - Образ vLLM заменён:
primo-rpa/ai-server-vllm-gpu→ внешний образnexus.primo-rpa.ru:8000/vllm/vllm-openai:v0.30.0 - Добавлена новая модель
base-LLM-12-35b-safetensors-nfvp4(vLLM) - Изменены конфигурации сервисов: Api (
LlmRunners,Agents.UsagePeriod), Inference (Orchestrator), агент (переработана секцияLlmEngineProcess:EndpointвместоUrl, диапазоны портов,ExposePort) - Добавлен компонент “Агентские системы”
- Добавлен новый параметр конфигурации Inference —
UnprocessedExpirationSeconds(очистка устаревших необработанных запросов) - Добавлены параметры
*PrefetchCountв секциюRabbitMQконфига Inference (ограничение одновременных запросов) - Добавлена секция
LangflowScriptPresetв конфиг Api (хранилище пресетов агентских систем) - Добавлены пресеты конвейеров агентских систем
- Добавлены новые модели:
base-LLM-11-30b,base-LLM-12-35b,base-LLM-13-26b,ft-base-0.6b-fp16,ft-base-2b-fp16 - Удалены модели:
base-LLM-01-*,base-LLM-06-32b-gguf-q4_k_m,base-LLM-10-4b-safetensors-base - Обновлен дистрибутив агента на Целевой машине
- TLS-сертификаты больше не встроены в образ
ai-server-ui— теперь монтируются через volume вdocker-compose.yaml - Образ PostgreSQL обновлён с
postgres:17.6наpostgres:17.10-alpineдля устранения уязвимостей — после смены образа индексы БД нужно перестроить, см. шаг «Перезапустите компоненты» на машине сервера - Обновлён образ RabbitMQ:
3.10.7-management→4.2.8-management-alpine(устранение уязвимостей, Alpine-база) - Обновлён образ Redis:
redis:latest→redis:7.4-alpine(устранение уязвимостей, Alpine-база) - Образ Ollama (
ai-server-ollama) теперь запускается от непривилегированного пользователя (UID 1001) - Изменена структура БД: миграции выполняются автоматически при запуске, одна из них удаляет столбец
LlmRunnerIdиз таблицы процессов инференса. Перед обновлением обязательно создайте бэкап БД - Добавлен SDC-сервер (семантический классификатор документов) — новый образ целевых машин
ai-server-sdcи новая секцияDocClassifyProcessв конфигурации агента - Образы Docker теперь указываются полным путём в реестре Nexus:
nexus.primo-rpa.ru:8000/primo-rpa/<образ>:<версия>для образов AI Server (1.26.10.1— уai-server-api,ai-server-auth,ai-server-inference,ai-server-logs,ai-server-machineinfo,ai-server-ui,ai-server-langflow-backendиai-server-rag-gpu, у остальных —1.26.10.0) и путь как на 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 - В конфигурации агента у vLLM добавлен параметр
AdditionalArgsсо значением--max-num-seqs 128. Без него гибридные модели с Mamba-слоями (Qwen3.6 и др.) на vLLM не запускаются - Добавлены модели: эмбеддинг-модель
qwen3vl-embed-2Bи модель семантического классификатора для SDC, базовые LLMbase-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
- В конфигурации агента для Ollama добавлен параметр
OLLAMA_IMAGE_MIN_TOKENS=32вExtraEnvs— минимальный порог токенов для обработки изображений - Добавлены параметры модели Обработка изображений и Рассуждение для внешней LLM
- Изменён формат конвейеров пакетной обработки: правила обработки полей задаются только у шага постобработки, в условии
hasFieldвместоhasTextиспользуетсяvalueState, списокorстал альтернативой собственным проверкам условия
Конвейеры пакетной обработки нужно поправить вручную. Старый конвейер сохранится без ошибки — неизвестные поля при сохранении игнорируются, — но правила, оставшиеся на шагах Умного OCR и NLP, применяться не будут, а условия начнут срабатывать иначе. Что именно поправить — в статье Обновление 1.26.8.3 → 1.26.10.1, раздел «Конвейеры пакетной обработки».
Прежние сессии чатов агентских систем пропадут из списков пользователей. Сессии теперь хранятся на сервере и привязаны к пользователю, который их создал. Для сессий, созданных до обновления, пользователь не известен, поэтому в списке сессий они не отображаются.
Загрузка образов
Загрузите обновленные образы в соответствии со статьями для сервера и целевых машин
| Где используется | Наименование | Старое имя образа | Новое имя образа | Изменение |
|---|---|---|---|---|
| Машина сервера | UI | primo-rpa/ai-server-ui | primo-rpa/ai-server-ui | Обновлен |
| Машина сервера | Api | primo-rpa/ai-server-api | primo-rpa/ai-server-api | Обновлен |
| Машина сервера | Auth | primo-rpa/ai-server-auth | primo-rpa/ai-server-auth | Обновлен |
| Машина сервера | Inference | primo-rpa/ai-server-inference | primo-rpa/ai-server-inference | Обновлен |
| Машина сервера | Logs | primo-rpa/ai-server-logs | primo-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-cpu | primo-rpa/ai-server-idp-cpu | Обновлен |
| Целевая машина | IDP-сервер (gpu) | primo-rpa/ai-server-smartocr-gpu | primo-rpa/ai-server-idp-gpu | Обновлен |
| Целевая машина | NLP-сервер | primo-rpa/ai-server-logics | primo-rpa/ai-server-nlp | Обновлен |
| Целевая машина | FT-сервер | - | primo-rpa/ai-server-ft | Обновлен |
| Целевая машина | vLLM (gpu) | primo-rpa/ai-server-vllm-gpu | nexus.primo-rpa.ru:8000/vllm/vllm-openai:v0.30.0 | Заменён |
| Целевая машина | Ollama | primo-rpa/ai-server-ollama | primo-rpa/ai-server-ollama | Обновлен |
| Целевая машина | RAG-сервер | - | primo-rpa/ai-server-rag-gpu | Добавлен |
| Целевая машина | PostgreSQL + pgVector | - | nexus.primo-rpa.ru:8000/pgvector/pgvector:pg18 | Добавлен |
| Целевая машина | Исполнитель агентских систем (Backend) | - | primo-rpa/ai-server-langflow-backend | Добавлен |
| Целевая машина | SDC-сервер | - | primo-rpa/ai-server-sdc | Добавлен |
Машина сервера
Перед обновлением проверьте, что у пользователя 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. Создайте бэкап БД:
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. Обновите образы.
Через архивы из 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"
externals="library/redis:7.4-alpine library/rabbitmq:4.2.8-management-alpine library/postgres:17.10-alpine"
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
done
for external in $externals; do
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
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"
externals="library/redis:7.4-alpine library/rabbitmq:4.2.8-management-alpine library/postgres:17.10-alpine"
for name in $names; do
tag=1.26.10.1
[ "$name" = "ai-server-langflow-frontend" ] && tag=1.26.10.0 # Langflow Frontend в 1.26.10.1 не обновлялся
docker pull nexus.primo-rpa.ru:8000/primo-rpa/$name:$tag
done
for external in $externals; do
docker pull nexus.primo-rpa.ru:8000/$external
done3. Подготовьте Центр управления к запуску
-
Скачайте актуальный файл конфигурации docker compose и замените содержимое
/app/Primo.AI/Api/docker-compose.yaml, учитывая нестандартные параметры конфигурации.ℹ️Выполните шаг вручную.
-
Скачайте актуальный файл с переменными окружения для docker compose и замените содержимое
/app/Primo.AI/Api/.env, учитывая нестандартные параметры конфигурации. Браузер может сохранить файл какenv.txtили.env.txt— переименуйте его в.env. Скачать файл под нужным именем можно командойwget "https://nexus.primo-rpa.ru/repository/raw/1.26.10/ai-server/docker/.env" -O .env.new.
Выполните шаг вручную.
В т.ч. укажите реальный внешний эндпоинт AI Server:
sudo sed -i 's|AI_SERVER_BASE_URL=https://primo-rpa-ai-server:44392/|AI_SERVER_BASE_URL=https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:44392/|g' /app/Primo.AI/Api/.envВ т.ч. укажите реальный внешний эндпоинт Конструктора агентских систем:
sudo sed -i 's|BACKEND_URL=https://primo-rpa-ai-server:44392/langflow/|BACKEND_URL=https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:44392/langflow/|g' /app/Primo.AI/Api/.env-
Скачайте актуальный файл с переменными окружения для docker compose и замените содержимое
/app/Primo.AI/Api/volumes/nginx/nginx.conf, учитывая нестандартные параметры конфигурации.ℹ️Выполните шаг вручную.
-
Подготовьте Конструктор агенстких систем к запуску:
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Создайте каталоги для тестовых файлов Умного OCR и тестовых пакетов — тома Api_SmartOcrTestFile и Api_TestPackage сервиса Api в docker-compose.yaml:
sudo mkdir -p /app/Primo.AI/Api/volumes/Api_SmartOcrTestFile /app/Primo.AI/Api/volumes/Api_TestPackage-
Извлеките TLS-сертификаты из текущего образа
ai-server-ui:⚠️Начиная с версии 1.26.6.2 сертификаты не включены в образ
ai-server-ui. Необходимо сохранить сертификаты из работающего контейнера и подключить их через volume.
sudo mkdir -p /app/Primo.AI/Api/volumes/nginx/ssl
docker cp server_ui:/etc/nginx/cert1.crt /app/Primo.AI/Api/volumes/nginx/ssl/cert1.crt
docker cp server_ui:/etc/nginx/cert1.rsa /app/Primo.AI/Api/volumes/nginx/ssl/cert1.rsa
sudo chmod 644 /app/Primo.AI/Api/volumes/nginx/ssl/cert1.crt
sudo chmod 600 /app/Primo.AI/Api/volumes/nginx/ssl/cert1.rsaЕсли контейнер server_ui уже остановлен или сертификаты недоступны, сгенерируйте новые по инструкции.
- Отредактируйте файл конфигурации
/app/Primo.AI/Api/volumes/conf/Api/appsettings.ProdLinux.json:- Укажите адрес Конструктора агентских систем в Api > LangflowConstructor:
sudo sed -i 's|"ApiBaseUrl": "https://192.168.1.2:44392"|"ApiBaseUrl": "https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:44392"|g' /app/Primo.AI/Api/volumes/conf/Api/appsettings.ProdLinux.json- Добавьте параметры запуска компонентов Агентских систем:
...
"Rag": {
"StartTimeoutSeconds": 180,
"StopTimeoutSeconds": 10
},
"Langflow": {
"StartTimeoutSeconds": 180,
"StopTimeoutSeconds": 10
},
...- Добавьте секцию
LangflowScriptPresetвFileUpload(хранилище пресетов агентских систем):
...
"FileUpload": {
...
"LangflowScriptPreset": {
"ReadBufferSize": 10000,
"ReadBufferIterationBeforeSave": 50,
"Folder": "/app/Primo.AI/Api_LangflowScriptPreset",
"StoreType": "FileSystem"
},
...
},
...- Добавьте параметр
UsagePeriodв секциюAgentsи новую секциюLlmRunners:
...
"Agents": {
...
"StopProcessAfterUnavailablePeriod": 300,
"UsagePeriod": 10000
},
...
"LlmRunners": {
"StartTimeoutSeconds": 1200,
"StopTimeoutSeconds": 300
},
...- Параметры Api, добавленные в 1.26.10.0, необязательны: если их нет в файле
/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"
}
},
...| Параметр | По умолчанию | Описание |
|---|---|---|
DownloadTimeoutMinutes | 240 | Максимальное время загрузки модели (мин) |
ConnectivityTimeoutSeconds | 10 | Таймаут проверки связи с реестром (сек) |
IgnoreCertificateErrors | true | Не проверять сертификаты реестров |
TempFolder | пусто | Каталог для временных файлов; пусто — используется FileUpload.Temp |
HuggingFace.Token | пусто | Токен Hugging Face для закрытых моделей |
- Отредактируйте файл конфигурации
/app/Primo.AI/Api/volumes/conf/Auth/appsettings.ProdLinux.json:
- Скорректируйте время жизни токенов:
...
"Security": {
"Jwt": {
...
"SessionLifetimeMin": 10, // access токен: 10 минут
"SessionLifetimeTailMin": 60,
"SessionRefreshTokenLifetimeMin": 600 // refresh токен: 10 часов
},
...
},
...- Отредактируйте файл конфигурации
/app/Primo.AI/Api/volumes/conf/Inference/appsettings.ProdLinux.json:
- Добавьте ключ
ServerLoad:
...
"ServerLoad": {
"PeriodMilliseconds": 1000,
"Cpu": {
"DegradationLimitPercents": 95,
"DegradationLimitElapsedSeconds": 30
}
},
...- Добавьте секцию
ClearRequestsService(очистка устаревших запросов):
...
"ClearRequestsService": {
"DefaultExpirationSeconds": 3600,
"UnprocessedExpirationSeconds": 86400
},
...| Параметр | По умолчанию | Описание |
|---|---|---|
DefaultExpirationSeconds | 3600 | Время хранения обработанного запроса (сек). По умолчанию 1 час |
UnprocessedExpirationSeconds | 86400 | Время хранения необработанного запроса (сек). По умолчанию 24 часа |
- Добавьте параметры
PrefetchCountв секциюRabbitMQ:
...
"RabbitMQ": {
...
"AgentSystemRequestEventPrefetchCount": 10,
"SmartOcrRequestEventPrefetchCount": 10,
"NlpRequestEventPrefetchCount": 10,
"PackageRequestEventPrefetchCount": 10,
"PdfGeneratingEventPrefetchCount": 10
},
...| Параметр | По умолчанию | Описание |
|---|---|---|
AgentSystemRequestEventPrefetchCount | 10 | Кол-во одновременных запросов агентских систем в обработке |
SmartOcrRequestEventPrefetchCount | 10 | Кол-во одновременных запросов Умного OCR в обработке |
NlpRequestEventPrefetchCount | 10 | Кол-во одновременных запросов NLP в обработке |
PackageRequestEventPrefetchCount | 10 | Кол-во одновременных запросов пакетной обработки |
PdfGeneratingEventPrefetchCount | 10 | Кол-во одновременных запросов генерации PDF |
Уменьшите значения PrefetchCount при нехватке ресурсов на сервере. Это ограничит количество запросов, одновременно обрабатываемых сервисом Inference.
- Добавьте секцию
Orchestrator:
...
"Orchestrator": {
"Login": "aiserver",
"Password": "JLWIyl1xZNDVVx8tcVllOg==",
"Address": "https://<адрес Центра управления>:44392"
},
...Укажите в Address реальный внешний адрес Центра управления. Password — зашифрованное значение.
4. Перезапустите компоненты Api:
Образ PostgreSQL сменился с postgres:17.6 (на базе Debian) на postgres:17.10-alpine (на базе Alpine). В них разные правила сравнения строк, поэтому индексы по текстовым полям, построенные прежним образом, нужно перестроить до запуска остальных компонентов. Без этого уникальные индексы перестают находить существующие записи: в таблицах появляются дубли, и Api может не запуститься с ошибкой An item with the same key has already been added. Key: LastExecution.
Остановите компоненты и запустите только PostgreSQL на новом образе:
docker compose -f /app/Primo.AI/Api/docker-compose.yaml down && \
docker compose -f /app/Primo.AI/Api/docker-compose.yaml up -d postgres && \
until docker exec postgres pg_isready -U postgres; do sleep 2; doneУдалите служебную схему hangfire в БД primo-ai-application. В ней хранится расписание фоновых задач Api: при запуске Api создаст схему заново и зарегистрирует задачи.
docker exec -it postgres psql -U postgres -d primo-ai-application -c "DROP SCHEMA IF EXISTS hangfire CASCADE;"Перестройте индексы во всех БД:
docker exec postgres reindexdb -U postgres --allЕсли reindexdb завершилась ошибкой could not create unique index ... is duplicated, в таблице уже есть дубли. Не запускайте компоненты и обратитесь в техническую поддержку, приложив текст ошибки.
Запустите компоненты:
docker compose -f /app/Primo.AI/Api/docker-compose.yaml up -dЕсли обновление уже выполнено без перестройки индексов и Api не запускается с ошибкой Key: LastExecution, выполните команды этого шага: остановите компоненты, удалите схему hangfire, перестройте индексы и запустите компоненты.
После обновления Центра управления выполните повторный вход в систему.
5. Обновите Api.MachineInfo
- Обновите сервис Api.MachineInfo, скачав файл
Api.MachineInfo-linux.zipиз каталогаdistr:
wget "https://nexus.primo-rpa.ru/repository/raw/1.26.10/ai-server/linux/Api.MachineInfo-linux.zip"sudo systemctl stop Primo.AI.Api.MachineInfosudo 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.MachineInfosudo chown primo:primo-ai /app/Primo.AI/Api.MachineInfo/sudo systemctl start Primo.AI.Api.MachineInfo6. Обновите модель УПД:
wget "https://nexus.primo-rpa.ru/repository/raw/data/ai-server/models/9a529a4c-2807-41a9-bee9-72a511681000" -O /app/Primo.AI/Api/volumes/Api_Models/9a529a4c-2807-41a9-bee9-72a5116810007. Скачайте новые LLM для NLP:
| Имя модели | Имя файла | Исполнение |
|---|---|---|
| base-llm-06-7b-gguf-fp16 | c7a88b7f-bf7e-484b-bcc4-fea147315c83 | Ollama |
| base-llm-11-9b-safetensors-fp16 | 610d3c1c-6674-460e-8652-fc9f597aa370 | vLLM |
| base-llm-11-9b-gguf-q4_k_m | 6383fa95-74fa-4a1f-8b05-3e57e0a37f21 | Ollama |
| base-llm-11-9b-safetensors-fp8 | ca4a4832-54e3-4601-bcf8-c5672ee6808a | vLLM |
| base-llm-11-30b-gguf-q4_k_m | e8dfc900-e183-4647-80b0-a97f242a7dba | Ollama |
| base-llm-12-35b-gguf-q4_k_m | 3377b494-f686-4cef-9db1-4ffb3164cc9c | Ollama |
| base-llm-12-35b-safetensors-nfvp4 | 63e56e59-6c96-4fc7-9ecb-afab3d79bb21 | vLLM |
| base-llm-13-26b-gguf-q4_k_m | 1442b32b-aaee-4139-88c1-a7f313d11a09 | Ollama |
| base-llm-12-35b-safetensors-4bit | 471c79fa-17b3-46a6-a42f-b93eef012012 | vLLM |
| base-llm-14-27b-safetensors-4bit | 312244b9-9d2e-4553-8bd1-b135e739af13 | vLLM |
| base-llm-14-27b-gguf-q4_k_m | 40d9afa6-de73-46e6-a85d-8816d54cafb7 | Ollama |
| ft-base-0.6b-fp16 | 6dd7fb3c-d58e-427c-8845-39964df50bc5 | vLLM (FT) |
| ft-base-2b-fp16 | ce8f072a-b6dc-4c9f-ae4e-abe826da3aa0 | vLLM (FT) |
filenames="c7a88b7f-bf7e-484b-bcc4-fea147315c83 \
610d3c1c-6674-460e-8652-fc9f597aa370 \
6383fa95-74fa-4a1f-8b05-3e57e0a37f21 \
ca4a4832-54e3-4601-bcf8-c5672ee6808a \
e8dfc900-e183-4647-80b0-a97f242a7dba \
3377b494-f686-4cef-9db1-4ffb3164cc9c \
63e56e59-6c96-4fc7-9ecb-afab3d79bb21 \
1442b32b-aaee-4139-88c1-a7f313d11a09 \
471c79fa-17b3-46a6-a42f-b93eef012012 \
312244b9-9d2e-4553-8bd1-b135e739af13 \
40d9afa6-de73-46e6-a85d-8816d54cafb7 \
6dd7fb3c-d58e-427c-8845-39964df50bc5 \
ce8f072a-b6dc-4c9f-ae4e-abe826da3aa0"
cd /app/Primo.AI/Api/volumes/Api_Models/
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
done8. Скачайте модели SDC-сервера:
Файлы моделей, пресетов и контекста не имеют расширения, и AI Server ищет их по точному имени. Скачивайте их командами из статьи. Браузер добавляет к имени расширение по типу содержимого (например, .txt) — если файл скачан браузером, удалите это расширение.
Модели SDC-сервера (нужны для проектов Классификация (семантическая)):
| Имя модели | Имя файла |
|---|---|
| qwen3vl-embed-2B | 2263ec5f-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-05acb32b50ef9. Скачайте новые LLM для RAG-сервера:
Только при наличии GPU и для проектов “Агентская система”.
| Имя модели | Имя файла |
|---|---|
| embeddinggemma-300m | 9fbc250f-fb1d-43c0-9af5-957a7f8c5aa7 |
| jina-rerank-v3 | 3cf2d1e8-e15b-4633-933f-556823ada8ce |
| qwen3-embed-0.6b | 18851aa6-af5f-4569-8084-f7db6b820e32 |
| qwen3-embed-4b | 7316ea9c-eb37-40fd-ba09-551d5568c60e |
| qwen3-rerank-0.6b | 91b8ef72-f954-4409-8b7b-26c7a9bedefe |
| qwen3-rerank-4b | a55e5fe7-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 "https://nexus.primo-rpa.ru/repository/raw/data/ai-server/models/$filename" -O /app/Primo.AI/Api/volumes/Api_Models/$filename
done10. Скачайте пресеты конвейеров агентских систем:
sudo mkdir -p /app/Primo.AI/Api/volumes/Api_LangflowScriptPreset/
filenames="e18c953c-6cbf-4f43-9267-76796bea018c \
fd652603-1410-49cd-a3ab-6323256753fa \
b933462a-b85e-4267-b5df-45a78f9453a4 \
3bc6dd44-226f-4a61-87e6-475e4c0e2dd0"
for filename in $filenames; do
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Целевые машины
Перед обновлением проверьте, что у пользователя 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"; }Уничтожение Agent.NlpEngine
- Уничтожьте службу 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- Удалите сервис 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- Перенесите модели:
sudo mv /app/Primo.AI/Agent.NlpEngineData/ModelTemplates/* /app/Primo.AI/AgentData/ModelTemplates/.Агент
- Актуализируйте файл конфигурации:
- Добавьте таймаут ожидания ответа при инференсе моделей:
...
"Api": {
...
"InferenceTimeoutSeconds": 600 // Таймаут запроса к LLM / IDP-серверу. Если null: 5 минут
},
...- Удалите блок
NlpProcess>Engines. - Добавьте блок
LlmEngineProcess:
...
"LlmEngineProcess": {
"HealthCheck": {
"Vllm": {
"Endpoint": "/version",
"TimeoutSeconds": 600,
"PeriodMilliseconds": 500
},
"Ollama": {
"Endpoint": "/v1/models",
"TimeoutSeconds": 600,
"PeriodMilliseconds": 500
},
"LlamaCppPython": {
"Endpoint": "/v1/models",
"TimeoutSeconds": 600,
"PeriodMilliseconds": 500
}
},
"EnginesDockerRun": {
"Vllm": {
"ImageName": "nexus.primo-rpa.ru:8000/vllm/vllm-openai:v0.30.0",
"ContainerName": "vllm",
"PortsRangeFrom": 8000,
"PortsRangeTo": 8019,
"Subnet": "agent_agent_ai",
"ExposePort": true,
"AdditionalArgs": [ "--max-num-seqs 128" ]
},
"Ollama": {
"ImageName": "nexus.primo-rpa.ru:8000/primo-rpa/ai-server-ollama:1.26.10.0",
"ContainerName": "ollama",
"PortsRangeFrom": 8020,
"PortsRangeTo": 8039,
"Subnet": "agent_agent_ai",
"PostRunCommands": [
"cp {modelFilePath} {blobFilePath}",
"ollama create {modelId} -f {modelMetaFilePath}",
"ollama run {modelId} \"\""
],
"ExtraEnvs": [ "-e OLLAMA_GO_TEMPLATE=1", "-e OLLAMA_IMAGE_MIN_TOKENS=32" ]
},
"LlamaCppPython": {
"ImageName": "nexus.primo-rpa.ru:8000/primo-rpa/ai-server-llama-cpp-python:1.26.10.0",
"ContainerName": "llama",
"PortsRangeFrom": 8040,
"PortsRangeTo": 8059,
"Subnet": "agent_agent_ai",
"ExposePort": true
}
}
},
...- Добавьте блок
Rag:
...
"Rag": {
"Cpus": null,
"HealthCheck": {
"TimeoutSeconds": 90,
"PeriodMilliseconds": 500
},
"DockerOptions": {
"PortsRangeFrom": 9400,
"PortsRangeTo": 9499,
"ImageName": "nexus.primo-rpa.ru:8000/primo-rpa/ai-server-rag-gpu:1.26.10.1",
"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": "nexus.primo-rpa.ru:8000/pgvector/pgvector:pg18",
"ContainerNamePrefix": "rag_postgres",
"Subnet": "agent_agent_ai",
"SharedMemorySize": 2
},
"VolumeMounts": [
{
"HostPath": "/app/Primo.AI/AgentData/PostgresData",
"ContainerPath": "/var/lib/postgresql",
"AppendPort": true
}
]
},
...- Добавьте блок
Lfx:
...
"Lfx": {
"Password": "JLWIyl1xZNDVVx8tcVllOg==",
"SuperUserPassword": "JLWIyl1xZNDVVx8tcVllOg==",
"HealthCheck": {
"TimeoutSeconds": 30,
"PeriodMilliseconds": 500
},
"DockerOptions": {
"PortsRangeFrom": 9500,
"PortsRangeTo": 9599,
"ImageName": "nexus.primo-rpa.ru:8000/primo-rpa/ai-server-langflow-backend:1.26.10.1",
"ContainerNamePrefix": "lfx",
"Subnet": "agent_agent_ai",
"SharedMemorySize": 2
},
"VolumeMounts": [
{
"HostPath": "/app/Primo.AI/AgentData/LangflowData",
"ContainerPath": "/app/data",
"AppendPort": true
},
{
"HostPath": "/app/Primo.AI/AgentData/LangfuseData",
"ContainerPath": "/app/langfuse",
"AppendPort": true
}
]
},
...SuperUserPassword — пароль суперпользователя исполнителя в зашифрованном виде (утилита шифрования конфигов). Том LangfuseData хранит трассы агентских систем: без него трассы теряются при каждом перезапуске исполнителя.
- Добавьте блок
DocClassifyProcess(SDC-сервер). Без него 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"
}
]
},
...- Добавьте в блок
IdpProcessпараметрVolumeMounts, чтобы IDP-сервер не скачивал модели заново при каждом запуске:
"IdpProcess": {
...
"VolumeMounts": [
{
"HostPath": "/app/Primo.AI/AgentData/IdpModels",
"ContainerPath": "/app/apps/idp/model_store"
}
]
},- Замените имена образов: теперь они указываются полным путём в реестре Nexus с тегом версии:
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/.
Образы RAG-сервера и Исполнителя агентских систем обновлены в 1.26.10.1 — поднимите их тег:
sudo sed -i -E 's#(nexus\.primo-rpa\.ru:8000/primo-rpa/ai-server-(rag-gpu|langflow-backend)):1\.26\.10\.0"#\1:1.26.10.1"#' /app/Primo.AI/Agent/appsettings.ProdLinux.jsonОстальные образы ai-server-* в конфигурации агента остаются с тегом 1.26.10.0.
- Добавьте блок
RuntimeSettings— каталог для файлаappsettings.Runtime.jsonс настройками, изменёнными на странице Управление целевой машины:
...
"RuntimeSettings": {
"Directory": "/app/Primo.AI/AgentData"
},
...Каталоги SdcModels, IdpModels и LangfuseData агент создаёт сам при первом запуске процесса.
- Настройте права доступа для Ollama:
Шаг обязателен, если на целевой машине используется Ollama. Образ ai-server-ollama теперь запускается от непривилегированного пользователя (UID 1001). Агент создаёт файлы и поддиректории в ModelTemplates от имени agent:primo-ai, поэтому для доступа Ollama используется механизм POSIX ACL с наследованием прав — он не зависит от текущего владельца файла. Директории blobs и meta дополнительно должны принадлежать непосредственно UID 1001: Ollama изменяет временные метки файлов в них, а для этого требуется реальное владение файлом, а не только ACL.
Установите пакет acl, если он отсутствует, из комплекта поставки согласно статье Установка пакета из комплекта поставки.
Настройте права доступа для UID 1001 на существующие файлы и директории:
sudo setfacl -R -m u:1001:rwx /app/Primo.AI/AgentData/ModelTemplatesУстановите default ACL для автоматического наследования прав новыми файлами и директориями:
sudo find /app/Primo.AI/AgentData/ModelTemplates -type d -exec setfacl -d -m u:1001:rwx {} +Верните владельца директории агенту:
sudo chown -R agent:primo-ai /app/Primo.AI/AgentData/ModelTemplatesСмените владельца файлов моделей на UID 1001:
sudo chown -R 1001:1001 /app/Primo.AI/AgentData/ModelTemplates/blobs/*
sudo chown -R 1001:1001 /app/Primo.AI/AgentData/ModelTemplates/meta/*Проверьте результат:
getfacl /app/Primo.AI/AgentData/ModelTemplatesВ выводе должны присутствовать строки user:1001:rwx и default:user:1001:rwx.
- Обновите файлы агента:
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/
sudo systemctl start Primo.AI.AgentОбразы
- Удалите старые образы.
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: скачайте архивы комплекта поставки из Nexus (
https://nexus.primo-rpa.ru):
Если 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/^ //')
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.
Нужен доступ с машины к
nexus.primo-rpa.ru:8000. Если открыт толькоhttps://nexus.primo-rpa.ru(порт 443), используйте вариант 1.
#!/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/^ //')
names=$(echo $images | tr ' ' '\n')
echo "Загружаемые images: $images"
echo "Externals: $externals"
for name in $names; do
tag=1.26.10.0
case "$name" in ai-server-rag-gpu|ai-server-langflow-backend) tag=1.26.10.1 ;; esac # в 1.26.10.1 обновлены только RAG-сервер и Исполнитель агентских систем
docker pull nexus.primo-rpa.ru:8000/primo-rpa/$name:$tag
done
for external in $externals; do
docker pull nexus.primo-rpa.ru:8000/$external
done
echo "Готово!"Обновите конфигурацию агента
Добавьте параметр ExtraEnvs в секцию Ollama файла /app/Primo.AI/Agent/appsettings.ProdLinux.json:
"Ollama": {
...
"PostRunCommands": [
"cp {modelFilePath} {blobFilePath}",
"ollama create {modelId} -f {modelMetaFilePath}",
"ollama run {modelId} \"\""
],
"ExtraEnvs": [ "-e OLLAMA_GO_TEMPLATE=1", "-e OLLAMA_IMAGE_MIN_TOKENS=32" ]
}Перезапустите агент:
sudo systemctl restart Primo.AI.AgentЧто дальше
После завершения обновления выполните проверку работоспособности системы.