Обновление 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
done2. Обновите 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
},
...| Параметр | По умолчанию | Описание |
|---|---|---|
DefaultExpirationSeconds | 3600 | Время хранения обработанного запроса (сек). По умолчанию 1 час |
UnprocessedExpirationSeconds | 86400 | Время хранения необработанного запроса (сек). По умолчанию 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
},
...| Параметр | По умолчанию | Описание |
|---|---|---|
AgentSystemRequestEventPrefetchCount | 10 | Кол-во одновременных запросов агентских систем в обработке |
SmartOcrRequestEventPrefetchCount | 10 | Кол-во одновременных запросов Умного OCR в обработке |
NlpRequestEventPrefetchCount | 10 | Кол-во одновременных запросов NLP в обработке |
PackageRequestEventPrefetchCount | 10 | Кол-во одновременных запросов пакетной обработки |
PdfGeneratingEventPrefetchCount | 10 | Кол-во одновременных запросов генерации 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_LangflowScriptPreset7. Скачайте новые модели:
| Имя модели | Имя файла | Исполнение |
|---|---|---|
| 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-13-26b-gguf-q4_k_m | 1442b32b-aaee-4139-88c1-a7f313d11a09 | 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="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/
done8. Скачайте пресеты конвейеров агентских систем:
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/
done9. Перезапустите компоненты Api:
docker compose -f /app/Primo.AI/Api/docker-compose.yaml down && \
docker compose -f /app/Primo.AI/Api/docker-compose.yaml up -d10. Обновите 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 "Готово!"