SES. Руководство администратора: различия между версиями
Материал из Флора AI
E.Elagina (обсуждение | вклад) |
E.Elagina (обсуждение | вклад) |
||
| Строка 2: | Строка 2: | ||
Сервис предназначен для сценарных машин. | Сервис предназначен для сценарных машин. | ||
===== '''Термины и определения''' ===== | ===== '''Термины и определения''' ===== | ||
Script Engine Service (SES) – сервис, обеспечивающий работу сценарных машин. | |||
===== '''Требования к окружению''' ===== | ===== '''Требования к окружению''' ===== | ||
В процессе работы сервис взаимодействует со следующими сервисами: | В процессе работы сервис взаимодействует со следующими сервисами: | ||
* UPS – настройка осуществляется через файл /opt/ups/config.json | * UPS – настройка осуществляется через файл /opt/ups/config.json | ||
* SMC, SEE, SPR, TTS, SBS, QAS – настройка осуществляется через файл /opt/ses/config.json. | |||
* SMC, SEE, SPR, TTS, SBS, QAS | |||
===== '''Установка ses''' ===== | ===== '''Установка ses''' ===== | ||
Дистрибутив распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для | Дистрибутив распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для вашей системы в каталоге с пакетом. | ||
Перед установкой непосредственно сервиса необходимо [[PVE. Установка сервисного пакета окружения|установить сервисный пакет окружения]]. | Перед установкой непосредственно сервиса необходимо [[PVE. Установка сервисного пакета окружения|установить сервисный пакет окружения]]. | ||
| Строка 19: | Строка 18: | ||
* Загрузить последнюю версию продукта <code>curl -s "<nowiki>https://repo.connect2ai.net/api/ses/new</nowiki>" --user '[user]:[pass]' 2>&1 | bash</code> или в интерактивном режиме <code>bash -c "$(curl -s <nowiki>https://repo.connect2ai.net/api/ses</nowiki> --user '[user]:[pass]' 2>&1)"</code>. | * Загрузить последнюю версию продукта <code>curl -s "<nowiki>https://repo.connect2ai.net/api/ses/new</nowiki>" --user '[user]:[pass]' 2>&1 | bash</code> или в интерактивном режиме <code>bash -c "$(curl -s <nowiki>https://repo.connect2ai.net/api/ses</nowiki> --user '[user]:[pass]' 2>&1)"</code>. | ||
* Обновить ses <code>/opt/ses/inupdate</code> в интерактивном режиме. Или запустить с ключом: | * Обновить ses <code>/opt/ses/inupdate</code> в интерактивном режиме. Или запустить с ключом: | ||
** <code>/opt/ses/inupdate -b</code> | ** <code>/opt/ses/inupdate -b</code> – обновить до последней beta версии; | ||
** <code>/opt/ses/inupdate -r</code> | ** <code>/opt/ses/inupdate -r</code> – обновить до последней release версии; | ||
** <code>/opt/ses/inupdate -n</code> | ** <code>/opt/ses/inupdate -n</code> – обновить до последней версии (неважно beta или release). | ||
* Проверить актуальную версию продукта <code>curl -s "<nowiki>https://repo.connect2ai.net/api/ses/version</nowiki></code>. | * Проверить актуальную версию продукта <code>curl -s "<nowiki>https://repo.connect2ai.net/api/ses/version</nowiki></code>. | ||
* Посмотреть лог изменений <code>curl -s "<nowiki>https://repo.connect2ai.net/api/ses/changelog</nowiki>" --user '[user]:[pass]'</code>. | * Посмотреть лог изменений <code>curl -s "<nowiki>https://repo.connect2ai.net/api/ses/changelog</nowiki>" --user '[user]:[pass]'</code>. | ||
* Полное описание всех команд API репозитория можно найти по ссылке '''<nowiki>https://repo.connect2ai.net/api</nowiki>'''. <code>[user]:[pass]</code> | * Полное описание всех команд API репозитория можно найти по ссылке '''<nowiki>https://repo.connect2ai.net/api</nowiki>'''. <code>[user]:[pass]</code> – это тот же логин и пароль, что и от '''Nextcloud'''. | ||
* В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/): | * В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/): | ||
** echo -n <code>"[user]:[pass]"</code> > /opt/ses/.userapi (это файл авторизации в API, нужен для обновления и загрузки моделей) | ** echo -n <code>"[user]:[pass]"</code> > /opt/ses/.userapi (это файл авторизации в API, нужен для обновления и загрузки моделей) | ||
** echo -n <code>"<nowiki>http://example.com:3128</nowiki> [user] [password]"</code> > /opt/ses/.proxy (это файл конфигурации proxy необходим для обновления и загрузки моделей, при отсутствующем прямом | ** echo -n <code>"<nowiki>http://example.com:3128</nowiki> [user] [password]"</code> > /opt/ses/.proxy (это файл конфигурации proxy, необходим для обновления и загрузки моделей, при отсутствующем прямом подключении к интернету) | ||
При | При обновлении следующий список файлов и папок сохраняется: .userapi, .proxy, logs, nnets, config.json, cache, pretrained, pve, data. Сервис не требует остановки и возвращается в актуальное состояние после обновления. | ||
Не забудьте запустить сервис и включить в автозапуск в системе: | Не забудьте запустить сервис и включить в автозапуск в системе: | ||
| Строка 54: | Строка 53: | ||
|port | |port | ||
|6190 | |6190 | ||
| | |Порт API интерфейса используется в UPS — настройка servers.ses в конфиге UPS. | ||
|- | |- | ||
|logs.path | |logs.path | ||
|logs/ | |logs/ | ||
|Путь к папке логов | |Путь к папке логов. | ||
|- | |- | ||
|logs.backups | |logs.backups | ||
|10 | |10 | ||
|Количество старых сохраняемых логов | |Количество старых сохраняемых логов. | ||
|- | |- | ||
|logs.maxSize | |logs.maxSize | ||
|5242880 | |5242880 | ||
|Максимальный размер текущего лог-файла | |Максимальный размер текущего лог-файла в байтах. | ||
|- | |- | ||
|servers.{service}.url | |servers.{service}.url | ||
|"<nowiki>http://127.0.0.1:PORT/{service}</nowiki>" | |"<nowiki>http://127.0.0.1:PORT/{service}</nowiki>" | ||
| | |Адрес сервера. Возможные варианты значения service (с портами по умолчанию) следующие: smc(6181), see(6184), spr(6183), tts(6186), sbs(6185), qas(6187). | ||
|- | |- | ||
|servers.{service}.timers.connect | |servers.{service}.timers.connect | ||
|2 | |2 | ||
| | |Таймаут подключения к серверу. | ||
|- | |- | ||
|servers.{service}.timers.read | |servers.{service}.timers.read | ||
|10 | |10 | ||
| | |Таймаут получения данных с сервера. | ||
|- | |- | ||
|connectors.vk | |connectors.vk | ||
| Строка 130: | Строка 129: | ||
|tmp | |tmp | ||
|"/tmp/ses" | |"/tmp/ses" | ||
| | |Dременная папка. | ||
|} | |} | ||
| Строка 164: | Строка 163: | ||
<small> "var_1": "1234567890"</small> | <small> "var_1": "1234567890"</small> | ||
<small> } } }</small></blockquote>Если на сайте | <small> } } }</small></blockquote>Если на сайте SSL, то дополнительно поднимаете реверс-прокси для UPS (<nowiki>http://адрес_ups</nowiki>) и для websocket (адрес_ses:6191). Особенности реализации на nginx: | ||
'''Основной конфиг''' должен включать директиву <code>proxy_set_header Host $host;</code> а также заголовки CORS и обработку OPTIONS запросов. Дополнительно в нем возможно придется обработать путь "/lang" с переводом. | '''Основной конфиг''' должен включать директиву <code>proxy_set_header Host $host;</code> а также заголовки CORS и обработку OPTIONS запросов. Дополнительно в нем? возможно? придется обработать путь "/lang" с переводом. | ||
Конфиг для websocket должен обеспечивать обработку upgrade запросов (<nowiki>https://nginx.org/en/docs/http/websocket.html</nowiki>) для перенаправления websocket трафика, а также прослушивание отдельного порта, например 8091. | |||
Тогда в ссылку на виджет( | Тогда в ссылку на виджет (адрес_ups) и в конфиг канала (адрес_ses:6191) нужно будет вносить адреса, которые поддерживают SSL. Пример конфига nginx для wss: <blockquote><small>server {</small> | ||
<small> server_name ups_сервер.ru;</small> | <small> server_name ups_сервер.ru;</small> | ||
| Строка 212: | Строка 211: | ||
==='''Протоколы и порты'''=== | ==='''Протоколы и порты'''=== | ||
Сервис использует порт 6190/tcp для доступа к | Сервис использует порт 6190/tcp для доступа к API-интерфейсу и порт 6191/tcp для WebSocket-сервера. Порт 6190 может быть изменен в конфигурационном файле. | ||
==='''Журналы работы'''=== | ==='''Журналы работы'''=== | ||
| Строка 218: | Строка 217: | ||
Для проверки состояния сервиса выполните <code>sudo systemctl status ses</code>. | Для проверки состояния сервиса выполните <code>sudo systemctl status ses</code>. | ||
Журналы сервиса находятся в каталоге, определенном в конфигурационном файле (по умолчанию | Журналы сервиса находятся в каталоге, определенном в конфигурационном файле (по умолчанию – <code>/opt/ses/logs/</code>). Ошибки также пишутся в системный журнал, для просмотра можно воспользоваться командой <code>sudo journalctl -u ses</code> | ||
==='''Удаление и обновление ses'''=== | ==='''Удаление и обновление ses'''=== | ||
Для удаления выполните команду: | Для удаления выполните команду: | ||
| Строка 224: | Строка 223: | ||
<code>/opt/ses/uninstall</code> | <code>/opt/ses/uninstall</code> | ||
Команда удалит сервис и рабочий каталог, включая все файлы конфигурации. Для обновления запустите скрипт установки как указано в п 4. При этом | Команда удалит сервис и рабочий каталог, включая все файлы конфигурации. Для обновления запустите скрипт установки, как указано в п. 4. При этом обновление не изменяет файл /opt/ses/config.json. | ||
Версия от 13:11, 20 февраля 2025
Общее описание
Сервис предназначен для сценарных машин.
Термины и определения
Script Engine Service (SES) – сервис, обеспечивающий работу сценарных машин.
Требования к окружению
В процессе работы сервис взаимодействует со следующими сервисами:
- UPS – настройка осуществляется через файл /opt/ups/config.json
- SMC, SEE, SPR, TTS, SBS, QAS – настройка осуществляется через файл /opt/ses/config.json.
Установка ses
Дистрибутив распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для вашей системы в каталоге с пакетом.
Перед установкой непосредственно сервиса необходимо установить сервисный пакет окружения.
- Установка/обновление ses осуществляется скриптом
chmod +x ./ses-<версия>-<релиз>.sh && ./ses-<версия>-<релиз>.sh -iс правами администратора. Список всех ключей инсталлятора можно посмотреть, запустив инсталлятор./ses-<версия>-<релиз>.shбез ключей. - Загрузить последнюю версию продукта
curl -s "https://repo.connect2ai.net/api/ses/new" --user '[user]:[pass]' 2>&1 | bashили в интерактивном режимеbash -c "$(curl -s https://repo.connect2ai.net/api/ses --user '[user]:[pass]' 2>&1)". - Обновить ses
/opt/ses/inupdateв интерактивном режиме. Или запустить с ключом:/opt/ses/inupdate -b– обновить до последней beta версии;/opt/ses/inupdate -r– обновить до последней release версии;/opt/ses/inupdate -n– обновить до последней версии (неважно beta или release).
- Проверить актуальную версию продукта
curl -s "https://repo.connect2ai.net/api/ses/version. - Посмотреть лог изменений
curl -s "https://repo.connect2ai.net/api/ses/changelog" --user '[user]:[pass]'. - Полное описание всех команд API репозитория можно найти по ссылке https://repo.connect2ai.net/api.
[user]:[pass]– это тот же логин и пароль, что и от Nextcloud. - В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/):
- echo -n
"[user]:[pass]"> /opt/ses/.userapi (это файл авторизации в API, нужен для обновления и загрузки моделей) - echo -n
"http://example.com:3128 [user] [password]"> /opt/ses/.proxy (это файл конфигурации proxy, необходим для обновления и загрузки моделей, при отсутствующем прямом подключении к интернету)
- echo -n
При обновлении следующий список файлов и папок сохраняется: .userapi, .proxy, logs, nnets, config.json, cache, pretrained, pve, data. Сервис не требует остановки и возвращается в актуальное состояние после обновления.
Не забудьте запустить сервис и включить в автозапуск в системе:
sudo systemctl enable ses.service && sudo systemctl start ses.service
Удостоверьтесь, что сервис стартовал:
systemctl status ses.service
Разрешите доступ к портам 6157/tcp, 6170/tcp а также порту, определенном в конфиге (по умолчанию 6189/tcp) на нужном интерфейсе.
Настройка сервиса
Файл config.json
Настройка параметров сервиса ses производится в файле /opt/ses/config.json
Описание параметров приведено в таблице
| Параметр | По умолчанию | Назначение |
|---|---|---|
| port | 6190 | Порт API интерфейса используется в UPS — настройка servers.ses в конфиге UPS. |
| logs.path | logs/ | Путь к папке логов. |
| logs.backups | 10 | Количество старых сохраняемых логов. |
| logs.maxSize | 5242880 | Максимальный размер текущего лог-файла в байтах. |
| servers.{service}.url | "http://127.0.0.1:PORT/{service}" | Адрес сервера. Возможные варианты значения service (с портами по умолчанию) следующие: smc(6181), see(6184), spr(6183), tts(6186), sbs(6185), qas(6187). |
| servers.{service}.timers.connect | 2 | Таймаут подключения к серверу. |
| servers.{service}.timers.read | 10 | Таймаут получения данных с сервера. |
| connectors.vk | {} | Параметры подключения к ботам VK
{ "имя_подключения":{ "token":"Ключ доступа", "robot":"id робота", "group_id":"id сообщества ВКонтакте", "whitelist":[], "activators":[] }, ............... } |
| connectors.telegram | {} | Параметры подключения к telegram ботам
{ "имя_подключения":{ "token":"Ключ доступа", "robot":"id робота", "variables":{ "phone": "1234567890" }, "timers": { "getUpdates": 3 }, "whitelist":[], "activators":[] }, ........... } |
| tmp | "/tmp/ses" | Dременная папка. |
Эмуляция сервисов интеграции
В каталоге /opt/ses/testapi могут располагаться эмуляторы сервисов интеграции. Эмулятор будет доступен по адресу htttp://<адрес ses>/testapi/<название_сервиса>. Для создания эмулятора поместите в папку /opt/ses/testapi/ файл <название_сервиса>.reply. Содержимое файла будет отдано без изменений, как есть по адресу "http://<адрес_ses>:<порт_ses>/ses/testapi/<название_сервиса>".
Настройка каналов и виджетов
Настройка виджета для сайта
- Размещаете на сайте, например http://сайт.рф ссылку на виджет <script src="http://адрес_ups/ses/widget/js" key="xxxxxxxx"></script> (ключ придумайте сами)
- Делаете конфиг канала в файле /opt/ses/config.json в разделе connectors.web. В конфиге следующее:
"web": {
"http://сайт.рф~xxxxxxxx": { #сайт_с_виджетом~ключ
"robot": "28013d0a-...", # id робота
"color": "#4d3e33", #акцентный цвет виджета"
"host": "адрес_ses:6191", #адрес который прослушивает ws(wss) запросы
"microphone": false, #возможность отправлять/принимать аудио
"transcription": false, #возможность расшифровки аудио клиента
"variables": {
"var_1": "1234567890"
} } }
Если на сайте SSL, то дополнительно поднимаете реверс-прокси для UPS (http://адрес_ups) и для websocket (адрес_ses:6191). Особенности реализации на nginx:
Основной конфиг должен включать директиву proxy_set_header Host $host; а также заголовки CORS и обработку OPTIONS запросов. Дополнительно в нем? возможно? придется обработать путь "/lang" с переводом.
Конфиг для websocket должен обеспечивать обработку upgrade запросов (https://nginx.org/en/docs/http/websocket.html) для перенаправления websocket трафика, а также прослушивание отдельного порта, например 8091.
Тогда в ссылку на виджет (адрес_ups) и в конфиг канала (адрес_ses:6191) нужно будет вносить адреса, которые поддерживают SSL. Пример конфига nginx для wss:
server {
server_name ups_сервер.ru;
listen 6191 ssl;
include snippets/ssl-params.conf;
ssl_certificate /etc/letsencrypt/live/ups_сервер.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ups_сервер.ru/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/ups_сервер.ru/chain.pem;
client_max_body_size 1000M;
proxy_read_timeout 6000;
proxy_connect_timeout 6000;
proxy_send_timeout 6000;
send_timeout 6000;
large_client_header_buffers 8 256k;
location / {
proxy_pass http://локальныq_адрес_ses:6191;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade; } }
Протоколы и порты
Сервис использует порт 6190/tcp для доступа к API-интерфейсу и порт 6191/tcp для WebSocket-сервера. Порт 6190 может быть изменен в конфигурационном файле.
Журналы работы
Для проверки состояния сервиса выполните sudo systemctl status ses.
Журналы сервиса находятся в каталоге, определенном в конфигурационном файле (по умолчанию – /opt/ses/logs/). Ошибки также пишутся в системный журнал, для просмотра можно воспользоваться командой sudo journalctl -u ses
Удаление и обновление ses
Для удаления выполните команду:
/opt/ses/uninstall
Команда удалит сервис и рабочий каталог, включая все файлы конфигурации. Для обновления запустите скрипт установки, как указано в п. 4. При этом обновление не изменяет файл /opt/ses/config.json.