Skip to Content

Обновление 1.26.3.4 → 1.26.6.0

ℹ️

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

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

  • Обновились все образы на машине сервера и целевых машинах
  • Обновлен дистрибутив агента на Целевой машине
  • Упразднён образ ai-server-igx (функционал перенесён в ai-server-langflow-backend)
  • Упразднён образ ai-server-vllm-cpu
  • Обновился файл конфигурации nginx.conf: добавлен location для SSE-стриминга событий Конструктора агентских систем
  • Добавлен новый параметр конфигурации Inference — UnprocessedExpirationSeconds (очистка устаревших необработанных запросов)
  • Добавлены параметры *PrefetchCount в секцию RabbitMQ конфига Inference (ограничение одновременных запросов)
  • Добавлена секция LangflowScriptPreset в конфиг Api (хранилище пресетов агентских систем)
  • Добавлен volume Api_LangflowScriptPreset в docker-compose.yaml для хранения пресетов агентских систем
  • Добавлены пресеты конвейеров агентских систем
  • Добавлены новые модели: 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

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

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

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

sudo apt update && sudo apt install 7z names="ai-server-api ai-server-auth ai-server-inference ai-server-logs ai-server-ui ai-server-langflow-backend ai-server-langflow-frontend" 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 rm $name.tar.7z $name.tar done

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

names="ai-server-api ai-server-auth ai-server-inference ai-server-logs ai-server-ui ai-server-langflow-backend ai-server-langflow-frontend" for name in $names; do images+=" primo-rpa/$name" done for image in $images; do docker pull nexus.primo-rpa.ru:8005/$image docker tag nexus.primo-rpa.ru:8005/$image $image docker rmi nexus.primo-rpa.ru:8005/$image done

2. Обновите nginx.conf.

Добавьте в файл /app/Primo.AI/Api/volumes/nginx/nginx.conf следующий блок перед общим location ~ (?i)^\/api(\/.*)?:

location ~ (?i)^\/api\/langflowScripts\/job\/.+\/events$ { proxy_pass http://api; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Connection ""; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_buffering off; }
⚠️

Блок должен располагаться выше общего location ~ (?i)^\/api(\/.*)? { ... }, иначе nginx не будет его использовать — регулярные выражения в nginx проверяются в порядке объявления.

3. Настройте очистку устаревших запросов.

В файле конфигурации /app/Primo.AI/Api/volumes/conf/Inference/appsettings.ProdLinux.json добавьте секцию ClearRequestsService:

... "ClearRequestsService": { "DefaultExpirationSeconds": 3600, "UnprocessedExpirationSeconds": 86400 }, ...
ПараметрПо умолчаниюОписание
DefaultExpirationSeconds3600Время хранения обработанного запроса (сек). По умолчанию 1 час
UnprocessedExpirationSeconds86400Время хранения необработанного запроса (сек). По умолчанию 24 часа

4. Добавьте параметры PrefetchCount в конфиг Inference.

В файле конфигурации /app/Primo.AI/Api/volumes/conf/Inference/appsettings.ProdLinux.json добавьте в секцию RabbitMQ следующие параметры:

... "RabbitMQ": { ... "AgentSystemRequestEventPrefetchCount": 10, "SmartOcrRequestEventPrefetchCount": 10, "NlpRequestEventPrefetchCount": 10, "PackageRequestEventPrefetchCount": 10, "PdfGeneratingEventPrefetchCount": 10 }, ...
ПараметрПо умолчаниюОписание
AgentSystemRequestEventPrefetchCount10Кол-во одновременных запросов агентских систем в обработке
SmartOcrRequestEventPrefetchCount10Кол-во одновременных запросов Умного OCR в обработке
NlpRequestEventPrefetchCount10Кол-во одновременных запросов NLP в обработке
PackageRequestEventPrefetchCount10Кол-во одновременных запросов пакетной обработки
PdfGeneratingEventPrefetchCount10Кол-во одновременных запросов генерации PDF

Уменьшите значения PrefetchCount при нехватке ресурсов на сервере — это ограничит количество запросов, одновременно обрабатываемых сервисом Inference.

5. Добавьте секцию LangflowScriptPreset в конфиг Api.

В файле конфигурации /app/Primo.AI/Api/volumes/conf/Api/appsettings.ProdLinux.json добавьте секцию LangflowScriptPreset в блок FileUpload:

... "FileUpload": { ... "LangflowScriptPreset": { "ReadBufferSize": 10000, "ReadBufferIterationBeforeSave": 50, "Folder": "/app/Primo.AI/Api_LangflowScriptPreset", "StoreType": "FileSystem" }, ... }, ...

6. Добавьте volume для пресетов агентских систем в docker-compose.yaml.

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

- ./volumes/Api_LangflowScriptPreset:/app/Primo.AI/Api_LangflowScriptPreset

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

Имя моделиИмя файлаИсполнение
base-llm-11-30b-gguf-q4_k_me8dfc900-e183-4647-80b0-a97f242a7dbaOllama
base-llm-12-35b-gguf-q4_k_m3377b494-f686-4cef-9db1-4ffb3164cc9cOllama
base-llm-13-26b-gguf-q4_k_m1442b32b-aaee-4139-88c1-a7f313d11a09Ollama
ft-base-0.6b-fp166dd7fb3c-d58e-427c-8845-39964df50bc5vLLM (FT)
ft-base-2b-fp16ce8f072a-b6dc-4c9f-ae4e-abe826da3aa0vLLM (FT)
filenames="e8dfc900-e183-4647-80b0-a97f242a7dba \ 3377b494-f686-4cef-9db1-4ffb3164cc9c \ 1442b32b-aaee-4139-88c1-a7f313d11a09 \ 6dd7fb3c-d58e-427c-8845-39964df50bc5 \ ce8f072a-b6dc-4c9f-ae4e-abe826da3aa0" 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. Скачайте пресеты конвейеров агентских систем:

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 --content-disposition "https://disk.primo-rpa.ru/index.php/s/t9BHBjR6PP06Yax/download?path=%2FRelease%2FAI%20Server%2Fdata%2Fagsys-presets&files=$filename" -P /app/Primo.AI/Api/volumes/Api_LangflowScriptPreset/ done

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

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

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

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

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

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

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

Удалите упразднённые образы

ℹ️

Образ ai-server-igx больше не нужен — его функционал перенесён в ai-server-langflow-backend. Образ ai-server-vllm-cpu упразднён.

images=( "primo-rpa/ai-server-igx" "primo-rpa/ai-server-vllm-cpu" ) 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[@]}" 2>/dev/null || true

Образы

  • Вариант загрузки образов 1: скачайте необходимые архивы из официальной поставки AI Server:
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" 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 "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:8005.
#!/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_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 "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:8005/primo-rpa/$name docker tag nexus.primo-rpa.ru:8005/primo-rpa/$name primo-rpa/$name docker rmi nexus.primo-rpa.ru:8005/primo-rpa/$name done for external in $externals; do docker pull nexus.primo-rpa.ru:8005/externals/$external docker tag nexus.primo-rpa.ru:8005/externals/$external externals/$external docker rmi nexus.primo-rpa.ru:8005/externals/$external done echo "Готово!"