|
|
| 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>
| |