Help:XSvacer:AIAssistant:Deploy: Difference between revisions

From Svacer Wiki
m (→‎deb/rpm: fix broken link)
(Redirected page to Help:XSvacer:AIAssistant)
Tag: New redirect
 
Line 1: Line 1:
== Активация и запуск ИИ-ассистента ==
#REDIRECT [[Help:XSvacer:AIAssistant]]
 
ИИ-ассистент реализован в виде отдельного сервиса, взаимодействующего со Svacer по REST API. Для его работы необходимо:
 
# Запустить docker-контейнер с моделью машинного обучения
# При необходимости: развернуть PostgreSQL-сервер для хранения базы данных ИИ-ассистента
# Запустить сервис ИИ-ассистента
# Активировать функциональность при запуске Svacer и настроить доступ к ИИ-ассистенту
 
=== docker compose ===
Самый простой способ деплоя — развернуть всё в докер-контейнерах, воспользовавшиcь подготовленным нами [https://svacer.ispras.ru/extra/docker-compose-with-ai.yml docker-compose] файлом:
 
<nowiki>curl -LO https://svacer.ispras.ru/extra/docker-compose-with-ai.yml</nowiki>
docker compose -f docker-compose-with-ai.yml up -d
 
=== deb/rpm ===
Если Svacer установлен из deb/rpm пакета:
 
1. Запустите docker-контейнер с моделью машинного обучения
 
docker run --rm -d --name svacerai-model -p 8000:8000 ispras/svacerai-model:latest
 
2. В PostgreSQL создайте отдельную БД для ИИ-сервера, запустив psql-консоль и выполнив команды:
 
sudo su -l postgres
psql
postgres=# create database svacerai;
postgres=# grant all privileges on database svacerai to svace;
 
(предполагается, что пользователь <code>svace</code> уже [[Help:Installation#deb/rpm|был создан]] для сервера Svacer)
 
3. В конфиг-файле ИИ-сервера <code>/etc/default/svacerai</code> укажите аргументы запуска
 
<pre>
# URL подключения к БД из второго шага
SVACERAI_PG_URL="postgres://svace:svace@127.0.0.1:5432/svacerai?sslmode=disable"
 
# адрес и порт модели из первого шага
SVACERAI_MODEL_URL="server-status:http://localhost:8000"
 
# интерфейс и порт, на котором будет запущен ИИ-сервер
SVACERAI_HOST="0.0.0.0:7001"
 
# URL сервера Svacer, который будет подключен к ИИ-серверу
SVACER_HOST="http://localhost:8080"
</pre>
 
4. Запустите systemd-сервис ИИ-сервера
 
systemctl start svacerai
 
5. В конфиг-файле сервера Svacer <code>/etc/default/svacer</code> включите фичу ИИ-ассистента, добавив флаг <code>--xsvacer.features aiAssistant</code> и укажите URL ИИ-сервера
 
<pre>
SVACER_ARGS="--pg ... --store ... --xsvacer.features aiAssistant"
# соответствует переменной SVACERAI_HOST из шага 3
XSVACER_AIASSISTANT_ASSISTANTHOSTURL=http://localhost:7001/
</pre>
 
6. Перезапустите сервер Svacer
 
systemctl restart svacer
 
== Дополнительная конфигурация ==
=== Подключение к серверу ИИ-ассистента ===
По умолчанию Svacer будет пытаться подключиться к ИИ-ассистенту по адресу <code style="white-space: pre;"><nowiki>http://localhost:8081/</nowiki></code>. Изменить этот адрес можно одним из способов:
 
# При запуске Svacer установить переменную окружения <code style="white-space: pre;"><nowiki>XSVACER_AIASSISTANT_ASSISTANTHOSTURL=http://{адрес ИИ-ассистента}:{порт}/</nowiki></code>
# В конфигурационном файле <code>svacer.cfg</code> добавить раздел
 
<pre style="white-space: pre;">
...
xsvacer:
  ...
  aiAssistant:
    assistantHostUrl: http://{адрес ИИ-ассистента}:{порт}/
...
</pre>
 
==== Запуск docker-контейнера с моделью машинного обучения ====
При запуске докер-контейнера с ИИ-моделью, можно создать и примонтировать вольюмы для постоянного хранения базы данных и кэша:
 
docker volume create svacer-ai-cache
docker volume create svacer-ai-pgdata
docker run --rm -d --name svacerai-model -p 8000:8000 -v svacer-ai-pgdata:/var/lib/postgresql/data -v svacer-ai-cache:/root/.cache ispras/svacerai-model:latest
 
* Вольюм <code style="white-space: pre;">cache</code> будет содержать кэш сервиса взаимодействия с моделью машинного обучения
* Вольюм <code style="white-space: pre;">pgdata</code> будет содержать файлы с данными встроенного в docker-образ PostgreSQL
 
=== Флаги команды запуска ИИ-ассистента ===
 
Глобальные флаги <code>svacerai-server help</code>
 
NAME:
    svacerai-server - Svace AI server
USAGE:
    svacerai-server [global options] command [command options] [arguments...]
COMMANDS:
    run
    help, h  Shows a list of commands or help for one command
GLOBAL OPTIONS:
    --debug            (default: false) [$SVACER_AI_DEBUG]
    --log-level value  Defines log level. Available: info, warn, error [$SVACER_AI_LOG_LEVEL]
    --log value        Defines path to log file. By default file /tmp/svacer-ai-*.log will be created.
    --config value    Define path to file with config in YAML format (by default svacer-ai.cfg).
    --help, -h        show help
 
{| class="wikitable"
|+
!Название
!Тип данных
!Описание
|-
|debug
|bool
|Отладочный режим логирования
|-
|log-level
|string
|Уровень логирования
|-
|log
|string
|Путь к файлу с логами
|-
|config
|string
|Путь к [[#Конфигурация по умолчанию|конфигурационному файлу]]
|}
 
Флаги запуска ИИ-ассистента <code>svacerai-server run help</code>
 
NAME:
    svacerai-server run
USAGE:
    svacerai-server run [command options] [arguments...]
OPTIONS:
    --pg value                          Defines PostgreSQL connection URL
    --host value                        Defines host name for the server
    --svacer-host value                  Defines remote Svacer host
    --ai-host value [ --ai-host value ]  Specify the address of the service with AI models in the format <nowiki>{host id}:{http://{host address}}</nowiki>
    --help, -h                          show help
 
{{Note|text=С помощью флагов запуска можно переопределять наиболее часто меняющиеся [[#Конфигурация по умолчанию|параметры конфигурации]] без необходимости создания файла <code>svacer-ai.cfg</code>}}
 
{| class="wikitable"
|+
!Название
!Тип данных
!Описание
!Формат
|-
|style="width: 80px"|pg
|string
|Строка подключения к базе данных ИИ-ассистента
|https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-URIS
|-
|host
|string
|Адрес сетевого интерфейса и порт, на которых будет запущен ИИ-ассистент
|<code>{ip адрес}:{порт}</code>
|-
|svacer-host
|string
|Url сервиса Svacer, к API которого будет обращаться ИИ-ассистент
|https://en.wikipedia.org/wiki/URL#Syntax
|-
|ai-host
|[]string
|Список адресов сервисов с моделями машинного обучения. <code>host-id</code> — идентификатор сервиса моделей в [[#Конфигурация по умолчанию|конфигурации]]
|<code><nowiki>{host id}:{url сервиса моделей}</nowiki></code>
|}
 
{{Note|text=При использовании [[#Конфигурация по умолчанию|конфигурации по умолчанию]], <code>{host id}</code> должен быть равен <code>server-status</code>}}
 
Пример:
<nowiki>svacerai-server run --pg postgres://svace:svace@127.0.0.1:5432/svacer_ai --host localhost:8095 --svacer-host http://localhost:8094 --ai-host server-status:http://localhost:7000</nowiki>
 
=== Конфигурация ИИ-ассистента ===
 
Управление настройками ИИ-ассистента осуществляется с помощью конфигурационного yaml-файла <code>svacer-ai.cfg</code> в рабочей директории сервиса.
 
{| class="wikitable"
|+
!Название
!Тип данных
!Описание
!Значение в конфигурации по умолчанию
|-
|db/url
|string
|Строка подключения к базе данных ИИ-ассистента
|<code>postgres://postgres:postgres@localhost:5432/svacer_ai?sslmode=disable</code>
|-
|http/host
|string
|Адрес сетевого интерфейса и порт, на которых будет запущен ИИ-ассистент
|<code>localhost:8081</code>
|-
|http/svacerHostUrl
 
ai/svacerHostUrl
|string
|Url сервиса Svacer, к API которого будет обращаться ИИ-ассистент
|<code><nowiki>http://localhost:8080/</nowiki></code>
|-
|http/svacerClientTlsCfg?
 
ai/svacerClientTlsCfg
|[https://pkg.go.dev/crypto/tls#Config *tls.Config]
|Настройки безопасного подключения к Svacer
|<pre style="white-space: pre;">
svacerClientTlsCfg:
  insecureSkipVerify: true
</pre>
|-
|ai/svacerReviewCommentTemplate
|string
|Шаблон для формирования комментария к разметке выполненной с помощью ИИ-ассистента. В шаблон передаётся структура <code>processing.MarkerResult</code>
|См. [[#Конфигурация по умолчанию|конфигурацию по умолчанию]]
|-
|ai/svacerReviewTags
|[]string
|Список названий меток, которые будут установлены маркерам, размеченным с помощью ИИ-ассистента
|<code>[AI]</code>
|-
|hosts
|map[string]object
|Список параметров подключения к сервисам с моделями машинного обучения, которые будет использовать ИИ-ассистент
|<pre style="white-space: pre;">
{id сервиса моделей}:
  {параметры подключения}
  (см. описание ниже)
</pre>
|}
 
=== Параметры подключения сервиса модели машинного обучения ===
 
Параметры подключения сервисов модели задаются в виде map, ключами которой являются идентификаторы сервисов. В значении содержатся следующие параметры:
 
{| class="wikitable"
|+
!Название
!Тип данных
!Описание
!Значение в конфигурации по умолчанию
|-
|url
|string
|Url сервиса с моделями машинного обучения
|<code><nowiki>http://localhost:7000</nowiki></code>
|-
|settings/requestBatchSize
|int
|Количество предупреждений, отправляемых для анализа моделью за раз
|<code>512</code>
|-
|settings/httpMultipartParameterName
 
settings/httpMultipartFileName
 
settings/httpMultipartContentType
|string
|Параметра multipart-запроса вызова модели
|<pre style="white-space: pre;">
httpMultipartParameterName: "file"
httpMultipartFileName: "file.csv"
httpMultipartContentType: "application/vnd.ms-excel"
</pre>
|-
|resources/modelList
 
resources/modelInference
 
resources/logs
|string
|Сопоставление названий ресурсов сервиса моделей
|<pre style="white-space: pre;">
modelList: "/models_info"
 
modelInference: "/use_model_for_file"
 
logs: "/log_file"
</pre>
|-
|defaults/dataCollector/csvSeparator
|string
|Разделитель csv-файла, который отправляется в сервис моделей
|<code>","</code>
|-
|defaults/dataCollector/additionalLineNumber
|int
|Количество строк исходного кода, которые добавляются до и после строки предупреждения при отправке в сервис моделей
|<code>0</code>
|-
|defaults/dataCollector/csvColumns
|[]string
|Названия столбцов csv-файла, который отправляется в сервис моделей
|<code>[id, warnClass, code]</code>
|-
|defaults/interpretation/defaultValue
 
defaults/interpretation/defaultValue
 
defaults/interpretation/defaultValue
|string
|Названия статусов, которые присваиваются результату вызова модели
|<pre style="white-space: pre;">
defaultValue: "Undecided"
 
leftClassValue: "False Positive"
 
rightClassValue: "Confirmed"
</pre>
|}
 
=== Конфигурация по умолчанию ===
 
Данная конфигурация применяется по умолчанию при запуске ИИ-ассистента, если отсутствует конфигурационный файл <code>svacer-ai.cfg</code>.
 
{{Note|type=error|text=Если файл <code>svacer-ai.cfg</code> существует, в нём должны содержаться все указанные параметры конфигурации.'''}}
 
<pre style="white-space: pre;">
varSvacerHostUrl: &svacerHostUrl "http://localhost:8080/"
varSvacerClientTlsCfg: &svacerClientTlsCfg
  insecureSkipVerify: true
db:
  url: "postgres://postgres:postgres@localhost:5432/svacer_ai?sslmode=disable"
http:
  host: "localhost:8081"
  svacerHostUrl: *svacerHostUrl
  svacerClientTlsCfg: *svacerClientTlsCfg
ai:
  svacerHostUrl: *svacerHostUrl
  svacerClientTlsCfg: *svacerClientTlsCfg
  svacerReviewCommentTemplate: |+
    `Timestamp: {{now.UTC.Format "2006-01-02T15:04:05Z"}}`
 
    `AI model: {{.Pipeline.Name}}`
 
    `Confidence level: {{ printf "%.2f" (index .Interpretation 0).Confidence }}`
 
  svacerReviewTags:
    - AI
  hosts:
    server-status:
      url: "http://localhost:7000"
      settings:
        requestBatchSize: 512
        httpMultipartParameterName: "file"
        httpMultipartFileName: "file.csv"
        httpMultipartContentType: "application/vnd.ms-excel"
      resources:
        modelList: "/models_info"
        modelInference: "/use_model_for_file"
        logs: "/log_file"
      defaults:
        dataCollector:
          csvSeparator: ","
          additionalLinesNumber: 0
          csvColumns:
            - "id"
            - "warnClass"
            - "code"
        interpretation:
          defaultValue: "Undecided"
          leftClassValue: "False Positive"
          rightClassValue: "Confirmed"
</pre>

Latest revision as of 17:26, 1 December 2025