UPS. Описание API: различия между версиями
Материал из Флора AI
KorolkovS (обсуждение | вклад) Нет описания правки Метка: визуальный редактор отключён |
|||
| (не показано 186 промежуточных версий 6 участников) | |||
| Строка 8: | Строка 8: | ||
|'''<small>servicetype</small>''' | |'''<small>servicetype</small>''' | ||
|<small>запрос</small> | |<small>запрос</small> | ||
|<small>Тип сервиса. Возможные значения: spr, smc, see, sbs, tts</small> | |<small>Тип сервиса. Возможные значения: spr, smc, see, sbs, tts.</small> | ||
|- | |- | ||
|'''<small>servertype</small>''' | |'''<small>servertype</small>''' | ||
|<small>запрос</small> | |<small>запрос</small> | ||
|<small>Тип группы серверов. Возможные значения: trainer (серверы обучения), cluster (рабочие серверы)</small> | |<small>Тип группы серверов. Возможные значения: trainer (серверы обучения), cluster (рабочие серверы).</small> | ||
|- | |- | ||
|'''<small>model</small>''' | |'''<small>model</small>''' | ||
|<small>запрос</small> | |<small>запрос</small> | ||
|<small>Название модели</small> | |<small>Название модели.</small> | ||
|- | |- | ||
|'''<small>modeltype</small>''' | |'''<small>modeltype</small>''' | ||
|<small>запрос</small> | |<small>запрос</small> | ||
|<small>Тип модели. Возможные значения: '''future''' | |<small>Тип модели. Возможные значения: '''future''' — планируемая/черновик, '''current''' — текущая/рабочая, '''previous''' — архивная.</small> | ||
|- | |- | ||
|'''<small>error</small>''' | |'''<small>error</small>''' | ||
|<small>ответ</small> | |<small>ответ</small> | ||
|<small>Флаг ошибки</small> | |<small>Флаг ошибки.</small> | ||
|- | |- | ||
|'''<small>message</small>''' | |'''<small>message</small>''' | ||
|<small>ответ</small> | |<small>ответ</small> | ||
|<small>Информационное сообщение</small> | |<small>Информационное сообщение.</small> | ||
|} | |} | ||
===== '''"/external modules" методы внешних модулей''' ===== | |||
В этом разделе будут методы соответствующим образом оформленных [[UPS. Руководство администратора#Установка модулей для UPS|внешних модулей]] | |||
===== '''/auth: методы авторизации''' ===== | ===== '''/auth: методы авторизации''' ===== | ||
{| class="wikitable | {| class="wikitable" style="width: 110%" | ||
! | |+ | ||
! | !style="color:green;width: 15%" |'''POST/auth/access''' | ||
! | ! colspan="3" style="width: 85%" |Получение токенов доступа. <small>Токен доступа определяет, какие из методов будут доступны конкретному пользователю. Формируется на основании роли. Дополнительный входной параметр во всех методах, кроме перечисленных в разделе «nopassword» конфигурационного файла. Время действия токена определяется параметром auth.accessLifeTime конфигурационного файла.</small> | ||
! | |- | ||
! | |colspan="2" style="width: 50%" | | ||
* <small>'''username''' — логин</small> | |||
* <small>'''password''' — пароль</small> | |||
|colspan="2" style="width: 50%" |<small>{</small> | |||
<small>"x-access-token": "XXXXXXXXXXXXXXXXXXXX",</small> | |||
<small>"x-refresh-token": "XXXXXXXXXXXXXXXXXXXX"</small> | |||
<small>}</small> | |||
|- | |||
!style="color:green;width: 15%" |'''POST/auth/dataset/add''' | |||
! colspan="3" style="width: 85%" |Добавление dataset (набора данных). <small>Dataset (набор данных) используется для ограничения доступа к данным. В ответе метод вернет id созданного набора данных.</small> | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* <small>data — json строка вида: { "name": "название нового набора" }</small> | |||
|colspan="2" style="width: 50%" |<small>{</small> | |||
<small>"error": 0</small> | |||
<small>"message": "success",</small> | |||
<small>"dataset_id": "XXXXXXXXXXXXX"</small> | |||
<small>}</small> | |||
|- | |||
!style="color:red;width: 15%" |'''DELETE/auth/dataset/delete/{id}''' | |||
! colspan="3" style="width: 85%" |Удаление dataset (набора данных). | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* <small>'''id''' — идентификатор набора данных</small> | |||
|colspan="2" style="width: 50%" |<small>{</small> | |||
<small>"error": 0,</small> | |||
<small>"message": "success"</small> | |||
<small>}</small> | |||
|- | |||
!style="color:green;width: 15%" |'''POST/auth/dataset/modify/{id}''' | |||
! colspan="3" style="width: 85%" |Переименование dataset (набора данных). <small>Метод меняет все параметры набора данных, но на данный момент времени у набора данных, кроме id, только один параметр — наименование.</small> | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* <small>'''id''' — идентификатор набора данных</small> | |||
* <small>'''data''' — JSON c новыми параметрами</small> | |||
|colspan="2" style="width: 50%" |<small>{</small> | |||
<small>"error": 0,</small> | |||
<small>"message": "success"</small> | |||
<small>}</small> | |||
|- | |||
!style="color:blue;width: 15%" |'''GET/auth/datasets''' | |||
! colspan="3" style="width: 85%" |Получение списка наборов данных. | |||
|- | |- | ||
|<small> | |colspan="2" style="width: 50%" |<small>Нет входных параметров</small> | ||
<small> | |colspan="2" style="width: 50%" |<small>[</small> | ||
<small>{"id": "XXXXXXXXXXXXXXXXXX",</small> | |||
<small>"name": "XXX"},</small> | |||
<small>{"id": "0",</small> | |||
<small>"name": "По умолчанию"}</small> | |||
<small>]</small> | |||
|- | |- | ||
| | !style="color:blue;width: 15%" |'''GET/auth/refresh''' | ||
! colspan="3" style="width: 85%" |Обновление токенов доступа. <small>Время, в течение которого можно обновить доступ, регулируется параметром auth.refreshLifeTime конфигурационного файла. Служебный метод, используется в основном в веб-интерфейсе, чтобы не запрашивать лишний раз пароль.</small> | |||
|- | |- | ||
|<small>DELETE</small><small>/auth/dataset/delete/{id}</small> | |colspan="2" style="width: 50%" | | ||
|<small> | * <small>'''x-refresh-token''' — токен обновления доступа</small> | ||
|id - идентификатор | |colspan="2" style="width: 50%" |<small>{</small> | ||
|{ | |||
"error": 0, | <small>"x-access-token": "XXXXXXXXXXXXXXXXXXXX",</small> | ||
"message": "success" | |||
} | <small>"x-refresh-token": "XXXXXXXXXXXXXXXXXXXX"</small> | ||
| - | |||
<small>}</small> | |||
|- | |||
!style="color:blue;width: 15%" |'''GET/auth/rights''' | |||
! colspan="3" style="width: 85%" |Получение списка прав доступа. <small>Служебный метод — по токену получает название роли и все права доступа этой роли, а также общедоступные методы.</small> | |||
|- | |||
|colspan="2" style="width: 50%" |<small>Нет входных параметров</small> | |||
|colspan="2" style="width: 50%" |<small><<<{ "РОЛЬ": [</small> | |||
<small> "GET:/......" ],</small> | |||
<small> "nopassword": [ "GET:/.......",</small> | |||
<small>...............</small> | |||
<small><<<...............</small> | |||
<small> "POST:/......." ] }</small> | |||
|- | |||
!style="color:green;width: 15%" |'''POST/auth/role/add''' | |||
! colspan="3" style="width: 85%" |Создание роли. <small>Служебный метод — используется веб-интерфейсом при создании роли.</small> | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* <small>'''data''' — JSON с параметрами роли:{</small> | |||
<small>"name": "проверка создания",</small> | |||
<small>"rights": [ "набор прав через запятую" ]</small> | |||
<small>}</small> | |||
|colspan="2" style="width: 50%" |<small>{</small> | |||
<small>"error": 0, "message": "success", "role_id": "a7e68bb83169f864c2fc868401b5250c"</small> | |||
<small>}</small> | |||
|- | |||
!style="color:red;width: 15%" |'''DELETE/auth/role/delete/{id}''' | |||
! colspan="3" style="width: 85%" |Удаление роли. | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* <small>'''id''' роли</small> | |||
|colspan="2" style="width: 50%" |<small>{"error": 0,"message": "success"}</small> | |||
|- | |||
!style="color:green;width: 15%" |'''POST/auth/role/modify/{id}''' | |||
! colspan="3" style="width: 85%" |Изменение роли. <small>Параметры как при создании роли. Роль будет переписана.</small> | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* <small>'''id''' роли</small> | |||
* <small>'''data''' — JSON с параметрами роли:{</small> | |||
<small>"name": "проверка создания",</small> | |||
<small>"rights": [ "набор прав через запятую" ]</small> | |||
<small>}</small> | |||
|colspan="2" style="width: 50%" |<small>{"error": 0,"message": "success"}</small> | |||
|- | |||
!style="color:blue;width: 15%" |'''GET/auth/roles''' | |||
! colspan="3" style="width: 85%" |Получение списка ролей. | |||
|- | |||
|colspan="2" style="width: 50%" |<small>Нет входных параметров</small> | |||
|colspan="2" style="width: 50%" |<small>[{</small> | |||
<small>"id": "XXXXXXXXXXX",</small> | |||
<small>"name": "имя роли",</small> | |||
<small>"rights": [ "набор прав через запятую" ]</small> | |||
<small>},............]</small> | |||
|- | |||
!style="color:green;width: 15%" |'''POST/auth/user/add''' | |||
! colspan="3" style="width: 85%" |Создание нового пользователя. <small>Метод вернет или id нового пользователя или описание ошибки</small> | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* <small>'''data''' — json строка {</small> | |||
<small>"username": "login_name", "fullname": "Отображаемое Имя","password": "XXXXX","role": "role_id",</small> | |||
<small>"dataset": "default dataset id", "datasets": [ "dataset id", ................. ] }</small> | |||
|colspan="2" style="width: 50%" |<small>{"error": 0,</small> | |||
<small>"message": "success",</small> | |||
<small>"user_id": "XXXXXXXXXXXXXXXX"}</small> | |||
|- | |||
!style="color:red;width: 15%" |'''DELETE/auth/user/delete/{id}''' | |||
! colspan="3" style="width: 85%" |Удаление пользователя | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* <small>'''user_id''' - идентификатор пользователя</small> | |||
|colspan="2" style="width: 50%" |<small>{"error": 0,"message": "success"}</small> | |||
|- | |||
!style="color:blue;width: 15%" |'''GET/auth/user/get/{id}''' | |||
! colspan="3" style="width: 85%" |Получение параметров пользователя | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* <small>'''user_id''' — идентификатор пользователя</small> | |||
|colspan="2" style="width: 50%" |<small>{"id": "XXXXXXXXXX",</small> | |||
<small>"username": "loginname",</small> | |||
<small>"fullname": "Full Name",</small> | |||
<small>"role": "0",</small> | |||
<small>"dataset": "0",</small> | |||
<small>"datasets": [ "0", "2dc34d3454243522e5407d3a170815a2" ] }</small> | |||
|- | |||
!style="color:blue;width: 15%" |'''GET/auth/user/info''' | |||
! colspan="3" style="width: 85%" |Получение параметров пользователя по его токену доступа. <small>Служебный метод - для предоставления прав текущему пользователю по его токену</small> | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* <small>'''x-access-token'''</small> | |||
|colspan="2" style="width: 50%" |<small>{"id": "XXXXXXXXXX",</small> | |||
<small>"username": "loginname",</small> | |||
<small>"fullname": "Full Name",</small> | |||
<small>"role": "0",</small> | |||
<small>"dataset": "0",</small> | |||
<small>"datasets": [ "0", "2dc34d3454243522e5407d3a170815a2"] }, "rights": [..........] }</small> | |||
|- | |||
!style="color:blue;width: 15%" |'''GET/auth/user/list''' | |||
! colspan="3" style="width: 85%" |Получение списка пользователей с их параметрами. <small>Тоже самое что и в методе GET /auth/user/info, только для всех пользователей</small> | |||
|- | |||
|colspan="2" style="width: 50%" |<small>Нет входных параметров</small> | |||
|colspan="2" style="width: 50%" |[ | |||
<small>{"id": "XXXXXXXXXX",</small> | |||
<small>"username": "loginname",</small> | |||
<small>"fullname": "Full Name",</small> | |||
<small>"role": "0",</small> | |||
<small>"dataset": "0",</small> | |||
<small>"datasets": [ "0", "2dc34d3454243522e5407d3a170815a2"] }, "rights": [..........] },</small> | |||
...... | |||
] | |||
|- | |||
!style="color:green;width: 15%" |'''POST/auth/user/modify/{id}''' | |||
! colspan="3" style="width: 85%" |Изменение параметров пользователя | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* <small>'''data''' — параметры пользователя как при создании</small> | |||
* <small>'''id''' — идентификатор пользователя</small> | |||
|colspan="2" style="width: 50%" |<small>{ "error": 0,</small> | |||
<small>"message": "success"}</small> | |||
|- | |||
!style="color:green;width: 15%" |'''POST/auth/user/password''' | |||
! colspan="3" style="width: 85%" |Смена пароля пользователя по его токену доступа. | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* '''<small>password</small>''' | |||
|colspan="2" style="width: 50%" |{ "error": 0,"message": "success"} | |||
|- | |||
!style="color:green;width: 15%" |'''POST/auth/userlog''' | |||
! colspan="3" style="width: 85%" |Получение действий пользователя за период времени по его токену | |||
|- | |||
|colspan="2" style="width: 50%" | | |||
* <small>'''from''' — начало периода в формате "%Y-%m-%d %H:%M"</small> | |||
* <small>'''to''' — конец периода в формате "%Y-%m-%d %H:%M"</small> | |||
|colspan="2" style="width: 50%" |<small>{</small> | |||
<small> "error": 0,</small> | |||
<small> "message": "success",</small> | |||
<small> "data": [</small> | |||
<small> [</small> | |||
<small> "время",</small> | |||
<small> "id",</small> | |||
<small> "метод",</small> | |||
<small> {измененные данные в формате метода}</small> | |||
<small> ],</small> | |||
<small> [</small> | |||
<small> "время",</small> | |||
<small> "id",</small> | |||
<small> "метод",</small> | |||
<small> {измененные данные в формате метода}</small> | |||
<small> ],</small> | |||
<small> .........</small> | |||
<small>}</small> | |||
|- | |||
!style="color:blue;width: 15%" |'''GET/auth/version''' | |||
! colspan="3" style="width: 85%" |Получение версии сервиса ups | |||
|- | |||
|colspan="2" style="width: 50%" |<small>Нет входных параметров</small> | |||
|colspan="2" style="width: 50%" |<small>{</small> | |||
<small> "version": "4.082 release"</small> | |||
<small>}</small> | |||
|} | |} | ||
===== '''/lang: методы мультиязычности''' ===== | ===== '''/lang: методы мультиязычности''' ===== | ||
{| class="wikitable | {| class="wikitable" style="width: 110%" | ||
! | |+ | ||
! | !style="color:blue;width: 15%" |'''GET/lang/''' | ||
! | ! colspan="3" style="width: 85%" |Выводит информацию о переводе элементов интерфейса на текущий язык | ||
! | |- | ||
! | | colspan="2" style="width: 50%" |<small>Нет входных параметров</small> | ||
| colspan="2" style="width: 50%" |<small>{ "see":"Сущности",</small> | |||
<small>"smc":"Классификатор",</small> | |||
<small>... }</small> | |||
|- | |||
!style="color:blue;width: 15%" |'''GET/lang/wallpaper''' | |||
! colspan="3" style="width: 85%" |Отдает случайный фон рабочего стола в виде jpeg из каталога «wallpapers» на сервере ups | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Нет входных параметров</small> | |||
| colspan="2" style="width: 50%" |<small>image/jpeg</small> | |||
|} | |||
===== '''/server: получение информации о серверах''' ===== | |||
{| class="wikitable" style="width: 110%" | |||
|+ | |||
!style="color:blue;width: 15%" |GET/server/get/addresses/{servicetype} | |||
! colspan="3" style="width: 85%" |Вывод информации о серверах, обслуживающих данный сервис, а также настроенных параметров обращения к данным серверам. | |||
<small>'''trainer''' — сервер обучения, '''cluster''' — рабочие серверы, '''connect''' — время на подключение, '''read''' — время на ответ,</small> | |||
<small>'''failed''' — время пребывания в сбойных, '''install''' — время на установку модели, '''info''' — время на получение информации о модели,</small> | |||
<small>'''counter''' — счетчик запросов, '''current''' — индекс последнего опрошенного cluster-сервера</small> | |||
<small>'''fail''' — массив сбойных серверов со временем постановки в сбой.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
| colspan="2" style="width: 50%" |<small>{ "trainer": "<nowiki>http://127.0.0.1:6181</nowiki>",</small> | |||
<small> "cluster": [ "<nowiki>http://127.0.0.1:6181</nowiki>" ],</small> | |||
<small> "timers": { "connect": 0.5,</small> | |||
<small> "read": 1,</small> | |||
<small> "failed": 600,</small> | |||
<small> "install": 60,</small> | |||
<small> "info": 3 },</small> | |||
<small> "counter": 0,</small> | |||
<small> "current": 0,</small> | |||
<small> "fail": {"<nowiki>http://127.0.0.1:6181</nowiki>":1686295678} }</small> | |||
|- | |||
!style="color:blue;width: 15%" |GET/server/get/models/{servicetype}/{servertype} | |||
! colspan="3" style="width: 85%" |Вывод информации о моделях указанного сервиса на каждом сервере указанного типа. <small>Вывод представляет собой массив URL-серверов, для каждого из которых указан список моделей.</small> | |||
|- | |- | ||
|<small> | | colspan="2" style="width: 50%" | | ||
<small> | * <small>'''servicetype''' — тип сервиса</small> | ||
|<small> | |||
* <small>'''servertype''' — тип серверов</small> | |||
| colspan="2" style="width: 50%" |<small>{ "<nowiki>http://127.0.0.1:6181</nowiki>": [</small> | |||
<small> "model1",</small> | |||
<small> ...</small> | |||
<small> "modelN"</small> | |||
<small> ], ... }</small> | |||
|} | |} | ||
===== '''/ | ===== '''/model: методы работы с моделями''' ===== | ||
{| class="wikitable | {| class="wikitable" style="width: 110%" | ||
! | |+ | ||
! | !style="color:green;width: 15%" |'''<small>POST/model/add/{servicetype}/{model}</small>''' | ||
! colspan="3" style="width: 85%" |Создание пустой модели в указанном сервисе. <small>Доступно для следующих сервисов: '''smc''', '''see''', '''spr'''.</small> | |||
! | |- | ||
! | | colspan="2" style="width: 30%" | | ||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
| colspan="2" style="width: 70%" |<small>{</small> | |||
<small>"error":0,</small> | |||
<small>"message":"success"</small> | |||
<small>}</small> | |||
|- | |||
!style="color:green;width: 15%" |'''<small>POST/model/apply/{servicetype}/{model}</small>''' | |||
! colspan="3" style="width: 85%" |Применение установленной на рабочих серверах модели. <small>После применения модель становится доступна для штатного режима работы. Доступно для следующих сервисов: '''smc''', '''see''', '''spr'''.</small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
| | | colspan="2" style="width: 50%" |<small>{</small> | ||
* <small>'''servicetype''' | |||
<small>"error":0,</small> | |||
<small>"message":"success"</small> | |||
< | <small>}</small> | ||
|- | |||
!style="color:red;width: 15%" |'''<small>DELETE/model/delete/{servicetype}/{model}</small>''' | |||
! colspan="3" style="width: 85%" |Полностью удаляет модель из системы и со всех управляемых серверов. <small>Доступно для следующих сервисов: smc, see, spr.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
| colspan="2" style="width: 50%" |<small>{</small> | |||
<small>"error":0,</small> | |||
<small>"message":"success"</small> | |||
< | <small>}</small> | ||
|- | |||
!style="color:blue;width: 15%" |'''<small>GET/model/errors/{servicetype}/{model}/{modeltype}</small>''' | |||
! colspan="3" style="width: 85%" |Запрос на получение списка ошибок модели после тестирования/обучения. <small>Доступен для сервисов see и smc. Ответ содержит список вложенных списков. В каждом три значения: правильное значение, предсказанное моделью значение и начальные данные (фраза).</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''type''' — тип ошибок в выводе</small> | |||
<small>'''- train''' ошибки обучения</small> | |||
<small>'''- test''' ошибки тестирования</small> | |||
< | <small>'''- mark''' ошибки авторазметки</small> | ||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
* <small>'''modeltype''' — тип модели</small> | |||
| colspan="2" style="width: 50%" |<small>[ [true, predicted, phrase],</small> | |||
< | <small>... ]</small> | ||
|- | |||
!style="color:blue;width: 15%" |'''<small>GET/model/export/{servicetype}/{model}/{modeltype}</small>''' | |||
! colspan="3" style="width: 85%" |Экспорт модели, модель скачивается в виде zip-архива. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
* <small>'''modeltype''' — тип модели</small> | |||
| colspan="2" style="width: 50%" |<small>Файл model.zip, где model — название модели</small> | |||
|- | |||
! style="color:red;width: 15%" |'''<small>DELETE/model/handler/{servicetype}/{model}</small>''' | |||
! colspan="3" style="width: 85%" |Удаление постобработчика из модели типа future. <small>Более подробно об обработчике см. руководства пользователя [[SMC. Руководство пользователя|smc]] и [[SEE. Руководство пользователя|see]].</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
| colspan="2" style="width: 50%" |<small>{"error":0,</small> | |||
<small>"message":"success"</small> | |||
< | <small>}</small> | ||
|- | |||
! style="color:green;width: 15%" |'''<small>POST/model/handler/{servicetype}/{model}</small>''' | |||
! colspan="3" style="width: 85%" |Отправка файла-постобработчика в указанную модель типа future. <small>Обработчик становится активным сразу после успешной отправки. Более подробно об обработчике см. руководства пользователя [[SMC. Руководство пользователя|smc]] и [[SEE. Руководство пользователя|see]].</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
* <small>'''handler''' — файл, содержащий программный код python постобработчика</small> | |||
| colspan="2" style="width: 50%" |<small>{"error":0,</small> | |||
<small>"message":"success"</small> | |||
< | <small>}</small> | ||
|- | |||
!style="color:blue;width: 15%" |'''<small>GET/model/handler/{servicetype}/{model}</small>''' | |||
! colspan="3" style="width: 85%" |Получение файла-постобработчика из модели типа future. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
| colspan="2" style="width: 50%" |<small>Файл handler.py</small> | |||
|- | |||
!style="color:red;width: 15%" |'''<small>DELETE/model/handler/{servicetype}/{model}/{modeltype}</small>''' | |||
! colspan="3" style="width: 85%" |Удаление постобработчика в указанной модели указанного типа. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
* <small>'''modeltype''' — тип модели</small> | |||
| colspan="2" style="width: 50%" |<small>{</small> | |||
<small>"error":0,</small> | |||
<small>"message":"success"</small> | |||
<small>}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''<small>POST/model/handler/{servicetype}/{model}/{modeltype}</small>''' | |||
! colspan="3" style="width: 85%" |Отправка файла-постобработчика в указанную модель указанного типа. <small>Становится активным сразу после успешной отправки.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''modeltype''' — тип модели</small> | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
* <small>'''handler''' — файл, содержащий программный код python постобработчика</small> | |||
| colspan="2" style="width: 50%" |<small>{</small> | |||
<small>"error":0,</small> | |||
<small>"message":"success"</small> | |||
<small>}</small> | |||
| | |- | ||
! style="color:blue;width: 15%" |'''<small>GET/model/handler/{servicetype}/{model}/{modeltype}</small>''' | |||
! colspan="3" style="width: 85%" |Получение файла-постобработчика из указанной модели указанного типа. | |||
|- | |||
* <small>''' | | colspan="2" style="width: 50%" | | ||
* <small>''' | * <small>'''servicetype''' — тип сервиса</small> | ||
* <small>''' | * <small>'''model''' — название модели</small> | ||
* <small>'''modeltype''' — тип модели</small> | |||
| colspan="2" style="width: 50%" |<small>Файл handler.py</small> | |||
|- | |||
!style="color:green;width: 15%" |'''<small>POST/model/import/{servicetype}/{model}</small>''' | |||
! colspan="3" style="width: 85%" |Импортирует модель в черновик (modeltype=future) | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
| | * <small>'''zip-model''' — zip с файлами модели</small> | ||
* <small>'''servicetype''' | | colspan="2" style="width: 50%" |<small>{</small> | ||
* <small>''' | |||
<small>"error":0,</small> | |||
<small>"message":"success"</small> | |||
< | <small>}</small> | ||
|- | |||
!style="color:blue;width: 15%" |'''<small>GET/model/info/{servicetype}</small>''' | |||
! colspan="3" style="width: 85%" |Получение информации о всех моделях указанного сервиса. <small>Аналогичен методу GET /info/{servicetype}/{model}, но выводит информацию обо всех моделях.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
| colspan="2" style="width: 50%" |<small>{ "model1": {</small> | |||
<small> "previous": null,</small> | |||
<small> "current": null,</small> | |||
<small> "future": {</small> | |||
<small> "status": "empty",</small> | |||
<small> ...</small> | |||
= | <small> } }, ... }</small> | ||
|- | |||
!style="color:blue;width: 15%" |'''<small>GET/model/info/{servicetype}/{model}</small>''' | |||
! colspan="3" style="width: 85%" |Получение информации о каждом типе (modeltype) указанной модели. <small>Итоговый массив содержит переменные типа modeltype, в каждой из который содержится информация о модели.</small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
| colspan="2" style="width: 50%" |<small>{ "previous": null,</small> | |||
| | |||
* <small>'''servicetype''' | <small> "current": {</small> | ||
* <small>'''model''' | |||
|< | <small> "status": "trained",</small> | ||
< | |||
<small> ... },</small> | |||
<small> "future": {</small> | |||
<small> "status": "trained",</small> | |||
< | <small> ... } }</small> | ||
| <small> | |- | ||
!style="color:green;width: 15%" |'''<small>POST/model/install/{servicetype}/{model}</small>''' | |||
! colspan="3" style="width: 85%" |Установка импортированной или обученной модели на рабочих серверах. | |||
<small>Доступно для следующих сервисов: '''smc''', '''see''', '''spr'''.</small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
| colspan="2" style="width: 50%" |<small>{</small> | |||
| | |||
* <small>'''servicetype''' | <small>"error":0,</small> | ||
* <small>'''model''' | |||
| | |||
<small>"message":"success"</small> | |||
< | <small>}</small> | ||
| <small> | |- | ||
!style="color:blue;width: 15%" |'''<small>GET/model/log/{servicetype}/{model}/{modeltype}</small>''' | |||
! colspan="3" style="width: 85%" |Выводит лог обучения и тестирования модели. <small>Доступно для следующих сервисов: '''smc''', '''see'''.</small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''model''' — название модели</small> | |||
* <small>'''modeltype''' — тип модели</small> | |||
| | | colspan="2" style="width: 50%" |<small>[</small> | ||
* <small>'''servicetype''' | |||
* <small>'''model''' | |||
<small> "training",</small> | |||
< | <small> "preparing data",</small> | ||
<small> "tokenizing",</small> | |||
<small> ...</small> | |||
<small>]</small> | |||
|- | |- | ||
|<small>POST | !style="color:green;width: 15%" |'''<small>POST/model/restore/{servicetype}/{model}</small>''' | ||
! colspan="3" style="width: 85%" |Откат модели. <small>Делает текущую рабочую модель черновиком (future), рабочие серверы после выполнения данного метода продолжают уже с возвращенной моделью. Схематично действия над modeltype в результате выполнения данного метода можно представить так:</small> | |||
|<small> | |||
* '''<small>current -> future</small>''' | * '''<small>current -> future</small>''' | ||
* '''<small>previous -> current</small>''' | * '''<small>previous -> current</small>''' | ||
* '''<small>null -> previous</small>''' | * '''<small>null -> previous</small>''' | ||
| | |- | ||
*<small>'''servicetype''' | | colspan="2" style="width: 50%" | | ||
* <small>'''model''' | * <small>'''servicetype''' — тип сервиса</small> | ||
| | * <small>'''model''' — название модели</small> | ||
| colspan="2" style="width: 50%" |{"error":0, | |||
"message":"success" | |||
} | |||
|} | |||
===== '''/corpus: работа с данными для обучения моделей''' ===== | |||
| | Методы данного класса предназначены только для сервисов smc и see | ||
{| class="wikitable" style="width: 110%" | |||
|+ | |||
!style="color: blue;width: 15%" |'''GET/corpus/automark/list''' | |||
! colspan="3" style="width: 85%" |Перечень заданий автоматической маркировки корпусов. | |||
|- | |- | ||
|<small> | | colspan="2" style="width: 50%" |<small>Нет входных параметров</small> | ||
<small> | | colspan="2" style="width: 50%" |<small>{ "error": 0,</small> | ||
<small> | <small> "message": "success",</small> | ||
<small> "tasks": [ {</small> | |||
<small> "id": "29d9da98-d6c1-4dc1-bbc9-111309816002",</small> | |||
<small> "taskname": "test_doc",</small> | |||
<small> "status": "finished" },</small> | |||
<small> { "id": "1a5e9bdc-9f98-49d2-84de-1a9bde8fc37c",</small> | |||
<small> "taskname": "sssss",</small> | |||
<small> "status": "finished" } ] }</small> | |||
|- | |- | ||
| | !style="color: blue;width: 15%" |'''GET/corpus/automark/result/{id}''' | ||
! colspan="3" style="width: 85%" |Результат выполнения задания на автомаркировку корпуса. <small>Если задание завершено в ответе придет маркированый корпус и время старта и финиша задания</small> | |||
| | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''id''' — идентификатор задания</small> | |||
| colspan="2" style="width: 50%" |<small>{</small> | |||
| | <small>"error": 0,</small> | ||
*<small>''' | |||
<small>"message": "success",</small> | |||
| | <small>"started": "2024-10-09 18:05:51",</small> | ||
<small>"finished": "2024-10-09 18:05:51",</small> | |||
|<small> | |||
<small>"corpus": [[ [], [ ["тэг"],"фраза 1"]],</small> | |||
< | <small>[ [], [["тэг"],"фраза 2"]] ]</small> | ||
| | <small>}</small> | ||
|- | |||
!style="color: blue;width: 15%" |'''GET/corpus/automark/start''' | |||
! colspan="3" style="width: 85%" |Начать автоматическую разметку корпуса. | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''taskname''' — произвольное имя задания</small> | |||
| | |||
* <small>''' | |||
* <small>'''corpus''' — json строка с размечаемым корпусом[[ [класс1,... классН], текст ],</small> | |||
<small>[ [класс1,... классН], текст ]]</small> | |||
* <small>'''marks''' — json строка с набором меток [ [ метка, [синоним, синоним2 ... синоним Н], порог ],</small> | |||
<small>[ метка, [синоним, синоним2 ... синоним Н], порог ]]</small> | |||
< | * <small>'''appendMarks''' — "yes" - дополнить разметку, "no" -заменить разметку</small> | ||
| colspan="2" style="width: 50%" |<small>{</small> | |||
<small> "error": 0,</small> | |||
<small> "message": "success",</small> | |||
<small> "id": "уникальный id задания"</small> | |||
<small>}</small> | |||
|<small> | |- | ||
!style="color: blue;width: 15%" |'''GET/corpus/automark/status/{id}''' | |||
! colspan="3" style="width: 85%" |<small>Получить статус задания на автоматическую разметку корпуса.</small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''id''' — уникальный id задания</small> | |||
| colspan="2" style="width: 50%" |<small>{</small> | |||
| | |||
*<small>''' | |||
| | |||
<small> "error": "",</small> | |||
<small> "status": "finished",</small> | |||
<small> "started": "2024-10-09 13:49:46",</small> | |||
<small> "finished": "2024-10-09 13:49:46",</small> | |||
<small> "progress": 0</small> | |||
< | <small>}</small> | ||
|- | |||
!style="color: blue;width: 15%" |'''GET/corpus/automark/stop/{id}''' | |||
! colspan="3" style="width: 85%" |Прервать задание на автоматическую разметку корпуса. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''id''' — идентификатор задания</small> | |||
| colspan="2" style="width: 50%" |<small>{ "error": 0,</small> | |||
<small> "message": "success"}</small> | |||
|- | |||
!style="color: green;width: 15%" |'''POST/corpus/copy/{servicetype}''' | |||
! colspan="3" style="width: 85%" |Копирование корпуса данных | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''srcname''' — текущее имя</small> | |||
* <small>'''dstname''' — новое имя</small> | |||
| colspan="2" style="width: 50%" |<small>{</small> | |||
<small> "error": 0,</small> | |||
<small> "message": "success"</small> | |||
< | <small>}</small> | ||
|- | |||
!style="color: red;width: 15%" |'''DELETE/corpus/delete/{servicetype}''' | |||
! colspan="3" style="width: 85%" |Удаляет корпус с данными | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''name''' — название корпуса</small> | |||
| colspan="2" style="width: 50%" |<small>{ "error": 0,</small> | |||
< | <small> "message": "success"}</small> | ||
| <small> | |- | ||
!style="color: blue;width: 15%" |'''GET/corpus/export/{servicetype}''' | |||
! colspan="3" style="width: 85%" |Возвращает текстовый файл с корпусом, <small>содержащий строки вида КЛАСС<TAB>ФРАЗА</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''name''' — название корпуса</small> | |||
| colspan="2" style="width: 50%" |<small>Файл name.txt</small> | |||
|- | |||
!style="color: blue;width: 15%" |'''GET/corpus/get/{servicetype}''' | |||
! colspan="3" style="width: 85%" |Возвращает JSON с данными корпуса | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''name''' — название корпуса</small> | |||
| | | colspan="2" style="width: 50%" |<code><small>[</small></code> | ||
*<small>'''servicetype''' | <code><small> [ "тэг",</small></code> | ||
* <small>''' | |||
|<code><small>[</small></code> | |||
<code><small> " | |||
<code><small> " | <code><small> "фраза"</small></code> | ||
<code><small> | <code><small> ],</small></code> | ||
<code><small> ...</small></code> | <code><small> ...</small></code> | ||
<code><small>]</small></code> | <code><small>]</small></code> | ||
|- | |- | ||
|<small> | !style="color: green;width: 15%" |'''POST/corpus/import/{servicetype}''' | ||
<small>/ | ! colspan="3" style="width: 85%" |Метод для импорта корпуса данных. <small>Возможен как из текстового файла со строками вида КЛАСС<TAB>ФРАЗА (доступно для smc и see), так и из логов работы системы (только для smc). Если на вход поступил файл csv, происходит импорт из файла, в противном случае — из логов.</small> | ||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>''' | * <small>'''servicetype''' — тип сервиса</small> | ||
* <small>'''model''' | * <small>'''name''' — название корпуса</small> | ||
|<small> | * <small>'''csv''' — файл данных</small> | ||
|<small> | * <small>'''startDate''' — дата начала выборки, YYYY-MM-DD</small> | ||
* <small>'''stopDate''' — дата окончания выборки, YYYY-MM-DD</small> | |||
* <small>'''model''' — имя модели, из логов которой будет произведен импорт</small> | |||
* <small>'''limit''' — числовое ограничение строк импорта</small> | |||
| colspan="2" style="width: 50%" |<small>{</small> | |||
<small> "error": 0,</small> | |||
<small> "message": "success"</small> | |||
<small>}</small> | |||
|- | |||
!style="color: blue;width: 15%" |'''GET/corpus/list/{servicetype}''' | |||
! colspan="3" style="width: 85%" |Возвращает список всех корпусов данных для указанного типа сервиса | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''servicetype''' — тип сервиса</small> | |||
| colspan="2" style="width: 50%" |<small>[ "корпус1",</small> | |||
<small>"корпус2",</small> | |||
<small> ...]</small> | |||
|- | |||
!style="color: green;width: 15%" |'''POST/corpus/put/{servicetype}''' | |||
! colspan="3" style="width: 85%" |Перезаписывает корпус отправленным массивом данных | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''servicetype''' — тип сервиса</small> | |||
* <small>'''name''' — название корпуса</small> | |||
| | * <small>'''json''' — строка формата json с данными. Аналогична выводу метода GET /get/{servicetype}</small> | ||
*<small>'''servicetype''' | | colspan="2" style="width: 50%" |<small>{</small> | ||
* <small>''' | |||
* <small>''' | <small> "error": 0,</small> | ||
|<small | |||
<small> "message": "success"</small> | |||
<small>}</small> | |||
|<small> | |- | ||
!style="color: green;width: 15%" |'''POST/corpus/rename/{servicetype}''' | |||
! colspan="3" style="width: 85%" |<small>Переименование корпуса</small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
<small> | * <small>'''servicetype''' — тип сервиса</small> | ||
* <small>'''srcname''' — текущее имя</small> | |||
* <small>'''dstname''' — новое имя</small> | |||
*<small>''' | | colspan="2" style="width: 50%" |<small>{</small> | ||
* <small>''' | |||
|<small | <small> "error": 0,</small> | ||
<small> "message": "success"</small> | |||
<small>}</small> | |||
|} | |} | ||
===== '''/ | |||
===== '''/marks: работа с наборами меток в smc''' ===== | |||
{| class="wikitable | |||
{| class="wikitable" style="width: 110%" | |||
! | |+ | ||
! | !style="color:green;width: 15%" |'''POST/marks/add''' | ||
! colspan="3" style="width: 85%" |Добавление набора менток | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''json''' —список меток в формате: [ [ "метка1",</small> | |||
| | <small> ["синоним1", "синоним2", "синоним3", "синонимN" ], 0.9 # достоверность для метки (0 - 1)</small> | ||
* <small>''' | |||
<small> ], [ "меткаN",</small> | |||
<small> ["синоним11", "синоним21","синоним31", "синонимN1"], 0.9 # достоверность для метки (0 - 1)</small> | |||
<small> ] ]</small> | |||
< | * <small>'''name''' — имя создаваемого набора</small> | ||
| colspan="2" style="width: 50%" |<small>{</small> | |||
<small> "error": 0,</small> | |||
<small> "message": "success",</small> | |||
<small> "id": "132310fa-98c7-4b12-896f-ff113827d077"</small> | |||
<small>}</small> | |||
|- | |- | ||
| | !style="color:red;width: 15%" |'''DELETE/marks/delete/{id}''' | ||
! colspan="3" style="width: 85%" |Удаление набора меток | |||
| | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''id''' — идентификатор набора меток</small> | |||
| | | colspan="2" style="width: 50%" |<small>{</small><small> "error": 0,</small> | ||
* <small>''' | |||
| | |||
<small> "message": "success"</small> <small>}</small> | |||
|- | |- | ||
| | !style="color:blue;width: 15%" |'''GET/marks/export/{id}''' | ||
| | ! colspan="3" style="width: 85%" |Получение набора меток в виде строк | ||
| | |- | ||
| colspan="2" style="width: 50%" | | |||
* <small>'''id''' — идентификатор набора меток</small> | |||
* <small>''' | | colspan="2" style="width: 50%" |<small>Пример:</small> | ||
| | |||
<small>метка1 синоним1,синоним2,синоним3,синонимN 0.9</small> | |||
<small>меткаN синоним11,синоним21,синоним31,синонимN1 0.9</small> | |||
| | |- | ||
!style="color:blue;width: 15%" |'''GET/marks/get/{id}''' | |||
! colspan="3" style="width: 85%" |Получение набора меток в виде json | |||
|- | |- | ||
|<small> | | colspan="2" style="width: 50%" | | ||
* <small>'''id''' — идентификатор набора меток</small> | |||
| colspan="2" style="width: 50%" |<small>Пример:</small> | |||
<small>{ "error": 0,</small> | |||
<small> "message": "success",</small> | |||
<small> "data": [</small> | |||
<small> ["метка1", [ "синоним1", "синоним2", "синоним3", "синонимN" ],</small> | |||
<small> 0.9</small> | |||
<small> ],</small> | |||
<small> ["меткаN", ["синоним11","синоним21", "синоним31","синонимN1"],</small> | |||
<small> 0.9</small> | |||
<small> ] ] }</small> | |||
|<small> | |- | ||
!style="color:green;width: 15%" |'''POST/marks/import/{id}''' | |||
! colspan="3" style="width: 85%" |Импорт в существующий набор меток из файла. <small>Набор будет переписан из файла</small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''csv''' — файл "метка"ТАБ"синонимы через запятую"ТАБ"достоверность(число от 0 до 1)"</small> | |||
| | |||
* <small>''' | |||
< | * <small>'''id''' — идентификатор набора</small> | ||
| colspan="2" style="width: 50%" |<small>{</small><small> "error": 0,</small> | |||
< | <small> "message": "success"</small> <small>}</small> | ||
| | |- | ||
!style="color:blue;width: 15%" |'''GET/marks/list''' | |||
! colspan="3" style="width: 85%" |Получение списка наборов меток | |||
|- | |- | ||
|<small> | | colspan="2" style="width: 50%" |<small>Нет входных параметров</small> | ||
| | | colspan="2" style="width: 50%" |<small>Пример:</small> | ||
| | |||
<small>{ "error": 0,</small> | |||
<small> "message": "success",</small> | |||
<small> "result": [ { "id": "416fbe08-19e9-453c-b140-37008a08a76c","name": "test" },</small> | |||
<small> {"id": "16e77fa2-7c4d-47f9-8644-6385876525d6","name": "Рыжик" },</small> | |||
<small> {"id": "132310fa-98c7-4b12-896f-ff113827d077", "name": "test" }</small> | |||
<small> ]}</small> | |||
|- | |- | ||
| | !style="color:green;width: 15%" |'''POST/marks/put/{id}''' | ||
! colspan="3" style="width: 85%" |Импорт в существующий набор меток из json строки. <small>Набор будет переписан</small> | |||
|<small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
| | * <small>'''json''' — список меток в формате: [ [ "метка1",</small> | ||
<small> " | |||
<small> " | <small> ["синоним1", "синоним2", "синоним3", "синонимN" ], 0.9 # достоверность для метки (0 - 1)</small> | ||
<small> " | <small> ], [ "меткаN",</small> | ||
<small> " | <small> ["синоним11", "синоним21","синоним31", "синонимN1"], 0.9 # достоверность для метки (0 - 1)</small> | ||
<small> | <small> ] ]</small> | ||
<small> | * <small>'''id''' — идентификатор заменяемого набора меток</small> | ||
| colspan="2" style="width: 50%" |<small>{</small><small> "error": 0,</small> | |||
<small>''' | <small> "message": "success"</small> <small>}</small> | ||
|- | |||
!style="color:green;width: 15%" |'''POST/marks/rename/{id}''' | |||
! colspan="3" style="width: 85%" |Присваивает новое наименование существующему набору меток | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''id''' — идентификатор набора меток</small> | |||
* <small>'''name''' — новое имя набора</small> | |||
| colspan="2" style="width: 50%" |<small>{</small><small> "error": 0,</small> | |||
<small> "message": "success"</small> <small>}</small> | |||
|} | |||
===== '''/spr: работа с сервисом SPR''' ===== | |||
{| class="wikitable" style="width: 110%" | |||
| | |+ | ||
!style="color:blue;width: 15%" |'''GET/spr/audio/{taskID}''' | |||
! colspan="3" style="width: 85%" |Получение аудиофайла отложенного задания | |||
|- | |- | ||
|<small> | | colspan="2" style="width: 50%" | | ||
|<small> | * <small>'''taskID''' — идентификатор задания в очереди/small> | ||
|<small> | | colspan="2" style="width: 50%" |<small>Wav файл</small> | ||
|- | |||
" | !style="color:blue;width: 15%" |'''GET/spr/queue''' | ||
! colspan="3" style="width: 85%" |Получение очереди отложенных заданий. <small>Выводит очередь со статусами выполнения заданий. Статусы: '''ready''' — готово, '''waiting''' — ожидание, '''failed''' — сбой</small> | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Нет входных параметров</small> | |||
| colspan="2" style="width: 50%" | <small>{ "id задания": {</small> | |||
<small> "created": "ХХХХ-ХХ-ХХ ХХ:ХХ:ХХ",</small> | |||
<small> "status": "waiting",</small> | |||
" | <small> "filename": "wav"}</small> | ||
|- | |||
!style="color:red;width: 15%" |'''DELETE/spr/queue/{taskID}''' | |||
! colspan="3" style="width: 85%" |Удаление задания из очереди | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''taskID''' — идентификатор задания в очереди/small> | |||
| colspan="2" style="width: 50%" |<small>{"error": 0,</small> | |||
<small>}</small> | <small>"message": "success"}</small> | ||
| | |- | ||
!style="color:blue;width: 15%" |'''GET/spr/result/{taskID}''' | |||
! colspan="3" style="width: 85%" |получениеПезультатов распознавания отложенного задания. <small>Статусы: '''ready''' — готово, '''waiting''' — ожидание, '''failed''' — сбой, '''not found''' — не найдена</small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
| | * <small>'''taskID''' — идентификатор задания в очереди/small> | ||
| colspan="2" style="width: 50%" |<small>Вывод аналогичен выводу метода stt + добавлено поле status, которое содержит информацию о статусе отложенной задачи</small> | |||
|<small>Вывод аналогичен выводу метода stt + добавлено поле status, которое содержит информацию о статусе отложенной задачи | |||
|- | |- | ||
| | !style="color:green;width: 15%" |'''POST/spr/stt/{model}''' | ||
| | ! colspan="3" style="width: 85%" |Отправка файла на распознавание речи. <small>Моно-файлы до 30 секунд распознаются без разбивки на фрагменты. Многоканальные файлы и файлы длиннее 30 секунд предварительно разбиваются на фрагменты по отсутствию речи. Настройка данных параметров описана в [[SPR. Руководство администратора.|руководстве администратора]] spr.</small> | ||
| | |||
|- | |- | ||
|<small> | | colspan="2" style="width: 50%" | | ||
<small> | * <small>'''model''' — идентификатор модели</small> | ||
* <small>'''wav''' — файл для распознавания</small> | |||
* <small>'''speakers''' — опция поиска говорящих по базе SBS. Если 1, то дополнительно производится поиск говорящих и получение метаданных по каждому говорящему (используется сервис SBS с предварительно обученными слепками метаданных говорящих)</small> | |||
*<small>''' | * <small>'''punctuation''' — опция для расстановки знаков препинания. Если 1, то дополнительно вызывает метод punctuate в SMC и расставляет знаки препинания в распознанном тексте, значение по умолчанию берётся из файла конфигурации (для модели big пунктуация выполняется в любом случае).</small> | ||
*<small>''' | * <small>'''normalization''' — опция обратной нормализации текста, если 1, то выполняется обратная нормализация текста текста (для модели big выполняется в любом случае).</small> | ||
*<small>''' | * <small>'''vad''' — используемый VAD, по умолчанию webrtc</small> | ||
|<small><code>{</code></small> | * <small>'''toxicity''' — анализировать распознанный текст на токсичность через smc (GET/smc/toxicity).Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1:"оскорбление": 0.13,</small> <small>"непристойность": 0,</small> <small>"угроза": 0,</small> <small>"вежливость": 0.53</small> | ||
<small><code>"model":" | * <small>'''emotion''' — выявить эмоции из распознанного текста через smc (GET/smc/emotion). Возможные ответы: negative, neutral, positive.</small> | ||
* <small>'''voice_analyzer''' — анализировать аудиофрагменты каждого из говорящих на эмоции, возраст и пол, запрашивается в sbs метод POST/sbs/analyze.Аудио говорящего анализируется на возраст (child, adult, old).Эмоции (ANGER, BORE, DISAPPOINTMENT, DISGUST, EXCITEMENT, FEAR, NEUTRAL, PAIN, PLEASURE, SADNESS, SUPRISE).</small> <small>Пол (male, female).</small> | |||
* <small>'''speaker_counter''' — количество докладчиков, по умолчанию 0, автоматическое определение количества. При отправке значения -1 разделение на докладчиков будет отключено.</small> | |||
* <small>'''async''' — отложенный запуск распознавания</small> | |||
* <small>'''classifiers'''<nowiki> - дополнительно проанализировать все распознанные фразы через модели smc и/или see. отправляется в виде {"smс":"название модели":{ параметры запроса }}. Подробнее о параметрах запроса см. в документации по сервисам </nowiki>[[SMC. Руководство пользователя|smc]] и [[SEE. Руководство пользователя|see]].</small> | |||
| colspan="2" style="width: 50%" |<small>В случае '''async=1''' возвращается только '''taskID''', результат по taskID смотреть в методе /spr/result.</small> | |||
<small>'''Для коротких файлов''':</small> | |||
<small><code>{</code></small> | |||
<small><code> "model": "call",</code></small> | |||
<small><code> "text": "текст фрагмента",</code></small> | |||
<code><small>"classifiers": тут ответы от моделей smc и see,</small></code> | |||
<code><small> "words": [</small></code> | |||
<code><small>{ "word": "текст",</small></code> | |||
<small><code> "start": 520,</code></small> | |||
<code><small> "stop": 1240 },</small></code> | |||
<code><small> { "word": "фрагмента",</small></code> | |||
<small><code> "start": 1240,</code></small> | |||
<code><small> "stop": 1920 }</small></code> | |||
<code><small>]</small></code> | |||
<code><small>}</small></code> | |||
<small>'''Для транскрибации больших файлов:'''</small> | |||
<small><code>{</code></small> | |||
<small><code>"speakers": [</code></small> | |||
<small><code> {</code></small> | |||
<small><code>"id": null,</code></small> | |||
<small><code> "duration": 18980,</code></small> | |||
<small><code> "fragments": 3,</code></small> | |||
<small><code> "age": "old", # только для voice_analyzer=1</code></small> | |||
<small><code> "gender": "female" # только для voice_analyzer=1</code></small> | |||
<small><code>}</code></small> | |||
<small><code>],</code></small> | |||
<small><code>"splitted": [</code></small> | |||
<small><code> {</code></small> | |||
<small><code>"start": "00:00:01.870",</code></small> | |||
<small><code> "text": "текст.",</code></small> | |||
<small><code> "words": [</code></small> | |||
<small><code> {</code></small> | |||
<small><code>"word": "текст.",</code></small> | |||
<small><code> "start": 1870,</code></small> | |||
<small><code> "stop": 2710,</code></small> | |||
<small><code> "confidence": 0.95263671875</code></small> | |||
<small><code> | <small><code>}</code></small> | ||
<small><code> | <small><code>],</code></small> | ||
<small><code> | <small><code> "stop": "00:00:05.510",</code></small> | ||
<small><code> " | <small><code> "channel": 0,</code></small> | ||
<small><code> " | <small><code> "duration": "00:00:03.640",</code></small> | ||
<small><code> " | <small><code> "start_ms": 1870,</code></small> | ||
<small><code> " | <small><code> "stop_ms": 5510,</code></small> | ||
<small><code> | <small><code> "duration_ms": 3640,</code></small> | ||
<small><code> | <small><code> "speaker": 4,</code></small> | ||
<small><code> "speakerConfidence": 0.87,</code></small> | |||
<code><small>"classifiers": тут ответы от моделей smc и see,</small></code> | |||
<small><code>" | <small><code> "toxicity": { # только для toxicity=1</code></small> | ||
<small><code> | <small><code> "insult": 0,</code></small> | ||
<small><code> " | <small><code> "obscenity": 0,</code></small> | ||
<small><code> " | <small><code> "threat": 0,</code></small> | ||
<small><code> " | <small><code> "politeness": 0.99</code></small> | ||
<small><code> | <small><code>},</code></small> | ||
<small><code> " | <small><code> "emotion": { "neutral": -0.3315 }, # только для emotion=1</code></small> | ||
<small><code> " | <small><code> "voice_analysis": { # только для voice_analyzer=1</code></small> | ||
<small><code> " | <small><code> "emotion": {</code></small> | ||
<small><code> " | <small><code> "class": "NEUTRAL",</code></small> | ||
<small><code> "confidence":0. | <small><code> "confidence": 0.7554781436920166 }</code></small> | ||
<small><code> | <small><code>}</code></small> | ||
<small><code>} | <small><code>}</code></small> | ||
<small><code>]</code></small> | <small><code>]</code></small> | ||
<small><code>}</code></small> | <small><code>}</code></small> | ||
|- | |- | ||
| | !style="color:blue;width: 15%" |'''GET/spr/waveform/{taskID}''' | ||
| | ! colspan="3" style="width: 85%" |Служебный метод для отображения аудио в графическом виде, содержит пики сигнала. | ||
|<small>'''taskID''' | |- | ||
|<small>{ | | colspan="2" style="width: 50%" | | ||
* <small>'''taskID''' — идентификатор задания</small> | |||
| colspan="2" style="width: 50%" |<small>{"error": 0,</small> | |||
<small>"waveform": [</small> | |||
<small>0.016,</small> | |||
<small> 0.015,</small> | |||
<small> 0.01 ] }</small> | |||
|} | |} | ||
===== '''/smc: работа с сервисом SMC''' ===== | |||
{{:SMC. Руководство пользователя}} | |||
!style="color:blue;width: 15%" |'''GET/smc/compress''' | |||
! colspan="3" style="width: 85%" |Убирает из фразы слова не влияющие на ее смысл. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''text''' <span data-darkreader-inline-color="" data-darkreader-inline-bgcolor="">—</span> текст для сжатия</small> | |||
* <small>'''threshold''' <span data-darkreader-inline-color="" data-darkreader-inline-bgcolor="">—</span> уровень компрессии от 1 до 100. Чем меньше число тем меньше слов будет в итоговой фразе</small> | |||
| colspan="2" style="width: 50%" |<small>{ "text": "сжатый текст"}</small> | |||
|- | |||
!style="color:blue;width: 15%" |'''GET/smc/correct''' | |||
! colspan="3" style="width: 85%" |Коррекция правописания. <small>Изменяет неправильно написанные слова, меняя их на наиболее близкие правильные (из знакомых модели). Если модель коррекции не смогла предложить правильное написание текста, метод вернёт текст неизменным.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''text''' - текст для коррекции</small> | |||
*<small>'''correction''' - уровень коррекции, от 1 до 3. По умолчанию 1.</small> | |||
*<small>'''model''' - если указано, то при коррекции дополнительно используется словарь модели</small> | |||
| colspan="2" style="width: 50%" |<small>{ "text": "корректный текст" }</small> | |||
|- | |||
!style="color:blue;width: 15%" |'''GET/smc/emotion''' | |||
! colspan="3" style="width: 85%" |Анализ эмоций. <small>На выходе один из вариантов: positive, negative, neutral.</small> | |||
|- | |||
| colspan="2" style="width: 50%" |<small>'''text''' <span data-darkreader-inline-color="" data-darkreader-inline-bgcolor="">—</span> фраза для анализа эмоций</small> | |||
| colspan="2" style="width: 50%" |<small>{ "emotion": "positive", "score": 0.9601 }</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/smc/groups/{model}''' | |||
! colspan="3" style="width: 85%" |Добавляет к модели группы из корпуса. <small>Группы в модели будут перезаписаны</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''id''' — наименование модели</small> | |||
* <small>'''corpus''' — наименование корпуса- источника групп</small> | |||
| colspan="2" style="width: 50%" |<small>{ "error": 0,</small> | |||
= | <small> "message": "string"}</small> | ||
|- | |||
| | !style="color:blue;width: 15%" |'''GET/smc/groups/{model}''' | ||
! colspan="3" style="width: 85%" |Поиск групп по ранее полученным меткам. <small>Ищет группы по набору меток. Результат — группы (если найдены) и ближайшие группы с указанием недостающих меток. Позволяет сохранять контекст в виде меток и дозапрашивать группы с учетом контекста.</small> | |||
|- | |- | ||
|<small> | | colspan="2" style="width: 50%" | | ||
<small> | * <small>'''classes''' — набор меток через запятую</small> | ||
|<small> | |||
* <small>'''model''' — имя модели</small> | |||
| colspan="2" style="width: 50%" |<small>{"groups": [</small> | |||
<small> { "group": "Группа 1",</small> | |||
<small>< | <small> "intersection": 3,</small> | ||
<small> "classes": [</small> | |||
<small> "метка1_о",</small> | |||
<small> "метка2_о",</small> | |||
<small> "метка3_о" ] },</small> | |||
<small> { "group": "Группа 2",</small> | |||
<small> "intersection": 2,</small> | |||
<small> "classes": [</small> | |||
<small> | <small> "метка1_о",</small> | ||
<small> | <small> "метка5_о" ] }],</small> | ||
<small> | <small>"nearest": [</small> | ||
<small> | <small> { "group": "Группа до которой не хватило 1 метки",</small> | ||
<small> | <small> "percent": 0.75,</small> | ||
<small> | <small> "need": "недостающая метка_о" } ] }</small> | ||
|<small> | |- | ||
* <small>''' | !style="color:blue;width: 15%" |'''GET/smc/normalize''' | ||
! colspan="3" style="width: 85%" |Обратная нормализация текста. <small>Пример: двадцать пятого апреля в пятом часу — 25 апреля в 5-м часу.</small> | |||
* <small>''' | |- | ||
| colspan="2" style="width: 50%" | | |||
* <small>'''text''' — текст для обработки.</small> | |||
| colspan="2" style="width: 50%" |<small>{"text": "<строка после обратной нормализации>"}</small> | |||
|- | |||
!style="color:blue;width: 15%" |'''GET/smc/punctuate''' | |||
! colspan="3" style="width: 85%" |Расстановка знаков препинания | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''text''' — текст для обработки.</small> | |||
| colspan="2" style="width: 50%" |<small>{ "text": "string" }</small> | |||
|- | |||
!style="color:green;width: 15%" |'''POST/smc/stop/{model}''' | |||
! colspan="3" style="width: 85%" |Остановка обучения модели. <small>Удаляет тестовую версию модели с сервера обучения, тем самым прерывает обучение.</small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''model''' — идентификатор модели</small> | |||
| colspan="2" style="width: 50%" |<small>{ "error": 0,</small> | |||
| | |||
* <small>'''model''' | |||
|<small | |||
<small>< | <small> "message": "string"}</small> | ||
|- | |||
!style="color:green;width: 15%" |'''POST/smc/test/{model}''' | |||
! colspan="3" style="width: 85%" |Запуск тестирования модели smc. <small>Метод асинхронный, статус тестирования можно запросить методом GET/info/{servicetype}/{model}</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''model''' — идентификатор модели</small> | |||
* <small>'''corpus''' — название корпуса с тестовыми данными</small> | |||
| colspan="2" style="width: 50%" |<small>{ "error": 0,</small> | |||
<small> | <small> "message": "success" }</small> | ||
| | |- | ||
<small> | !style="color:blue;width: 15%" |'''GET/smc/toxicity''' | ||
! colspan="3" style="width: 85%" |Определение токсичности высказывания. <small>Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1:</small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
* <small>'''text''' <span data-darkreader-inline-color="" data-darkreader-inline-bgcolor="">—</span> текстовая строка с высказыванием</small> | |||
| colspan="2" style="width: 50%" |<small>{ "insult": 0.13, # оскорбление</small> | |||
| | |||
* <small>''' | |||
|<small | |||
<small | <small> "obscenity": 0, # брань</small> | ||
<small>< | <small> "threat": 0, # угрозы</small> | ||
|<small> | |||
<small> "politeness": 0.53 вежливость}</small> | |||
|- | |||
!style="color:green;width: 15%" |'''POST/smc/train/{model}''' | |||
! colspan="3" style="width: 85%" |Добавление модели. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''model''' — идентификатор модели</small> | |||
* <small>'''corpus''' — имя текстового корпуса для обучения модели или имя набора меток</small> | |||
* <small>'''isMarks''' — если «1», то вместо корпуса метод ожидает набор меток. Модель, созданная из меток, при этом не обучается, созданный файл модели используется для расчетов векторов «на лету» и выдачи результатов на основании сравнения векторов текста и синонимов из файла с метками.</small> | |||
| colspan="2" style="width: 50%" |<small>{ error: INT, message: DESCRIPTION }</small> | |||
|} | |||
===== '''/see: работа с сервисом SEE''' ===== | |||
{| class="wikitable" style="width: 110%" | |||
|+ | |||
!style="color:blue;width: 15%" |'''GET/see/entities/{model}''' | |||
! colspan="3" style="width: 85%" |Поиск сущностей. <small>Вернется массив со всеми моделями, в которых были найдены сущности (модели для поиска указываются в поле id). Каждая переменная с названием модели будет содержать список всех найденных сущностей.</small> | |||
|- | |- | ||
|<small> | | colspan="2" style="width: 50%" | | ||
<small> | * <small>model — идентификатор[ы] модели. Может быть указано несколько через запятую, тогда запрос будет обработан всеми указанными моделями.</small> | ||
* <small>text — текст для анализа.</small> | |||
| | * <small>similarity — порог похожести найденной сущности на эталонные, %. По умолчанию 70.</small> | ||
| colspan="2" style="width: 50%" |<small>{ ID-модели: [</small> | |||
<small>{ '''position''': 0, # позиция слова начала фрагмента, определяющего сущность</small> | |||
<small>'''confidence''': 1, #вероятность правильного определения сущности</small> | |||
<small>text: текст сущности,</small> | |||
<small>'''calculated''': vaktsinatsiya # поле, содержащее значение сущности, использованный при обучении модели }, {...}</small> | |||
<small>< | <small>] }</small> | ||
|- | |||
!style="color:green;width: 15%" |'''POST/see/stop/{model}''' | |||
! colspan="3" style="width: 85%" |Остановка обучения модели | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <small>'''model''' — идентификатор модели</small> | |||
| colspan="2" style="width: 50%" |<small>{ "error": 0,</small> | |||
<small> | <small> "message": "success"}</small> | ||
| | |- | ||
!style="color:green;width: 15%" |'''POST/see/train/{model}''' | |||
! colspan="3" style="width: 85%" |Запуск обучения модели '''<small>future</small>''' | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
<small> | * <small>'''model''' — идентификатор модели</small> | ||
* <small>'''corpus''' — название корпуса с данными</small> | |||
* <small>''' | |||
* <small>''' | * <small>'''noise''' — уровень шума для генерации синтезированных данных для обучения модели, от 1 до 5, по умолчанию 0</small> | ||
| | | colspan="2" style="width: 50%" |<small>{ "error": 0,</small> | ||
<small> "message": "success"}</small> | |||
<small> | |||
|} | |} | ||
===== '''/ | ===== '''/sbs: работа с сервисом SBS''' ===== | ||
{| class="wikitable" | |||
{| class="wikitable" style="width: 110%" | |||
|+ | |+ | ||
! | !style="color:green;width: 15%" |'''POST/sbs/analyze''' | ||
! | ! colspan="3" style="width: 85%" |Получение аналитических метаданных из голосового фрагмента. <small>Вернется массив с метаданными голосового фрагмента.</small> | ||
|- | |- | ||
| | | colspan="2" style="width: 20%" | | ||
* <small>'''wav''' <span data-darkreader-inline-color="" data-darkreader-inline-bgcolor="">—</span> файл для анализа</small> | |||
| colspan="2" style="width: 80%" |<small>Пример:</small> | |||
| | |||
* <small>''' | <small>{ age: {</small> | ||
<small> class: 20-29, # {"00-05", "06-12", "13-19", "20-29", "30-39", "40-49", "50-59", "60+"}</small> | |||
<small> confidence: 0.99 },</small> | |||
<small>emotion: {</small> | |||
<small> class: SADNESS, # { "ANGER", "BORE", "DISAPPOINTMENT", "DISGUST", "EXCITEMENT", "FEAR", "NEUTRAL", "PAIN", "PLEASURE", "SADNESS", "SUPRISE"}</small> | |||
<small> confidence: 0.99 },</small> | |||
<code><small> | <small>gender: {</small> | ||
<small> class: FEMALE, # { "MALE", "FEMALE" }</small> | |||
<small> confidence: 0.99 } }</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/sbs/noiselevel''' | |||
! colspan="3" |<small>Возвращает процент зашумленности аудио</small> | |||
|- | |||
| colspan="2" | | |||
*<small>'''wav''' — файл для анализа</small> | |||
| colspan="2" |<small>Пример ответа:</small> | |||
<small><code>{ error: 0, message: 'success', 'noise': 0.79 }</code></small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/sbs/search''' | |||
! colspan="3" style="width: 85%" |<small>Поиск говорящего по базе слепков.</small> | |||
|- | |||
| colspan="2" style="width: 20%" | | |||
*<small>'''wav''' — файл для анализа</small> | |||
*<small>'''threshold''' — порог похожести при поиске, от 0 до 1.</small> | |||
*<small>'''text''' — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, то поиск не будет осуществлен, если распознанный текст будет сильно отличаться от text.</small> | |||
*'''<small>textSimilarity</small>''' - <small>порог похожести текста и распознанного аудио</small> | |||
| colspan="2" style="width: 80%" |<small>Пример ответа:</small> | |||
<small>{ error: 0, speaker: Ivan, confidence: 0.79 }</small> | |||
| | |- | ||
! style="color:green;width: 15%" |'''POST/sbs/speakers/add''' | |||
! colspan="3" style="width: 85%" |Добавление слепка в базу. | |||
|- | |- | ||
| | | colspan="2" style="width: 20%" | | ||
<small> | *<small>'''name''' — имя говорящего</small> | ||
*<small>'''wav''' — файл для создания оцифрованного представления говорящего</small> | |||
*<small>'''text''' — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, то поиск не будет осуществлен, если распознанный текст будет сильно отличаться от text. Для использования необходим сервис spr.</small> | |||
* <small>''' | *'''<small>textSimilarity</small>''' - <small>порог похожести текста и распознанного аудио</small> | ||
* <small>''' | | colspan="2" style="width: 80%" |<small>{</small> | ||
* <small> | |||
|<small | <small> "error": 0,</small> | ||
<small> "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433"</small> | |||
<small>}</small> | |||
|<small> | |- | ||
<small> | ! style="color:red;width: 15%" |'''DELETE/sbs/speakers/delete/{id}''' | ||
! colspan="3" style="width: 85%" |Удаление слепка из базы. | |||
|- | |||
| colspan="2" style="width: 20%" | | |||
*<small>'''id''' <span data-darkreader-inline-color="" data-darkreader-inline-bgcolor="">—</span> идентификатор говорящего</small> | |||
| colspan="2" style="width: 80%" |<small>{ error: INT, message: DESCRIPTION }</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/sbs/speakers/list''' | |||
! colspan="3" style="width: 85%" |Получение списка всех слепков. | |||
|- | |- | ||
|<small> | | colspan="2" style="width: 20%" |<small>Входные параметры отсутствуют</small> | ||
<small> | | colspan="2" style="width: 80%" |<small>[ {</small> | ||
<small> "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433",</small> | |||
<small> "name": "наименование слепка"</small> | |||
< | <small> }]</small> | ||
|- | |||
! style="color:green;width: 15%" |'''POST/sbs/speakers/modify/{id}''' | |||
! colspan="3" style="width: 85%" |Дообучение слепка. | |||
|- | |||
| colspan="2" style="width: 20%" | | |||
*<small>'''wav''' — файл для обучения</small> | |||
*<small>'''id''' — идентификатор слепка</small> | |||
*<small>'''text''' — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, то слепок не будет дообучен, если распознанный текст будет сильно отличаться от text. Для использования необходим сервис spr.</small> | |||
*'''<small>textSimilarity</small>''' - <small>порог похожести текста и распознанного аудио</small> | |||
| colspan="2" style="width: 80%" |<small>{ "error": 0,</small> | |||
< | <small> "message": "Success"}</small> | ||
|<small> | |- | ||
! style="color:green;width: 15%" |'''POST/sbs/verify/{id}''' | |||
! colspan="3" style="width: 85%" |Сравнение wav-файла cо слепком в базе. <small>В ответе - вероятность совпадения от 0 до 1.</small> | |||
|- | |||
| colspan="2" style="width: 20%" | | |||
*<small>'''name''' — имя говорящего</small> | |||
*<small>'''wav''' — файл для создания оцифрованного представления говорящего</small> | |||
*<small>'''text''' — текст для сравнения с распознанным текстом из '''wav''', необязательный параметр. Если указан, но слепок не будет создан, если распознанный текст будет сильно отличаться от '''text.'''</small> | |||
*'''<small>textSimilarity</small>''' - <small>порог похожести текста и распознанного аудио</small> | |||
| colspan="2" style="width: 80%" |<small>{ "error": 0, "confidence": 0.78 }</small> | |||
|} | |} | ||
===== '''/ | ====='''/tts: методы работы с сервисом tts'''===== | ||
{| class="wikitable" | |||
{| class="wikitable" style="width: 110%" | |||
|+ | |+ | ||
! | ! style="color:blue;width: 15%" |'''GET/tts/dictionary/export''' | ||
! | ! colspan="3" style="width: 85%" |Выгрузка пользовательского словаря ударений. | ||
|- | |||
! | | colspan="2" style="width: 20%" |<small>Входные параметры отсутствуют</small> | ||
! | | colspan="2" style="width: 80%" |<small>Простой текст — строки со словом и его интерпретацией с ударением.</small> | ||
|- | |||
! style="color:blue;width: 15%" |'''GET/tts/dictionary/get''' | |||
! colspan="3" style="width: 85%" |Выгрузка пользовательского словаря ударений в виде json. | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| colspan="2" style="width: 50%" |<small>[ [ "слово", "замена слова с удар+ением"],</small> | |||
<small>[ "слово2", "замена слова2 с удар+ением"],</small> | |||
<small>...]</small> | |||
|- | |- | ||
| | ! style="color:green;width: 15%" |'''POST/tts/dictionary/import''' | ||
! colspan="3" style="width: 85%" |Загрузка пользовательского словаря ударений. <small>Текущий словарь будет переписан.</small> | |||
| | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
*<small>'''csv file''' — файл строк со словом и его интерпретацией с ударением.</small> | |||
| colspan="2" style="width: 50%" |<small>{ "error": 0,</small> | |||
| | |||
* | <small> "message": "сообщение о статусе результата"}</small> | ||
|<small | |||
|- | |- | ||
| | ! style="color:green;width: 15%" |'''POST/tts/dictionary/put''' | ||
! colspan="3" style="width: 85%" |Загрузка пользовательского словаря ударений в виде json. <small>Текущий словарь будет переписан.</small> | |||
|<small> | |||
|- | |- | ||
|<small> | | colspan="2" style="width: 50%" | | ||
<small>/ | * <small>'''json''' — строка json следующего вида:</small> | ||
<small><code>[</code></small> | |||
<small><code>[ "слово", "замена слова с удар+ением" ],</code></small> | |||
|<small>< | |||
<small><code>[ "слово2", "замена слова2 с удар+ением" ],</code></small> | |||
<small><code>...</code></small> | |||
<small><code>]</code></small> | |||
| colspan="2" style="width: 50%" |<small>{</small> | |||
<small> "error": 0,</small> | |||
<small | <small> "message": "сообщение о статусе результата"</small> | ||
<small | <small>}</small> | ||
|- | |- | ||
| | ! style="color:green;width: 15%" |'''POST/tts/normalize''' | ||
! colspan="3" style="width: 85%" |Нормализация текста <small>— перевод цифр в слова и расстановка ударений (ударения только в нормализованной части фразы), например «в понедельник 10.10.2025» -> «в понедельник дес+ятого октябр+я две т+ысячи дв+адцать п+ятого г+ода».</small> | |||
|<small>-</small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
*<small>'''text''' — фраза для нормализации</small> | |||
| colspan="2" style="width: 50%" |<small>{ "error": 0,</small> | |||
| | |||
* | <small> "message": "success",</small> | ||
|<small | |||
<small>< | <small> "text": "нормализованный текст" }</small> | ||
|- | |||
! style="color:green;width: 15%" |'''POST/tts/revoice/{revoicer}''' | |||
! colspan="3" style="width: 85%" |Модификация или искажение голоса | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''wav''' — аудиофайл для обработки</small> | |||
<small>< | *<small>'''revoicer''' — модель модификации голоса</small> | ||
|<small> | | colspan="2" style="width: 50%" |<small>wav-файл с модифицированным (искаженным) голосом</small> | ||
|- | |||
! style="color:blue;width: 15%" |'''GET/tts/revoicers''' | |||
! colspan="3" style="width: 85%" |Перечень моделей модификации или искажения голоса. <small>Модели поставляются только в составе дистрибутива. Модель distortion — искажение голоса, делает голос неузнаваемым и речь неразборчивой.</small> | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| colspan="2" style="width: 50%" |<small>[ "distortion" ]</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/tts/synthesize/{model}''' | |||
! colspan="3" style="width: 85%" |Синтез звукового файла из текста/ | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''ID''' — имя модели</small> | |||
*<small>'''text''' — текст синтезируемой фразы</small> | |||
*<small>'''rate''' — скорость речи</small> | |||
*<small>'''pitch''' — высота (тон)</small> | |||
*<small>'''volume''' — громкость</small> | |||
*<small>'''frequency''' — частота дискретизации (по умолчанию 22050 Гц)</small> | |||
*<small>'''format''' - формат файла результата (wav, opus, ogg, mp3)</small> | |||
*<small>'''link''' - если 1, то вернуть только ссылку на файл</small> | |||
| colspan="2" style="width: 50%" |<small>файл с синтезированой фразой</small> | |||
|} | |} | ||
===== '''/ | ====='''/qas: методы работы с сервисом qas'''===== | ||
{| class="wikitable" | |||
{| class="wikitable" style="width: 110%" | |||
! | |+ | ||
! style="color:blue;width: 15%" |'''GET/qas/ask''' | |||
!Ответ | ! colspan="2" style="width: 85%" |Метод генерирует ответ на поставленный вопрос на основе информации из документов в базе. <small>Ответ на вопрос генерируется на основе информации, содержащейся в одном или нескольких документах. Документы должны быть в текстовом формате. Ответ возвращается в формате JSON, его можно скачать. Если метод не смог найти ответ, возвращается код ошибки и сообщение.</small> | ||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
<small>/ | *<small>'''text''' — текст вопроса, на основе которого будут искаться фрагменты.</small> | ||
*<small>'''category''' — id категории документа. Если не указать категорию, метод вернет ответ на основе всех документов в базе данных. Допускается указание нескольких категорий через разделитель "|".</small> | |||
*<small>'''channel''' — id канала</small> | |||
|< | *<small>'''useCache''' — использовать кешированные ответы</small> | ||
<small>возможные варианты:</small> | |||
<small>- "'''no'''" не использовать</small> | |||
<small>- "'''all'''" использовать все</small> | |||
<small>- "'''checked'''" использовать только проверенные</small> | |||
*<small>'''useGPT''' — использовать генеративную сеть для поиска ответов в документах. возможные варианты "'''yes'''" "'''no'''"</small> | |||
*<small>'''model''' - имя модели GPT, если кроме default используются другие модели</small> | |||
*<small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small> | |||
*<small>'''addAlias''' — добавлять похожие вопросы к синонимам, не создавая отдельного вопроса. возможные варианты "'''yes'''" "'''no'''"</small> | |||
*<small>'''maxDocs''' — максимальное количество документов одной категории для формирования контекста при генерации ответа на вопрос, по умолчанию 1</small> | |||
*<small>'''similarityArea -''' определяет допустимую разницу между максимальной и минимальной релевантностью фрагментов при фильтрации результатов</small> | |||
| style="width: 50%" |<small>{</small> | |||
<small>"error": 0,</small> | |||
<small>"text": "Здесь будет текст ответа"</small> | |||
<small>}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/cachemaker/start''' | |||
! colspan="2" style="width: 85%" |Генерация ответов на вопросы в кэше. | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
<small>/</small><small> | *<small>'''category''' - категория для которой генерируются ответы</small>*<small>'''mode''' - режим генерации ответов, возможные значения:</small><small>'''- paraphrase''' - генерирует вариации ответов перефразированием уже проверенных ответов, если таковые имеются на вопросе</small><small>'''- generate''' - генерирует кэш через разные ответы на каждый вопрос по документации</small> | ||
|<small> | *<small>'''mode''' — режим генерации ответов, возможные значения:'''- paraphrase''' - генерирует вариации ответов перефразированием уже проверенных ответов, если таковые имеются на вопросе'''- generate''' — генерирует кэш через разные ответы на каждый вопрос по документации</small> | ||
|<small>-</small> | |||
| | *<small>'''option''' - {all | empty} обработать все вопросы или только не содержащие ответов</small> | ||
*<small>'''category''' - если указан код категории, то генерация только для этой категории</small> | |||
| | |||
*<small>'''variants''' - количество ответов, от 1 до 9</small> | |||
*<small>'''replace''' - заменить ответы на сгенерированные</small> | |||
*<small>'''maxDocs''' - максимальное количество документов одной категории для формирования контекста при генерации ответа на вопрос, по умолчанию 1</small> | |||
*<small>'''model''' - какую модель использовать для генерации, если кроме default используются другие модели</small> | |||
*<small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small> | |||
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small> | |||
|} | |- | ||
|<small> | ! style="color:blue;width: 15%" |'''GET/qas/cachemaker/status''' | ||
! colspan="2" style="width: 85%" |Состояние генерации ответов на вопросы в кэше. <small>Статусы: '''started''', '''stopped''', если были ошибки, поле ответа '''error''' будет содержать код ошибки.</small> | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| style="width: 50%" |<small>{ "error": "",</small> | |||
<small> "status": "started",</small> | |||
<small> "progress": 33.33}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/cachemaker/stop''' | |||
! colspan="2" style="width: 85%" |Остановить генерацию ответов на вопросы в кэше. | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/category/add''' | |||
! colspan="2" style="width: 85%" |Добавить категорию с указанным именем. <small>В ответе — id созданной категории или сообщение об ошибке:</small> | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
<small> | *<small>'''name''' — наименование категории</small> | ||
| style="width: 50%" |<small>{ "error": 0,</small> | |||
<small> "message": "success",</small> | |||
" | <small> "id": "ad895085-2e48-439a-831e-b5f699b6a54a" }</small> | ||
|- | |||
! style="color:red;width: 15%" |'''DELETE/qas/category/delete/{id}''' | |||
! colspan="2" style="width: 85%" |Удалить категорию. <small>В ответе или сообщении об успехе, или ошибке, если категория используется или не существует.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор категории</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small> | |||
" | <small> "message": "success" }</small> | ||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/category/list''' | |||
! colspan="2" style="width: 85%" |Получить список категорий | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| style="width: 50%" |<small>В ответе json с именами и id категорий</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/category/modify/{id}''' | |||
! colspan="2" style="width: 85%" |Изменить категорию. <small>У категории пока есть только наименование, поэтому метод только переименовывает категорию</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор категории</small> | |||
*<small>'''name''' — наименование категории</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small> | |||
<small> "message": "success" }</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/channel/add''' | |||
! colspan="2" style="width: 85%" |Добавление канала. <small>В ответе id созданного канала или сообщение об ошибке</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''name''' — наименование канала</small> | |||
| style="width: 50%" |<small>{"error": 0,</small> | |||
<small>"message": "success",</small> | |||
} | <small>"id": "a46fb887-5d98-41e0-8299-bcc94f615e91"}</small> | ||
| | |- | ||
! style="color:red;width: 15%" |'''DELETE/qas/channel/delete/{id}''' | |||
! colspan="2" style="width: 85%" |Удаление канала | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор канала</small> | |||
| style="width: 50%" |<small>{ "error": 0, "message": "success" }</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/channel/list''' | |||
! colspan="2" style="width: 85%" |Получить список всех каналов | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | ||
| style="width: 50%" |<small>{ "error": 0,</small> | |||
|<small> | |||
| | |||
|{ | |||
"error": 0, | |||
" | <small> "channels": [</small> | ||
" | <small> { "id": "1", "name": "voice" },</small> | ||
<small> { "id": "56442779-e871-43fd-ae4d-caf4ab6d09b9", "name": "канал++" },</small> | |||
} | <small> { "id": "0", "name": "default" }</small> | ||
} | <small> ] }</small> | ||
| | |- | ||
| | ! style="color:green;width: 15%" |'''POST/qas/channel/modify/{id}''' | ||
! colspan="2" style="width: 85%" |Изменить канал. <small>У канала пока есть только наименование, поэтому метод только переименовывает канал</small> | |||
|- | |- | ||
|<small> | | colspan="2" style="width: 50%" | | ||
<small> | *<small>'''name''' — новое наименование канала</small> | ||
| | |||
| <small> | *<small>'''id''' — идентификатор канала</small> | ||
| style="width: 50%" |<small>{ "error": 0,</small> | |||
<small> | <small> "message": "success" }</small> | ||
| | |- | ||
<small>{</small> | ! style="color:green;width: 15%" |'''POST/qas/chat''' | ||
! colspan="2" | Поиск ответа за пределами документов. <small>На стадии разработки, не используется.</small> | |||
|- | |||
| colspan="2" | | |||
*<small>'''text -''' текст вопроса</small> | |||
*<small>'''history''' - история вопросов, будет склеена с text при запросе</small> | |||
*<small>'''model''' - какую модель использовать для ответа, если кроме default используются другие модели</small> | |||
*<small>'''useInternalTemplate''' - использовать ли шаблон запроса. '''no''' - не использовать, либо код шаблона запроса к LLM. Необязательный параметр. Если не указан, используется шаблон по умолчанию.</small> | |||
*<small>'''params''' - необязательный параметр. JSON с произвольными параметрами запроса к LLM. Описание параметров см. в [[QAS. Руководство администратора|руководстве администратора]].</small> | |||
|<small>Пример ответа на вопрос "как пройти в библиотеку"</small><small>{"error": 0,</small> | |||
<small>"text": "1. Проверить время работы библиотеки (обычно от 9 до 20)\n2. Проверить местоположение библиотеки на карте или с помощью сервиса Google Maps\n3. Убедиться, что у вас есть необходимые документы для входа (паспорт, карта члена библиотеки и т.д.)\n4. Посетить библиотеку по адресу: [адрес библиотеки]\n5. Проверить правила поведения в библиотеке перед входом" }</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/cleandoc/start''' | |||
! colspan="2" |Очистка документа от лишней информации | |||
|- | |||
| colspan="2" | | |||
* <small>'''text -''' текст документа</small> | |||
* <small>'''model''' - какую модель использовать для ответа, если кроме default используются другие модели</small> | |||
* <small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small> | |||
* <small>'''doc_id''' - необязательный параметр, ID документа</small> | |||
* <small>'''user_id''' - ID пользователя</small> | |||
|<small>{"error": 0, "message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" | '''GET/qas/cleandoc/stop''' | |||
! colspan="2" |Остановка очистки документа для конкретного пользователя | |||
|- | |||
| colspan="2" | | |||
* <small>'''user_id''' - ID пользователя</small> | |||
|<small>{"error": 0, "message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" | '''GET/qas/cleandoc/status''' | |||
! colspan="2" |Статус очистки документа для конкретного пользователя | |||
|- | |||
| colspan="2" | | |||
* <small>'''user_id''' - ID пользователя</small> | |||
|<small>{</small> | |||
<small>"error": 0,</small> | <small>"error": 0,</small> | ||
<small>"status": stopped | started,</small> | |||
<small>"progress": 33.3,</small> | |||
<small>"message": string,</small> | |||
<small>"place": number, #место в очереди</small> | |||
<small>"queue": True | False #состояния - в очереди или в процессе очистки</small> | |||
<small>}</small> | |||
|- | |||
! style="color:blue;width: 15%" | '''GET/qas/cleandoc/result''' | |||
! colspan="2" |Результат очистки документа для конкретного пользователя | |||
|- | |||
| colspan="2" | | |||
* <small>'''doc_id''' - необязательный параметр, ID документа</small> | |||
* <small>'''user_id''' - ID пользователя</small> | |||
|<small>{"error": 0,"status": "stopped","text": "очищенный текст","doc_id": "ID документа"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/doc/add''' | |||
! colspan="2" style="width: 85%" |Загрузить текстовый документ. <small>Добавляет документ в базу. В ответе — id созданного документа или сообщение об ошибке.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''title''' — заголовок документа</small> | |||
*<small>'''category''' — категория документа</small> | |||
*<small>'''text'''</small> — <small>файл документа</small> | |||
| style="width: 50%" |<small>{"error": 0,</small> | |||
<small>"message": "success",</small> | <small>"message": "success",</small> | ||
<small>"id": "ebe2bc57551c2d17f892987d1f62306d"</small> | <small>"id": "ebe2bc57551c2d17f892987d1f62306d"}</small> | ||
|- | |||
! style="color:red;width: 15%" |'''DELETE/qas/doc/delete/{id}''' | |||
! colspan="2" style="width: 85%" | Удаление документа | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор документа</small> | |||
| style="width: 50%" |<small>{"error": 0,"message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/doc/get/{id}''' | |||
! colspan="2" style="width: 85%" |Выгрузка текста документа | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор документа</small> | |||
| style="width: 50%" |<small>{</small> | |||
<small> "error": 0,</small> | |||
<small> "text": "Здесь будет полный текст документа"</small> | |||
<small>}</small> | <small>}</small> | ||
|- | |- | ||
|<small> | ! style="color:blue;width: 15%" |'''GET/qas/doc/list''' | ||
<small>/qas/doc/ | ! colspan="2" style="width: 85%" |Получение списка имеющихся документов | ||
|<small> | |- | ||
|<small> | | colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | ||
<small> | | style="width: 50%" |<small>Пример:</small> | ||
|<small>{</small> | |||
<small> | <small>{ "error": 0,</small> | ||
<small> "docs": [</small> | |||
<small> {id": "d4999cdee5ad1faf2cb3066ea1b5e96b",</small> | |||
<small> "title": "PVE. Установка сервисного пакета окружения",</small> | |||
<small> "category": "Техническая поддержка" },</small> | |||
<small> {"id": "759042575b965745b9d2af869bca1740",</small> | |||
<small> "title": "UPS. Руководство администратора",</small> | |||
<small> "category": "Техническая поддержка"} ]}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/doc/modify/{id}''' | |||
! colspan="2" style="width: 85%" |Обновление документа. <small>В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' — json c изменяемыми параметрами документа</small> | |||
<small><code>{</code></small> | |||
<small><code> title: string,</code></small> | |||
<small><code> category: string,</code></small> | |||
<small><code> text: string</code></small> | |||
<small><code>}</code></small> | |||
<small>параметр который не меняется может отсутствовать в json</small> | |||
*<small>'''id''' — идентификатор документа.</small> | |||
| style="width: 50%" |<small>{"error": INT, "message": DESCRIPTION}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/doc/replace''' | |||
! colspan="2" style="width: 85%" |Замена подстроки в текстах категории <small>Будут заменены все найденные вхождения</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''search''' - искомая подстрока, будет заменена</small> | |||
*<small>'''replace''' - текст замены</small> | |||
*<small>'''category''' - в какой категории искать</small> | |||
| style="width: 50%" |<small>{"error": INT, "message": DESCRIPTION,"replacements":INT}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/doc/modifyphrases''' | |||
! colspan="2" |Массовая замена текста в указанных фразах. | |||
|- | |||
| colspan="2" | | |||
*<small>'''phrases''' - JSON массив с изменяемым фразами следующего вида:</small> | |||
<small>[</small> | |||
<small>{</small> | |||
<small>'doc_id': 'ad895085-2e48-439a-831e-b5f699b6a54a',</small> | |||
<small>'phrase_id': 5,</small> | |||
<small> | <small>'text': 'новый текст'</small> | ||
<small>}</small> | <small>}</small> | ||
| - | |||
<small>]</small> | |||
|<small>{"error": 0,"message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/gpt/list''' | |||
! colspan="2" |Получение списка доступных(установленных) GPT моделей | |||
|- | |- | ||
|<small> | | colspan="2" |<small>Входные параметры отсутствуют</small> | ||
<small>/qas/ | |<small>{ "error": 0, "message": "success",</small><small> "models": ["default" ]}</small> | ||
|<small> | |- | ||
! style="color:green;width: 15%" |'''POST/qas/question/add''' | |||
! colspan="2" style="width: 85%" |Добавление вопроса. <small>В случае успеха метод вернет id вопроса, в случае неудачи — код ошибки.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''question''' — текст вопроса</small> | |||
*<small>'''category''' — id категории к которой относится вопрос</small> | |||
*<small>'''answers''' — ответы в виде Json:</small> | |||
<small><code>[ { "checked": true, "channel": "0", "answer": "ответ" } ]</code></small> | |||
*<small>'''aliases''' — вопросы к которым подходят ответы из блока answers в виде json:</small> | |||
<small><code>["вопрос","еще вопрос"]</code></small> | |||
| style="width: 50%" |<small>{</small> | |||
<small> "error": 0,</small> | <small> "error": 0,</small> | ||
<small> "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"</small> | |||
<small>}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/question/append/{id}''' | |||
! colspan="2" style="width: 85%" |Добавляет алиасы/кандидаты к другому вопросу | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''aliases''' — JSON list с синонимами</small> | |||
*<small>'''candidates''' JSON list с кандидатами</small> | |||
*<small>'''id''' — идентификатор вопроса к которому добавить синонимы и(или) кандидаты</small> | |||
| style="width: 50%" |<small><nowiki>{error: 0 | 1, message: string}</nowiki></small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/question/approve/{destination_id}''' | |||
! colspan="2" style="width: 85%" |Перемещает кандидаты в формулировки другого вопроса | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''candidates''' — json массив c текстами кандидатов</small> | |||
*<small>'''destination_id''' — идентификатор вопроса</small> | |||
| style="width: 50%" |<small><nowiki>{error: 0 | 1, message: string}</nowiki></small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/question/delete/list''' | |||
! colspan="2" style="width: 85%" |Удаление списка вопросов или ответов | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''questions''' — json строка с перечнем id</small> | |||
*<small>'''type''' — выбор, удалять вопросы или ответы ('''questions''', '''answers''')</small> | |||
| style="width: 50%" |<small>{"error": INT, "message": DESCRIPTION}</small> | |||
|- | |||
! style="color:red;width: 15%" |'''DELETE/qas/question/delete/{id}''' | |||
! colspan="2" style="width: 85%" |Удаление вопроса | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор вопроса</small> | |||
| style="width: 50%" |<small>{"error": INT, "message": DESCRIPTION}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/question/get/{id}''' | |||
! colspan="2" style="width: 85%" | Получение вопроса вместе с ответами и синонимами вопроса | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор вопроса</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small> | |||
<small> "answers": [</small> | |||
<small> { "checked": true,</small> | |||
<small> "channel": "0",</small> | |||
<small> "answer": "ответ" } ],</small> | |||
<small> "aliases": [</small> | |||
<small> "вопрос",</small> | |||
<small> "синоним вопроса",</small> | |||
<small> "еще синоним вопроса" ] }</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/question/list''' | |||
! colspan="2" style="width: 85%" | Получение списка вопросов. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''question''' — фильтр вопросов, ограничение списка по вопросам</small> | |||
*<small>'''category''' — фильтр категорий</small> | |||
*<small>'''answer''' — фильтр ответов, ограничение списка по ответам</small> | |||
*<small>'''created''' — фильтр по дате создания, оставляет вопросы, созданные '''не ранее''' указанной даты</small> | |||
*<small>'''createdBefore''' — фильтр по дате создания, оставляет вопросы, созданные '''не позже''' указанной даты</small> | |||
*<small>'''modified''' — фильтр по дате изменения, оставляет вопросы, '''изменённые в точности''' в указанную дату</small> | |||
*<small>'''onlyNew''' - фильтр, оставляющий только новые (необработанные) вопросы</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small> | |||
<small> "questions": [</small> | |||
<small>{"id": "","question": "","incomplete": "",</small> | |||
<small> "aliases": [],"candidates": [],"category": "",</small> | |||
<small> "checked": 0,"unchecked": 0}</small><small>,</small> | |||
<small>{"id": "","question": "","incomplete": "",</small> | |||
<small> "aliases": [],"candidates": [],"category": "",</small> | |||
<small> "checked": 0,"unchecked": 0}</small> | |||
<small> ] }</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/question/modify/{id}''' | |||
! colspan="2" style="width: 85%" |Модификация вопроса. <small>Позволяет заменить как все параметры так и отдельные</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' — json c измененными параметрами, пример полного:</small> | |||
<small><code>{ "answers": [</code></small> | |||
<small><code> {</code></small> | |||
<small><code> "checked": true,</code></small> | |||
<small><code> "channel": "0",</code></small> | |||
<small><code> "answer": "новый ответ"</code></small> | |||
<small><code> }</code></small> | |||
<small><code> ],</code></small> | |||
<small><code>"question":"новый вопрос",</code></small> | |||
<small><code>"category": "a3801cc0-f8e5-4f3b-bb10-e42148cd772b",</code></small> | |||
<small><code> "aliases": [</code></small> | |||
<small><code> "новый вопрос",</code></small> | |||
<small><code> "синоним",</code></small> | |||
<small><code> "еще синоним"</code></small> | |||
<small><code> ]</code></small> | |||
<small><code>}</code></small> | |||
*<small>'''id''' — идентификатор вопроса</small> | |||
| style="width: 50%" |<small>В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки.</small> | |||
<small>{"error": INT, "message": DESCRIPTION}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/question/replace''' | |||
! colspan="2" |<small>Поиск и замена подстроки. Будут заменены все найденные вхождения</small> | |||
|- | |||
| colspan="2" | | |||
*<small>'''search''' - искомая подстрока, будет заменена</small> | |||
*<small>'''replace''' - текст замены</small> | |||
*<small>'''category''' - в какой категории искать</small> | |||
|<small>{"error": INT, "message": DESCRIPTION,"replacements":INT}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/question/modifyanswers''' | |||
! colspan="2" |Массовая замена текста в указанных ответах. | |||
|- | |||
| colspan="2" | | |||
*<small>'''phrases''' - JSON массив с изменяемым ответами следующего вида:</small> | |||
<small>[</small> | |||
<small>{</small> | |||
<small>'question_id': 'ad895085-2e48-439a-831e-b5f699b6a54a',</small> | |||
<small>'answer_id': 5,</small> | |||
<small>'text': 'новый текст'</small> | |||
<small>}</small> | |||
<small>]</small> | |||
|<small>{"error": 0,"message": "success"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/paraphrase''' | |||
! colspan="2" |Генерация фраз-синонимов для предложения. | |||
|- | |||
| colspan="2" | | |||
*<small>'''text -''' предложение</small> | |||
*<small>'''model''' - какую модель использовать для ответа, если кроме default используются другие модели</small> | |||
*<small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small> | |||
|<small>{"error": 0, "message": "success", "texts": [ "перефразированный текст 1", ... ]}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/questionlist/answers''' | |||
! colspan="2" style="width: 85%" |Отображает лог массовой обработки вопросов | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| style="width: 50%" |<small>на выходе :</small> | |||
<small>массив из объектов {</small> | |||
<small> error: number;</small> | |||
<small> question: string;</small> | |||
<small> answer: string;</small> | |||
<small> confidence: number | null;</small> | |||
<small>}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/questionlist/start''' | |||
! colspan="2" style="width: 85%" | Старт массовой обработки вопросов из файла | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''questions''' - файл с вопросами</small> | |||
*<small>'''format''' - в json или в text файл с вопросами</small> | |||
*<small>'''category''' — id категории документа. Если не указать категорию, метод вернет ответ на основе всех документов в базе данных. Допускается указание нескольких категорий через разделитель "|".</small> | |||
*<small>'''channel''' — id канала</small> | |||
*<small>'''useCache''' — использовать кешированные ответы</small> | |||
<small>возможные варианты:</small> | |||
<small>— "'''no'''" не использовать</small> | |||
<small>- "'''all'''" использовать все</small> | |||
<small>- "'''checked'''" использовать только проверенные</small> | |||
*<small>'''useGPT''' — использовать генеративную сеть для поиска ответов в документах. возможные варианты "'''yes'''" "'''no'''"</small> | |||
*<small>'''model''' - имя модели GPT, если кроме default используются другие модели</small> | |||
*<small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small> | |||
*<small>'''maxDocs''' - максимальное количество документов одной категории для формирования контекста при генерации ответа на вопрос, по умолчанию 1</small> | |||
*<small>'''addAlias''' — добавлять похожие вопросы к синонимам, не создавая отдельного вопроса. возможные варианты "'''yes'''" "'''no'''"</small> | |||
*<small>'''threshold''' - порог достоверности при обработке</small> | |||
| style="width: 50%" |<small><nowiki>{error: 0 | 1, message: string}</nowiki></small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/questionlist/status''' | |||
! colspan="2" style="width: 85%" |Статус массовой обработки вопросов | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| style="width: 50%" |<small>{ error: string;</small> | |||
<small> status: 'started' | 'stopped';</small> | |||
<small> progress: number; }</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/questionlist/stop''' | |||
! colspan="2" style="width: 85%" |Остановка массовой обработки вопросов | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| style="width: 50%" |<small><nowiki>{error: 0 | 1, message: string}</nowiki></small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/mismatchsearcher/start''' | |||
! colspan="2" |Старт поиска несоответствий | |||
|- | |||
| colspan="2" | | |||
*<small>'''category''' — id категории документа. Если не указать категорию, метод вернет ответ на основе всех документов в базе данных. Допускается указание нескольких категорий через разделитель "|".</small> | |||
*<small>'''model''' - имя модели GPT, если кроме default используются другие модели</small> | |||
*<small>'''template''' - ID шаблона запроса к LLM для анализа на несоответствия, необязательный параметр</small> | |||
*<small>'''asktemplate''' - ID шаблона запроса к LLM для генерации ответов по документу, необязательный параметр</small> | |||
*<small>'''answers''' - тип вопросов, по которым осуществляется поиск несоответствий, необязательный параметр, по умолчанию «all»</small> | |||
|<small><nowiki>{error: 0 | 1, message: string}</nowiki></small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/mismatchsearcher/status''' | |||
! colspan="2" style="width: 85%" |Статус поиска несоответствий | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| style="width: 50%" |<small>{ error: string;</small><small><nowiki> status: 'started' | 'stopped';</nowiki></small> | |||
<small> progress: number; }</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/mismatchsearcher/stop''' | |||
! colspan="2" style="width: 85%" |Остановка поиска несоответствий | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| style="width: 50%" |<small><nowiki>{error: 0 | 1, message: string}</nowiki></small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/mismatchsearcher/mismatches''' | |||
| colspan="2" |Статус получения результатов | |||
|- | |||
| colspan="2" |<small>Входные параметры отсутствуют</small> | |||
|<small>{"error": 0,"message": "success","mismatches": [{"question_id": "ID вопроса", "question": "вопрос", "category": "ID категории",</small> <small>"answer_id": "ID ответа", "answer": "ответ на вопрос {question}",</small> <small>"description": "результат поиска", "error" : string,</small> <small>"context": "фрагмент документа", "generatedText" : "Результат генерации"</small> <small>}, ... ]</small> <small>}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/questionmaker/start''' | |||
| colspan="2" |Запуск генерации вопросов | |||
|- | |||
| colspan="2" | | |||
*<small>'''category''' - ID категории, по которой будет происходить генерация вопросов</small> | |||
*<small>'''doc''' - ID документа, по которому будет происходить генерация вопросов</small> | |||
*<small>'''generateAnswers''' - флаг для генерации ответов вместе с вопросами '''[yse|no]''', по умолчанию '''«no»'''</small> | |||
*<small>'''model''' - имя модели GPT, если кроме default используются другие модели</small> | |||
* <small>'''template''' - ID шаблона запроса к LLM для анализа генерации вопросов, необязательный параметр</small> | |||
|<small>{ "error": 0, "message": "success" }</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/questionmaker/status''' | |||
| colspan="2" |Статус генерации вопросов | |||
|- | |||
| colspan="2" |<small>Входные параметры отсутствуют</small> | |||
|<small>{"error": string,</small> <small><nowiki>"status": 'started' | 'stopped',</nowiki></small> <small>"progress": 33.3</small> <small>}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/questionmaker/stop''' | |||
! colspan="2" style="width: 85%" |Прервать генерацию. | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/search''' | |||
! colspan="2" style="width: 85%" |Поиск фрагментов содержащих ответ | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''text''' — текст запроса</small> | |||
*<small>'''category''' — категория (раздел) знаний. Допускается указание нескольких категорий через разделитель "|".</small> | |||
* <small>'''maxDocs''' - максимальное количество документов одной категории для формирования контекста при поиске ответа на вопрос, по умолчанию 1</small> | |||
*'''<small>similarityArea -</small>''' <small>определяет допустимую разницу между максимальной и минимальной релевантностью фрагментов при фильтрации результатов</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small> | |||
<small> "text": "</small> | <small> "text": "</small> | ||
| Строка 1062: | Строка 2228: | ||
<small> "fragments": [</small> | <small> "fragments": [</small> | ||
<small> {</small> | <small> { "id": "3a386b0a9e0e19efb0870685e1d0b484",</small> | ||
<small> "title": "Заголовок документа",</small> | |||
<small> "category": "Категория документа",</small> | |||
<small> "text": "Здесь будет текст найденного фрагмента" },</small> | |||
<small> "id": " | <small> { "id": "44fd73ea1ac63f32cf18d79c854dbfe2",</small> | ||
<small> "title": "Заголовок документа",</small> | <small> "title": "Заголовок документа",</small> | ||
| Строка 1070: | Строка 2242: | ||
<small> "category": "Категория документа",</small> | <small> "category": "Категория документа",</small> | ||
<small> "text": "Здесь будет текст найденного фрагмента"</small> | <small> "text": "Здесь будет текст найденного фрагмента" } ] }</small> | ||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/summarization_template/add''' | |||
! colspan="2" style="width: 85%" |<small>Добавление шаблона протокола. В случае успеха метод вернет id шаблона, в случае неудачи — код ошибки.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''name''' — название шаблона</small> | |||
* <small>'''options''' — json словарь с именами разделов и их описанием</small> | |||
| style="width: 50%" |<small>{ "error": 0, "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"}</small> | |||
|- | |||
! style="color:red;width: 15%" |'''DELETEqas/summarization_template/delete/{id}''' | |||
! colspan="2" style="width: 85%" |<small>Удаление шаблона.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор шаблона</small> | |||
| style="width: 50%" |{"error": INT, "message": DESCRIPTION} | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/summarization_template/get/{id}''' | |||
! colspan="2" style="width: 85%" |<small>Получение json с шаблоном.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор шаблона</small> | |||
| style="width: 50%" |<small>На выходе словарь, основные элементы: data — словарь с шаблоном, остальные элементы этого уровня служебные. В data: id, name (идентификатор и наименование).И options — словарь с разделами шаблона.</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/summarization_template/list''' | |||
! colspan="2" style="width: 85%" |<small>Получение всех шаблонов.</small> | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| style="width: 50%" |<small>На выходе словарь, основной элемент — templates, содержит список шаблонов (каждый шаблон как в выдаче метода GET /qas/summarization_template/get/{id}).</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/summarization_template/modify/{id}''' | |||
! colspan="2" style="width: 85%" |<small>Изменение шаблона.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' — словарь как в выдаче метода GET/qas/summarization_template/get/{id}</small> | |||
*<small>'''id''' — идентификатор шаблона</small> | |||
| style="width: 50%" |<small>{"error": INT, "message": DESCRIPTION}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/summarize''' | |||
! colspan="2" style="width: 85%" |<small>Построение протокола или краткого содержания совещания</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''text''' - текст совещания</small> | |||
*<small>'''options''' — словарь с разделами протокола, где ключ — название раздела, значение - краткая инструкция к формированию раздела.</small> | |||
*<small>'''model''' - какую GPT модель использовать для построения протокола, если кроме default используются другие модели</small> | |||
*<small>'''file''' — файл с текстом (текст, csv, pdf или текстовые офисные документы)</small> | |||
*<small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small> | |||
<small> "message": "success",</small> | |||
<small> | <small> "summary": "здесь текст протокола"</small> | ||
<small> | <small>}</small> | ||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/replace''' | |||
! colspan="2" |корректировка информации в тексте при помощи LLM | |||
|- | |||
| colspan="2" | | |||
*<small>'''text''' - текст</small> | |||
*<small>'''oldinfo''' — старая информация</small> | |||
*<small>'''newinfo''' — новая информация</small> | |||
*'''<small>model</small>''' <small>- какую модель использовать для генерации, если кроме default используются другие модели</small> | |||
*<small>'''template''' - ID шаблона запроса к LLM, необязательный параметр</small> | |||
|<small>{</small><small> "error": 0,</small><small> "message": "success",</small> | |||
<small> | <small> "text": "итоговый текст"</small> | ||
<small> | <small>}</small> | ||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/replacementlist''' | |||
! colspan="2" |список всех фраз в документах и ответов в вопросах, подлежащих правке. <small>Векторно ищет все фрагменты по указанному тексту.</small> | |||
|- | |||
| colspan="2" | | |||
*<small>'''text''' - текст</small> | |||
*<small>'''category''' — категория, в которой производится векторный поиск</small> | |||
*<small>'''threshold''' — порог похожести, необязательный параметр, если не указан, берется из конфигурационного файла (fragments -> threshold)</small> | |||
*<small>'''answers''' - тип вопросов, по которым осуществляется поиск для внесения правок, необязательный параметр, по умолчанию «all»</small> | |||
|<small>[</small> <small>"error": 0,</small> | |||
<small>"message": "success",</small> | |||
<small>"docs": [],</small> | |||
<small>"answers": []</small> | |||
<small>]</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/prompt/add''' | |||
! colspan="2" |Добавление шаблона запроса к LLM. <small>В случае успеха метод вернет id вопроса, в случае неудачи — код ошибки.</small> | |||
|- | |||
| colspan="2" | | |||
*<small>'''type''' — тип шаблона</small> <small>- chat - произвольный чат,</small> <small>- ask - запрос к документам,</small> <small>- cleandoc - очистка документа, форматирование либо другое преобразование,</small> <small>- similars_generator - генерация синонимичных которотких фраз,</small> <small>- paraphrase - перефразировка текста,</small> <small>- summarize - суммаризация текста (формирование краткой выдержки из текста),</small> <small>- question_generator - генерация вопросов по тексту,</small> <small>- replace - замена информации в тексте, mismatch - поиск несоответствий</small> | |||
<small> | *<small>'''name''' — название шаблона</small> | ||
<small> | *<small>'''prompt''' — текст шаблона</small> | ||
<small> | *<small>'''postprompt''' - текст шаблона постобработки результатов (нужен только для summarize)</small> | ||
*<small>'''params''' - параметры запроса к LLM</small>"<small>max_tokens": 4096,</small> <small>"top_k": 30,</small> <small>"top_p": 0.5,</small> <small>"temperature": 0.5,</small> <small>"repeat_penalty": 1.3</small> | |||
|<small>{</small><small> "error": 0,</small> | |||
<small> | <small> "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"</small> | ||
<small>}</small> | <small>}</small> | ||
|- | |- | ||
|<small> | ! style="color:red;width: 15%" |'''DELETE/qas/prompt/delete/{id}''' | ||
<small>/qas/ | ! colspan="2" |Удаление шаблона. | ||
|<small> | |- | ||
| colspan="2" | | |||
*<small>'''id''' — идентификатор вопроса</small> | |||
<small> " | |<small>{"error": INT, "message": DESCRIPTION}</small> | ||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/prompt/get/{id}''' | |||
! colspan="2" |Получение шаблона. | |||
|- | |||
| colspan="2" | | |||
*<small>'''id''' — идентификатор вопроса</small> | |||
|<small>{</small><small> "error": 0,</small><small> "prompt": {</small> | |||
<small> "id": "cleandoc",</small> | |||
<small> "type": "cleandoc",</small> | |||
<small> "isDefault": false,</small> | |||
<small> "name": "Чистка документа",</small> | |||
<small> "prompt": "Удали сноски, колонтитуры и мусорную информацию из текста ниже. Не удаляй ничего лишнего. Не добавляй ничего, только информация из текста. Выведи только конечный результат без отчета о результате.\n###Текст:\n{context}\n\n###Конечный результат:",</small> | |||
<small> "postprompt": "",</small> | |||
<small> "_modified": 1751475766.7460272,</small> | |||
<small> "_created": 1751475766.7460272,</small> | |||
<small> "_modified_date": "2025-07-02",</small> | |||
<small> "_created_date": "2025-07-02"</small> | |||
<small> | <small> }</small> | ||
<small>}</small> | <small>}</small> | ||
|- | |- | ||
| | ! style="color:blue;width: 15%" |'''GET/qas/prompt/list''' | ||
! colspan="2" |Получение списка шаблонов. | |||
| | |||
|- | |- | ||
| | | colspan="2" | | ||
|<small>{</small><small> "error": 0,</small><small> "prompts": [</small> | |||
|<small> | |||
<small> {</small> | |||
<small> | |||
<small> " | <small> "id": "chat",</small> | ||
<small> | <small> "type": "chat",</small> | ||
<small> " | <small> "isDefault": false,</small> | ||
<small> " | <small> "name": "Чат",</small> | ||
<small> " | <small> "prompt": "Ты спокойный вежливый консультант.[\n\n###История переписки:\n{history}]\n\n###Вопрос: {question}\n###Ответ:",</small> | ||
<small> | <small> "postprompt": "",</small> | ||
<small> | <small> "_modified": 1751475766.7460272,</small> | ||
<small> " | <small> "_created": 1751475766.7460272,</small> | ||
<small> " | <small> "_modified_date": "2025-07-02",</small> | ||
<small> " | <small> "_created_date": "2025-07-02"</small> | ||
<small> }</small> | <small> }</small> | ||
| Строка 1142: | Строка 2418: | ||
<small>}</small> | <small>}</small> | ||
|- | |- | ||
| | ! style="color:green;width: 15%" |'''POST/qas/prompt/modify/{id}''' | ||
/qas/ | ! colspan="2" |Модификация шаблона. Позволяет заменить как все параметры, так и отдельные. | ||
|<small> | |- | ||
| colspan="2" | | |||
*<small>'''data''' — json c измененными параметрами:</small> | |||
<small><code>{ "name": "новое имя" }</code></small> | |||
*<small>'''id''' — идентификатор вопроса</small> | |||
|<small>В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки.</small><small>{"error": INT, "message": DESCRIPTION}</small> | |||
|} | |} | ||
===== '''/ | |||
{| class="wikitable" | ====='''/ses: методы работы с роботом'''===== | ||
|+ | |||
!<small>Метод</small> | |||
!<small> | {| class="wikitable" style="width: 110%" | ||
!<small>Входные параметры</small> | |+''Описание методов API'' | ||
!<small> | ! colspan="3" |<small>для некоторых путей, где используется {robot_id} - это обращение к версии черновика, чтобы обращаться к продовой версии - нужен постфикс "_prod", для бэкапа "_backup"</small> | ||
!<small> | <small>актуально для методов</small> | ||
<small>- получения данных робота GET/ses/robot/get/{id}</small> | |||
<small>- применение настроек робота GET/ses/robot/commit/{id}</small> | |||
<small>- экспорт робота GET/ses/robot/export/{id}</small> | |||
<small>- список скриптов GET/ses/robot/script/list/{robot}</small> | |||
<small>- получение скрипта GET/ses/robot/script/get/{robot}/{id}</small> | |||
<small>- список ЭД GET/ses/robot/data/list/{robot}</small> | |||
<small>- получение ЭД GET/ses/robot/data/get/{robot}/{id}</small> | |||
<small>- список КТ GET/ses/robot/endpoint/list/{robot}</small> | |||
<small>- получение КТ GET/ses/robot/endpoint/get/{robot}/{id}</small> | |||
<small>- метода ask (отладчика) POST/ses/ask/{robot_id}</small> | |||
<small>- данные сессии (отладчика) GET/ses/session/{robot_id}/{session_id}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/archive/audio/{uuid}''' | |||
! colspan="2" style="width: 85%" |Получение аудио-файла из архива диалогов | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''uuid''' - идентификатор диалога</small> | |||
| style="width: 50%" |<small>аудио-файл с расширением opus</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/archive/dialog/{uuid}''' | |||
! colspan="2" style="width: 85%" |Получение диалога из архива | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''uuid''' - идентификатор диалога</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success",</small> | |||
<small> "dialog": [{"id": "...", "robot": "...", "channel": "...",</small> | |||
<small> "unknown": true/false, "closed": true/false, "endpoint": "...",</small> | |||
<small> "answered": true/false, "models": [...], "variables": {}, "current": {</small> | |||
<small> "id": "...", "qas": "", "category": "...", "entry": [...],</small> | |||
<small> "nearest": "...", "missingRunData": [...], "waitingRunData": "...",</small> | |||
<small> "answered": true/false, "lastreply": "..."},</small> | |||
<small> "request": {"datetime": "...", "message": "", "data": [...]},</small> | |||
<small> "reply": {"answers": [{"messages": [...], "voice": "...",</small> | |||
<small> "interruptible": true/false, "file": null}],</small> | |||
<small><nowiki> "datetime": "...", "answered": true/false}}]}</nowiki></small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/archive/list''' | |||
! colspan="2" style="width: 85%" |Получение списка диалогов из архива | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''uuid''' - идентификатор диалога</small> | |||
*<small>'''startdate''' - начало временного интервала в формате date %Y-%m-%d %H:%M</small> | |||
*<small>'''enddate''' - конец временного интервала в формате date %Y-%m-%d %H:%M</small> | |||
*<small>'''phone''' - номер телефона</small> | |||
*<small>'''variable''' - переменная в формате variable=value</small> | |||
*<small>'''robot''' - идентификатор робота (id)</small> | |||
*<small>'''text''' - фрагмент текста в любом сообщении</small> | |||
*<small>'''data''' - id элемента данных</small> | |||
*<small>'''channel''' - название канала (коннектора)</small> | |||
| style="width: 50%" |<small>[{"uuid": "...", "datetime": "...","phone": "",</small><small> "channel": [...], "robot": ["..."]}]</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/archive/waveform/{uuid}''' | |||
! colspan="2" style="width: 85%" |Служебный метод для визуализации полученного из архива диалогов аудио-файла, содержит пики сигнала. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''uuid''' - идентификатор диалога</small> | |||
| style="width: 50%" |<small>[0.016,</small> | |||
<small>0.015,</small> | |||
<small>0.01</small><small>]</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/ask/{robot_id}''' | |||
! colspan="2" style="width: 85%" |Получение ответа на запрос пользователя. <small>Метод для отладки робота</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''text''' - текст запроса</small> | |||
*<small>'''channel''' - id канала</small> | |||
*<small>'''connector''' - имя коннектора</small> | |||
*<small>'''session''' - uuid сессии, если это не первый запрос в сессии</small> | |||
*<small>'''tts''' - вернуть результат синтеза (1- вернуть, 0 - не выполнять синтез)</small> | |||
*<small>'''variables''' - словарик с переменными {"переменная1":"значение","переменнаяN":"значение"}</small> | |||
*<small>'''handler''' - python скрипт для изменения ответов метода под требования внешних систем, подробнее в следующем разделе. в поле имя файла без расширения.</small> | |||
*<small>'''restartClosed''' - перезагрузить сессию при её закрытии с новым id (1 - перезагрузить, 0 - не перезагружать)</small> | |||
*<small>'''audio''' - аудиофайл с запросом, текст запроса будет получен распознаванием audio</small> | |||
*<small>'''document''' - документ для последующей обработки</small> | |||
*<small>'''robot_id''' - id робота</small> | |||
*<small>'''endpoint''' - id точки, в которую передать управление диалогом (необязательный параметр, используется для исходящих оповещений)</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "question": "Вопрос",</small> | |||
<small> "answer": [</small> | |||
<small> { "messages": [</small> | |||
<small> "ответ" ],</small> | |||
<small> "voice": "",</small> | |||
<small> "interruptible": true/false,</small> | |||
<small>"file": "" } ],</small> | |||
<small> "session": "",</small> | |||
<small>"uuid": "" }</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/add''' | |||
! colspan="2" style="width: 85%" |Создание нового робота. <small>На выходе id созданного робота или сообщение об ошибке</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''name''' — имя нового робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "id": "2fd2f909-2069-4b20-a725-3a598c83f886"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/apply/{id}''' | |||
! colspan="2" style="width: 85%" | Применение робота. <small>Переводит черновик робота в статус prod. Если до этого был prod вариант — становится backup.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/cleardraft/{id}''' | |||
! colspan="2" style="width: 85%" |Обнуление черновика рабочей версией робота | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/commit/{id}''' | |||
! colspan="2" style="width: 85%" |Применение текущих изменений настроек робота. <small>Применимо ко всем версиям (черновик, рабочая, резервная копия)</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/data/add/{robot}''' | |||
! colspan="2" style="width: 85%" |Добавление элемента данных | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' — json строка с параметрами элемента данных</small> | |||
*<small>'''robot''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:red;width: 15%" |'''DELETE/ses/robot/data/delete/{robot}/{id}''' | |||
! colspan="2" style="width: 85%" |Удаление элемента данных | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор элемента данных</small> | |||
*<small>'''robot''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/robot/data/get/{robot}/{id}''' | |||
! colspan="2" style="width: 85%" |Получение настроек элемента данных | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор элемента данных</small> | |||
*<small>'''robot''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0, "data": {</small><small> "id": "id ЭД", "name": "Имя ЭД", "comment": "",</small> | |||
<small> "type": "...", "rtype": "report", "model": "Имя модели",</small> | |||
<small> "param": "Ответ", "script": "", "weight": 3,</small> | |||
<small> "slaveData": [], "getOnlyAsNearest": true/false,</small> | |||
<small> "injectToMessage": true/false, "longWaiting": true/false,</small> | |||
<small> "dataWaiting": [], "actions": { "alone": {</small> | |||
<small><nowiki> "default": [{"action": "say", "type": "random", "text": ["....."]}]}},</nowiki></small> | |||
<small><nowiki> "exceptions": {}}}</nowiki></small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/robot/data/list/{robot}''' | |||
! colspan="2" style="width: 85%" |Получение списка элементов данных | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''robot''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>[ { "id": "3ebfe38b-95bf-4927-a662-17f6e5da22ea",</small> | |||
<small> "name": "pve", "type": "smc", "rtype": "report",</small> | |||
<small> "weight": 3, "hasNearestAction": false } ]</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/data/modify/{robot}/{id}''' | |||
! colspan="2" style="width: 85%" |Изменение элемента данных. <small>Формат '''data''' как на выходе метода '''GET/ses/robot/data/get/{robot}/{id}'''</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' — json строка с параметрами элемента данных</small> | |||
*<small>'''robot''' — идентификатор робота</small> | |||
*<small>'''id''' — идентификатор элемента данных</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:red;width: 15%" |'''DELETE/ses/robot/delete/{id}''' | |||
! colspan="2" style="width: 85%" |Удаление всех версий робота | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/endpoint/add/{robot}''' | |||
! colspan="2" style="width: 85%" | Создание конечной точки. <small>Формат '''data''' как на выходе метода '''GET/ses/robot/endpoint/get/{robot}/{id}'''</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' — json строка с параметрами конечной точки</small> | |||
*<small>'''robot''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "id": "8576593b-b0d8-4b03-a623-74f3132356ea"}</small> | |||
|- | |||
! style="color:red;width: 15%" |'''DELETE/ses/robot/endpoint/delete/{robot}/{id}''' | |||
! colspan="2" style="width: 85%" |Удаление конечной точки. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''robot''' — идентификатор робота</small> | |||
*<small>'''id''' — идентификатор конечной точки</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/robot/endpoint/get/{robot}/{id}''' | |||
! colspan="2" style="width: 85%" |Получение настроек конечной точки | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''robot''' — идентификатор робота</small> | |||
*<small>'''id''' — идентификатор конечной точки</small> | |||
| style="width: 50%" |<small>{ "error": 0, "data": {</small><small> "id": "...", "name": "...", "comment": "",</small> | |||
<small> "entryType": "conditions",</small> | |||
<small> "entry": [{ "conditions": [{ "type": "...", "depth": 5, "id": "...", "operation": "...", "value": ""}], "run": []}],</small> | |||
<small> "run": [],</small> | |||
<small> "actions": { "default": [{ "action": "...", "voice": "", "type": "...", "interruptible": true/false}]},</small> | |||
<small><nowiki> "type": "report"}}</nowiki></small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/robot/endpoint/list/{robot}''' | |||
! colspan="2" style="width: 85%" |Получение списка конечных точек робота | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''robot''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>[{ "error": 0, "data": {</small><small> "id": "...", "name": "точка 1", "comment": "",</small> | |||
<small> "entryType": "conditions",</small> | |||
<small> "entry": [{ "conditions": [{ "type": "...", "depth": 5, "id": "...", "operation": "...", "value": ""}], "run": []}],</small> | |||
<small> "run": [],</small> | |||
<small> "actions": { "default": [{ "action": "...", "voice": "....", "type": "...", "interruptible": true/false}]},</small> | |||
<small><nowiki> "type": "report"}}]</nowiki></small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/endpoint/modify/{robot}/{id}''' | |||
! colspan="2" style="width: 85%" |Изменение конечной точки. <small>Формат '''data''' как на выходе метода '''GET/ses/robot/endpoint/get/{robot}/{id}'''</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' — json строка с параметрами элемента данных</small> | |||
*<small>'''id''' — идентификатор элемента данных</small> | |||
*<small>'''robot''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/robot/export/{id}''' | |||
! colspan="2" style="width: 85%" |Выгрузка робота в архив | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>zip файл с именем = идентификатор робота</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/robot/files/download/{robot}/{id}''' | |||
! colspan="2" style="width: 85%" |Получение файла. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''robot''' - идентификатор робота</small> | |||
*<small>'''id''' - идентификатор файла</small> | |||
| style="width: 50%" |<small>файл</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/files/upload/{robot}''' | |||
! colspan="2" style="width: 85%" |Отправка файла. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''robot''' - идентификатор робота</small> | |||
*<small>'''file''' - файл</small> | |||
| style="width: 50%" |<small>{"error": 0, "message": "success", "id": "Id файла"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/robot/get/{id}''' | |||
! colspan="2" style="width: 85%" | Выгрузка основных настроек робота | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "data": {</small> | |||
<small> "id": "9fd7f6f1-2cac-4f0f-a121-75c40f2b5e78",</small> | |||
<small> "name": "test",</small><small> "description": "",</small><small> "voice": "",</small> | |||
<small> "session": { "lifetime": 600 },</small> | |||
<small> "models": {},</small><small> "servicedata": {},</small> | |||
<small> "exceptions": {},</small><small> "actions": {},</small> | |||
<small> "holidays": [],</small><small> "timeintervals": {</small> | |||
<small> "name": {</small><small> "weekdays": [ 1, 2, 3, 4, 5, 6, 7 ],</small> | |||
<small> "dates": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],</small> | |||
<small>"months": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],</small> | |||
<small><nowiki>"days": "all", "intervals": [ [ 0, 1440 ] ] }}}}</nowiki></small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/import/{id}''' | |||
! colspan="2" style="width: 85%" |Загрузка архива робота в черновик существующего робота | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''zip —''' файл с архивом робота</small> | |||
*<small>'''id''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/robot/list''' | |||
! colspan="2" style="width: 85%" |Получение списка роботов | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| style="width: 50%" |<small>[ { "id": "9fd7f6f1-2cac-4f0f-a121-75c40f2b5e78",</small><small> "name": "test",</small> | |||
<small> "hasProd": true,</small> | |||
<small> "hasBackup": true } ]</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/modify/{id}''' | |||
! colspan="2" style="width: 85%" |Изменение основных настроек робота. <small>Формат '''data''' как в ответе метода '''GET/ses/robot/get/{id}'''</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' — json строка с новыми настройками робота</small> | |||
*<small>'''id''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/restore/{id}''' | |||
! colspan="2" style="width: 85%" |Откат рабочей версии из бэкапа. <small>Резервная копия становится рабочей, и удаляется, а черновик остается без изменений</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/script/add/{robot}''' | |||
! colspan="2" style="width: 85%" |Добавление нового скрипта. <small>Формат '''data''' как в ответе метода '''GET/ses/robot/script/get/{robot}/{id}'''</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' — json строка с параметрами скрипта</small> | |||
*<small>'''robot''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:red;width: 15%" |'''DELETE/ses/robot/script/delete/{robot}/{id}''' | |||
! colspan="2" style="width: 85%" |Удаление скрипта | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''robot''' — идентификатор робота</small> | |||
*<small>'''id''' — идентификатор скрипта</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |- | ||
| | ! style="color:blue;width: 15%" |'''GET/ses/robot/script/get/{robot}/{id}''' | ||
! colspan="2" style="width: 85%" |Получение текста скрипита | |||
|- | |- | ||
|<small> | | colspan="2" style="width: 50%" | | ||
<small> | *<small>'''robot''' — идентификатор робота</small> | ||
|<small> | *<small>'''id''' — идентификатор скрипта</small> | ||
| style="width: 50%" |<small>{ "error": 0,</small><small> "data": {</small> | |||
<small> "id": "6a9f91b6-9634-4079-ac2b-60a944922c61",</small> | |||
<small>"type": "Тип скрипта",</small> | |||
<small> "name": "Наименование скрипта",</small> | |||
<small> "code": "Текст скрипта" }</small> | |||
<small>}</small> | <small>}</small> | ||
|- | |- | ||
|<small>DELETE</small> | ! style="color:blue;width: 15%" |'''GET/ses/robot/script/list/{robot}''' | ||
<small>/ | ! colspan="2" style="width: 85%" |Получение списка скриптов | ||
|<small> | |- | ||
|<small>id - идентификатор | | colspan="2" style="width: 50%" | | ||
|<small>{</small><small>"error": | *<small>'''id''' — идентификатор робота</small> | ||
| | | style="width: 50%" |<small>[ { "id": "9b9d83b7-d5c3-49e6-9bd4-a123a9047939",</small><small> "name": "наименование1",</small> | ||
<small> "type": "Тип скрипта"},</small> | |||
<small> { "id": "48b508ba-a32b-4ada-bcc3-66ce26d81c6a",</small> | |||
<small> "name": "наименование2",</small> | |||
<small> "type": "Тип скрипта"}]</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/script/modify/{robot}/{id}''' | |||
! colspan="2" style="width: 85%" |Изменение скрипта.<small>Формат '''data''' как в ответе метода '''GET/ses/robot/script/get/{robot}/{id}'''</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' — json строка с параметрами элемента данных</small> | |||
*<small>'''id''' — идентификатор скрипта</small> | |||
*<small>'''robot''' — идентификатор робота</small> | |||
| style="width: 50%" |<small>{ "error": 0,</small><small> "message": "success"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/script/test/{robot}/{id}''' | |||
! colspan="2" style="width: 85%" |Тестирование скрипта. <small>Формат '''data''' как в ответе метода '''GET/ses/session/{robot_id}/{session_id}'''</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' - json строка с параметрами сессии</small> | |||
*<small>'''id''' - идентификатор скрипта</small> | |||
*<small>'''robot''' - идентификатор робота</small> | |||
| style="width: 50%" |<small><nowiki>{"error": 0, "message": "success", "result": {.....}, "variables": {}}</nowiki></small> | |||
|- | |||
! style="color:blue;width: 15%" |'''POST/ses/robot/userdata/data/add/{robot}/{structure}''' | |||
! colspan="2" style="width: 85%" |Добавление записи в пользовательский справочник. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' - json строка в формате <code>{"колонка 1": "значение 1","колонка n":"значение n"}</code></small> | |||
*<small>'''robot''' - идентификатор робота (id)</small> | |||
*<small>'''structure''' - идентификатор пользовательского справочника</small> | |||
| style="width: 50%" |<small>{"error": 0, "id": "id записи"}</small> | |||
|- | |||
! style="color:red;width: 15%" |'''DELETE/ses/robot/userdata/data/delete/{robot}/{structure}/{id}''' | |||
! colspan="2" style="width: 85%" |Удаление записи из пользовательского справочника. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''robot''' - идентификатор робота (id)</small> | |||
*<small>'''structure''' - идентификатор пользовательского справочника</small> | |||
*<small>'''id''' - идентификатор записи (id)</small> | |||
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/robot/userdata/data/list/{robot}/{structure}''' | |||
! colspan="2" style="width: 85%" |Получение данных из пользовательского справочника. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''robot''' - идентификатор робота (id)</small> | |||
*<small>'''structure''' - идентификатор пользовательского справочника</small> | |||
| style="width: 50%" |<small>[{ "колонка 1": "значение 1",</small> <small> "колонка n": "значение n",</small> <small> "id": "id записи"}]</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/userdata/data/modify/{robot}/{structure}''' | |||
! colspan="2" style="width: 85%" | Массовое изменение данных в пользовательском справочнике. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''list''' - json строка в формате <code>[{"колонка 1": "значение 1","колонка n": "значение n", "id": "id строки"}]</code></small> | |||
*<small>'''robot''' - идентификатор робота (id)</small> | |||
*<small>'''structure''' - идентификатор пользовательского справочника</small> | |||
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/userdata/data/modify/{robot}/{structure}/{id}''' | |||
! colspan="2" style="width: 85%" |Изменение одной записи пользовательского справочника. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' - json строка в формате <code>{"колонка 1": "значение 1","колонка n":"значение n"}</code></small> | |||
*<small>'''robot''' - идентификатор робота (id)</small> | |||
*<small>'''structure''' - идентификатор пользовательского справочника</small> | |||
*<small>'''id''' - идентификатор записи (id)</small> | |||
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/userdata/data/put/{robot}/{structure}''' | |||
! colspan="2" style="width: 85%" |Добавление данных с заменой в пользовательском справочнике. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''list''' - json строка в формате <code>[{"колонка 1": "значение 1","колонка n": "значение n", "id": "id строки"}]</code> Поле "id" опционально, при его добавлении данные в строке будут заменены.</small> | |||
*<small>'''replace''' - замена всех данных в справочнике новыми данными. Возможные значения: yes/no. По-умолчанию - yes.</small> | |||
*<small>'''robot''' - идентификатор робота (id)</small> | |||
*<small>'''structure''' - идентификатор пользовательского справочника</small> | |||
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/userdata/structure/add/{robot}''' | |||
! colspan="2" style="width: 85%" |Добавление пользовательского справочника. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' - json строка в формате <code><nowiki>{"id": "id справочника", "name": "справочник", "fields": {"колонка 1": "значение по умолчанию","колонка n":"значение по умолчанию"}}.</nowiki></code> Поле "id" опционально.</small> | |||
*<small>'''robot''' - идентификатор робота (id)</small> | |||
| style="width: 50%" |<small>{"error": 0, "id": "id справочника"}</small> | |||
|- | |||
! style="color:red;width: 15%" |'''DELETE/ses/robot/userdata/structure/delete/{robot}/{id}''' | |||
! colspan="2" style="width: 85%" |Удаление пользовательского справочника. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''robot''' - идентификатор робота (id)</small> | |||
*<small>'''id''' - идентификатор пользовательского справочника</small> | |||
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/robot/userdata/structure/list/{robot}''' | |||
! colspan="2" style="width: 85%" |Получение списка пользовательских справочников. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''robot''' - идентификатор робота (id)</small> | |||
| style="width: 50%" |<small><nowiki>[{"id": "id справочника", "name": "справочник", "fields": {"колонка1": "значение по умолчанию"}}]</nowiki></small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/ses/robot/userdata/structure/modify/{robot}/{id}''' | |||
! colspan="2" style="width: 85%" |Модификация структуры пользовательского справочника. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' - json строка в формате <code><nowiki>{"name": "справочник", "fields": {"колонка 1": "значение по умолчанию","колонка n":"значение по умолчанию"}}.</nowiki></code></small> | |||
*<small>'''robot''' - идентификатор робота (id)</small> | |||
*<small>'''id''' - идентификатор пользовательского справочника</small> | |||
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/session/{robot_id}/{session_id}''' | |||
! colspan="2" style="width: 85%" |Выдает параметры сессии. <small>Для отображения на боковой панели тестирования в UPS. Основные блоки результата:</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''robot_id''' — id робота</small> | |||
*<small>'''session_id''' — id незакрытой сессии</small> | |||
| style="width: 50%" |<small>{ "started": "", "modified": "",</small> | |||
<small> "robot": "",</small> | |||
<small> "session": "",</small> | |||
<small> "channel": "",</small> | |||
<small> "connector": "",</small> | |||
<small> "unknown": true/false,</small> | |||
<small> "current": {"id": "", "qas": "", "answered": true/false, "category": "",</small> | |||
<small> "nearest": "", "entry": [.....], "missingRunData": [],</small> | |||
<small> "passedRunData": [.....], "waitingRunData": null,</small> | |||
<small> "border": int, "preborder": int, "lastreply": ""},</small> | |||
<small> "models": [.....],</small> | |||
<small> "scripts": [.....],</small> | |||
<small><nowiki> "data": [{"request": {.....}, "reply": {.....}}],</nowiki></small> | |||
<small> "timers": [],</small> | |||
<small> "variables": {},</small> | |||
<small> "error": "",</small> | |||
<small> "events": {.....},</small> | |||
<small> "closed": "" }</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/widget/config''' | |||
! colspan="3" style="width: 85%" |Выдает параметры виджета для web канала по запросу js скрипта | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''token''' — уникальный код виджета, создается при внедрении</small> | |||
| colspan="2" style="width: 50%" |<small>Состав конфига канала, для передачи виджету. Подробней в [https://wiki.connect2ai.net/index.php/SES._%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0#%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B2%D0%B8%D0%B4%D0%B6%D0%B5%D1%82%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B0%D0%B9%D1%82%D0%B0 Руководстве администратора]</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/ses/widget/js''' | |||
! colspan="3" style="width: 85%" |Выдает код js скрипта виджета для web-канала | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| colspan="2" style="width: 50%" |<small>Код скрипта</small> | |||
|} | |||
====='''/res: методы работы с сервисом отчетов'''===== | |||
{| class="wikitable" style="width: 110%" | |||
|+''Описание методов API'' | |||
! style="color:blue;width: 15%" |'''GET/res/dashboards''' | |||
! colspan="3" style="width: 85%" |Получить список рабочих столов kibana с наборами отчетов | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| colspan="2" style="width: 50%" |<small>{ "error": 0, "message": "success",</small> | |||
<small> "dashboards": {</small> | |||
<small>"Наименование1": "https://........",</small> | |||
<small><nowiki>"Наименование2": "https://........." }}</nowiki></small> | |||
|} | |||
====='''/transcription: методы работы со стенографией'''===== | |||
{| class="wikitable" style="width: 110%" | |||
|+ | |||
! style="color:blue;width: 15%" |'''GET/transcription/audio/{id}''' | |||
! colspan="3" style="width: 85%" | Получить аудиофайл по id стенограммы. <small>Идентификатор нужной стенограммы можно получить методом</small> | |||
<small>"GET /transcription/list"</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор стенограммы</small> | |||
| colspan="2" style="width: 50%" |<small>wav файл сохраненной стенограммы</small> | |||
|- | |- | ||
| | ! style="color:green;width: 15%" |'''POST/transcription/create''' | ||
! colspan="3" style="width: 85%" |Создание стенограммы из завершенного задания в очереди распознавания. <small>В ответ придет id созданной стенограммы</small> | |||
| | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
*<small>'''taskID''' — идентификатор задания из очереди</small> | |||
| | |||
<small> | |||
<small>" | *<small>'''name''' — имя создаваемой стенограммы</small> | ||
| colspan="2" style="width: 50%" |<small>{"error": 0,</small> | |||
<small>" | <small>"message": "success",</small> | ||
<small>" | <small>"id": "74721a3b-9055-4650-9afb-de4d103cafc7"}</small> | ||
|- | |||
! style="color:red;width: 15%" |'''DELETE/transcription/delete/{id}''' | |||
! colspan="3" style="width: 85%" |Удаление стенограммы | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор стенограммы</small> | |||
| colspan="2" style="width: 50%" |<small>{"error": 0,"message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/transcription/get/{id}''' | |||
! colspan="3" style="width: 85%" |Получение стенограммы. <small>Используется для отображения стенограммы в веб интерфейсе</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор стенограммы</small> | |||
| colspan="2" style="width: 50%" |<small>стенограмма в json формате</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/transcription/list''' | |||
! colspan="3" style="width: 85%" |Получение списка сохраненных стенограмм | |||
|- | |||
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | |||
| colspan="2" style="width: 50%" |[ { "id": "926e8d25-4275-4a78-906b-a1109cdacbea", | |||
"name": "название", | |||
"model": "big", | |||
"created": "2024-03-29 12:37:42", | |||
"modified": "2024-04-24 16:09:09", | |||
"user": "0", | |||
<small> | "dataset": "0" }, .... ] | ||
|- | |||
! style="color:green;width: 15%" |'''POST/transcription/save/{id}''' | |||
! colspan="3" style="width: 85%" |Сохранение стенограмы. <small>Используется для сохранения изменений по нажатию кнопки «Сохранить».</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''data''' — стенограмма в json формате</small> | |||
<small> | *<small>'''id''' стенограммы</small> | ||
| <small> | | colspan="2" style="width: 50%" |<small>{"error": 0,"message": "success"}</small> | ||
|- | |- | ||
| | ! style="color:blue;width: 15%" |'''GET/transcription/waveform/{id}''' | ||
! colspan="3" style="width: 85%" |Служебный метод для отображения аудио в графическом виде, <small>ответ содержит пики сигнала</small> | |||
| | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
<small> | *<small>'''id''' стенограммы</small> | ||
|<small> | | colspan="2" style="width: 50%" |<small>{ "error": 0,</small> | ||
<small>"waveform": [</small> | |||
<small> 0.016,</small> | |||
<small> ..........</small> | |||
<small> ..........</small> | |||
<small> 0.015,</small> | |||
<small> | |||
<small> 0.01 ] }</small> | |||
|} | |} | ||
Текущая версия от 12:47, 29 октября 2025
Описание часто используемых параметров
| Параметр | Тип | Описание |
|---|---|---|
| servicetype | запрос | Тип сервиса. Возможные значения: spr, smc, see, sbs, tts. |
| servertype | запрос | Тип группы серверов. Возможные значения: trainer (серверы обучения), cluster (рабочие серверы). |
| model | запрос | Название модели. |
| modeltype | запрос | Тип модели. Возможные значения: future — планируемая/черновик, current — текущая/рабочая, previous — архивная. |
| error | ответ | Флаг ошибки. |
| message | ответ | Информационное сообщение. |
"/external modules" методы внешних модулей
В этом разделе будут методы соответствующим образом оформленных внешних модулей
/auth: методы авторизации
| POST/auth/access | Получение токенов доступа. Токен доступа определяет, какие из методов будут доступны конкретному пользователю. Формируется на основании роли. Дополнительный входной параметр во всех методах, кроме перечисленных в разделе «nopassword» конфигурационного файла. Время действия токена определяется параметром auth.accessLifeTime конфигурационного файла. | ||
|---|---|---|---|
|
{
"x-access-token": "XXXXXXXXXXXXXXXXXXXX", "x-refresh-token": "XXXXXXXXXXXXXXXXXXXX" } | ||
| POST/auth/dataset/add | Добавление dataset (набора данных). Dataset (набор данных) используется для ограничения доступа к данным. В ответе метод вернет id созданного набора данных. | ||
|
{
"error": 0 "message": "success", "dataset_id": "XXXXXXXXXXXXX" } | ||
| DELETE/auth/dataset/delete/{id} | Удаление dataset (набора данных). | ||
|
{
"error": 0, "message": "success" } | ||
| POST/auth/dataset/modify/{id} | Переименование dataset (набора данных). Метод меняет все параметры набора данных, но на данный момент времени у набора данных, кроме id, только один параметр — наименование. | ||
|
{
"error": 0, "message": "success" } | ||
| GET/auth/datasets | Получение списка наборов данных. | ||
| Нет входных параметров | [
{"id": "XXXXXXXXXXXXXXXXXX", "name": "XXX"}, {"id": "0", "name": "По умолчанию"} ] | ||
| GET/auth/refresh | Обновление токенов доступа. Время, в течение которого можно обновить доступ, регулируется параметром auth.refreshLifeTime конфигурационного файла. Служебный метод, используется в основном в веб-интерфейсе, чтобы не запрашивать лишний раз пароль. | ||
|
{
"x-access-token": "XXXXXXXXXXXXXXXXXXXX", "x-refresh-token": "XXXXXXXXXXXXXXXXXXXX" } | ||
| GET/auth/rights | Получение списка прав доступа. Служебный метод — по токену получает название роли и все права доступа этой роли, а также общедоступные методы. | ||
| Нет входных параметров | <<<{ "РОЛЬ": [
"GET:/......" ], "nopassword": [ "GET:/.......", ............... <<<............... "POST:/......." ] } | ||
| POST/auth/role/add | Создание роли. Служебный метод — используется веб-интерфейсом при создании роли. | ||
"name": "проверка создания", "rights": [ "набор прав через запятую" ] } |
{
"error": 0, "message": "success", "role_id": "a7e68bb83169f864c2fc868401b5250c" } | ||
| DELETE/auth/role/delete/{id} | Удаление роли. | ||
|
{"error": 0,"message": "success"} | ||
| POST/auth/role/modify/{id} | Изменение роли. Параметры как при создании роли. Роль будет переписана. | ||
"name": "проверка создания", "rights": [ "набор прав через запятую" ] } |
{"error": 0,"message": "success"} | ||
| GET/auth/roles | Получение списка ролей. | ||
| Нет входных параметров | [{
"id": "XXXXXXXXXXX", "name": "имя роли", "rights": [ "набор прав через запятую" ] },............] | ||
| POST/auth/user/add | Создание нового пользователя. Метод вернет или id нового пользователя или описание ошибки | ||
"username": "login_name", "fullname": "Отображаемое Имя","password": "XXXXX","role": "role_id", "dataset": "default dataset id", "datasets": [ "dataset id", ................. ] } |
{"error": 0,
"message": "success", "user_id": "XXXXXXXXXXXXXXXX"} | ||
| DELETE/auth/user/delete/{id} | Удаление пользователя | ||
|
{"error": 0,"message": "success"} | ||
| GET/auth/user/get/{id} | Получение параметров пользователя | ||
|
{"id": "XXXXXXXXXX",
"username": "loginname", "fullname": "Full Name", "role": "0", "dataset": "0", "datasets": [ "0", "2dc34d3454243522e5407d3a170815a2" ] } | ||
| GET/auth/user/info | Получение параметров пользователя по его токену доступа. Служебный метод - для предоставления прав текущему пользователю по его токену | ||
|
{"id": "XXXXXXXXXX",
"username": "loginname", "fullname": "Full Name", "role": "0", "dataset": "0", "datasets": [ "0", "2dc34d3454243522e5407d3a170815a2"] }, "rights": [..........] } | ||
| GET/auth/user/list | Получение списка пользователей с их параметрами. Тоже самое что и в методе GET /auth/user/info, только для всех пользователей | ||
| Нет входных параметров | [
{"id": "XXXXXXXXXX", "username": "loginname", "fullname": "Full Name", "role": "0", "dataset": "0", "datasets": [ "0", "2dc34d3454243522e5407d3a170815a2"] }, "rights": [..........] }, ...... ] | ||
| POST/auth/user/modify/{id} | Изменение параметров пользователя | ||
|
{ "error": 0,
"message": "success"} | ||
| POST/auth/user/password | Смена пароля пользователя по его токену доступа. | ||
|
{ "error": 0,"message": "success"} | ||
| POST/auth/userlog | Получение действий пользователя за период времени по его токену | ||
|
{
"error": 0, "message": "success", "data": [ [ "время", "id", "метод", {измененные данные в формате метода} ], [ "время", "id", "метод", {измененные данные в формате метода} ], ......... } | ||
| GET/auth/version | Получение версии сервиса ups | ||
| Нет входных параметров | {
"version": "4.082 release" } | ||
/lang: методы мультиязычности
| GET/lang/ | Выводит информацию о переводе элементов интерфейса на текущий язык | ||
|---|---|---|---|
| Нет входных параметров | { "see":"Сущности",
"smc":"Классификатор", ... } | ||
| GET/lang/wallpaper | Отдает случайный фон рабочего стола в виде jpeg из каталога «wallpapers» на сервере ups | ||
| Нет входных параметров | image/jpeg | ||
/server: получение информации о серверах
| GET/server/get/addresses/{servicetype} | Вывод информации о серверах, обслуживающих данный сервис, а также настроенных параметров обращения к данным серверам.
trainer — сервер обучения, cluster — рабочие серверы, connect — время на подключение, read — время на ответ, failed — время пребывания в сбойных, install — время на установку модели, info — время на получение информации о модели, counter — счетчик запросов, current — индекс последнего опрошенного cluster-сервера fail — массив сбойных серверов со временем постановки в сбой. | ||
|---|---|---|---|
|
{ "trainer": "http://127.0.0.1:6181",
"cluster": [ "http://127.0.0.1:6181" ], "timers": { "connect": 0.5, "read": 1, "failed": 600, "install": 60, "info": 3 }, "counter": 0, "current": 0, "fail": {"http://127.0.0.1:6181":1686295678} } | ||
| GET/server/get/models/{servicetype}/{servertype} | Вывод информации о моделях указанного сервиса на каждом сервере указанного типа. Вывод представляет собой массив URL-серверов, для каждого из которых указан список моделей. | ||
|
{ "http://127.0.0.1:6181": [
"model1", ... "modelN" ], ... } | ||
/model: методы работы с моделями
| POST/model/add/{servicetype}/{model} | Создание пустой модели в указанном сервисе. Доступно для следующих сервисов: smc, see, spr. | ||
|---|---|---|---|
|
{
"error":0, "message":"success" } | ||
| POST/model/apply/{servicetype}/{model} | Применение установленной на рабочих серверах модели. После применения модель становится доступна для штатного режима работы. Доступно для следующих сервисов: smc, see, spr. | ||
|
{
"error":0, "message":"success" } | ||
| DELETE/model/delete/{servicetype}/{model} | Полностью удаляет модель из системы и со всех управляемых серверов. Доступно для следующих сервисов: smc, see, spr. | ||
|
{
"error":0, "message":"success" } | ||
| GET/model/errors/{servicetype}/{model}/{modeltype} | Запрос на получение списка ошибок модели после тестирования/обучения. Доступен для сервисов see и smc. Ответ содержит список вложенных списков. В каждом три значения: правильное значение, предсказанное моделью значение и начальные данные (фраза). | ||
- train ошибки обучения - test ошибки тестирования - mark ошибки авторазметки
|
[ [true, predicted, phrase],
... ] | ||
| GET/model/export/{servicetype}/{model}/{modeltype} | Экспорт модели, модель скачивается в виде zip-архива. | ||
|
Файл model.zip, где model — название модели | ||
| DELETE/model/handler/{servicetype}/{model} | Удаление постобработчика из модели типа future. Более подробно об обработчике см. руководства пользователя smc и see. | ||
|
{"error":0,
"message":"success" } | ||
| POST/model/handler/{servicetype}/{model} | Отправка файла-постобработчика в указанную модель типа future. Обработчик становится активным сразу после успешной отправки. Более подробно об обработчике см. руководства пользователя smc и see. | ||
|
{"error":0,
"message":"success" } | ||
| GET/model/handler/{servicetype}/{model} | Получение файла-постобработчика из модели типа future. | ||
|
Файл handler.py | ||
| DELETE/model/handler/{servicetype}/{model}/{modeltype} | Удаление постобработчика в указанной модели указанного типа. | ||
|
{
"error":0, "message":"success" } | ||
| POST/model/handler/{servicetype}/{model}/{modeltype} | Отправка файла-постобработчика в указанную модель указанного типа. Становится активным сразу после успешной отправки. | ||
|
{
"error":0, "message":"success" } | ||
| GET/model/handler/{servicetype}/{model}/{modeltype} | Получение файла-постобработчика из указанной модели указанного типа. | ||
|
Файл handler.py | ||
| POST/model/import/{servicetype}/{model} | Импортирует модель в черновик (modeltype=future) | ||
|
{
"error":0, "message":"success" } | ||
| GET/model/info/{servicetype} | Получение информации о всех моделях указанного сервиса. Аналогичен методу GET /info/{servicetype}/{model}, но выводит информацию обо всех моделях. | ||
|
{ "model1": {
"previous": null, "current": null, "future": { "status": "empty", ... } }, ... } | ||
| GET/model/info/{servicetype}/{model} | Получение информации о каждом типе (modeltype) указанной модели. Итоговый массив содержит переменные типа modeltype, в каждой из который содержится информация о модели. | ||
|
{ "previous": null,
"current": { "status": "trained", ... }, "future": { "status": "trained", ... } } | ||
| POST/model/install/{servicetype}/{model} | Установка импортированной или обученной модели на рабочих серверах.
Доступно для следующих сервисов: smc, see, spr. | ||
|
{
"error":0, "message":"success" } | ||
| GET/model/log/{servicetype}/{model}/{modeltype} | Выводит лог обучения и тестирования модели. Доступно для следующих сервисов: smc, see. | ||
|
[
"training", "preparing data", "tokenizing", ... ] | ||
| POST/model/restore/{servicetype}/{model} | Откат модели. Делает текущую рабочую модель черновиком (future), рабочие серверы после выполнения данного метода продолжают уже с возвращенной моделью. Схематично действия над modeltype в результате выполнения данного метода можно представить так:
| ||
|
{"error":0,
"message":"success" } | ||
/corpus: работа с данными для обучения моделей
Методы данного класса предназначены только для сервисов smc и see
| GET/corpus/automark/list | Перечень заданий автоматической маркировки корпусов. | ||
|---|---|---|---|
| Нет входных параметров | { "error": 0,
"message": "success", "tasks": [ { "id": "29d9da98-d6c1-4dc1-bbc9-111309816002", "taskname": "test_doc", "status": "finished" }, { "id": "1a5e9bdc-9f98-49d2-84de-1a9bde8fc37c", "taskname": "sssss", "status": "finished" } ] } | ||
| GET/corpus/automark/result/{id} | Результат выполнения задания на автомаркировку корпуса. Если задание завершено в ответе придет маркированый корпус и время старта и финиша задания | ||
|
{
"error": 0, "message": "success", "started": "2024-10-09 18:05:51", "finished": "2024-10-09 18:05:51", "corpus": [[ [], [ ["тэг"],"фраза 1"]], [ [], [["тэг"],"фраза 2"]] ] } | ||
| GET/corpus/automark/start | Начать автоматическую разметку корпуса. | ||
[ [класс1,... классН], текст ]]
[ метка, [синоним, синоним2 ... синоним Н], порог ]]
|
{
"error": 0, "message": "success", "id": "уникальный id задания" } | ||
| GET/corpus/automark/status/{id} | Получить статус задания на автоматическую разметку корпуса. | ||
|
{
"error": "", "status": "finished", "started": "2024-10-09 13:49:46", "finished": "2024-10-09 13:49:46", "progress": 0 } | ||
| GET/corpus/automark/stop/{id} | Прервать задание на автоматическую разметку корпуса. | ||
|
{ "error": 0,
"message": "success"} | ||
| POST/corpus/copy/{servicetype} | Копирование корпуса данных | ||
|
{
"error": 0, "message": "success" } | ||
| DELETE/corpus/delete/{servicetype} | Удаляет корпус с данными | ||
|
{ "error": 0,
"message": "success"} | ||
| GET/corpus/export/{servicetype} | Возвращает текстовый файл с корпусом, содержащий строки вида КЛАСС<TAB>ФРАЗА | ||
|
Файл name.txt | ||
| GET/corpus/get/{servicetype} | Возвращает JSON с данными корпуса | ||
|
[
| ||
| POST/corpus/import/{servicetype} | Метод для импорта корпуса данных. Возможен как из текстового файла со строками вида КЛАСС<TAB>ФРАЗА (доступно для smc и see), так и из логов работы системы (только для smc). Если на вход поступил файл csv, происходит импорт из файла, в противном случае — из логов. | ||
|
{
"error": 0, "message": "success" } | ||
| GET/corpus/list/{servicetype} | Возвращает список всех корпусов данных для указанного типа сервиса | ||
|
[ "корпус1",
"корпус2", ...] | ||
| POST/corpus/put/{servicetype} | Перезаписывает корпус отправленным массивом данных | ||
|
{
"error": 0, "message": "success" } | ||
| POST/corpus/rename/{servicetype} | Переименование корпуса | ||
|
{
"error": 0, "message": "success" } | ||
/marks: работа с наборами меток в smc
| POST/marks/add | Добавление набора менток | ||
|---|---|---|---|
["синоним1", "синоним2", "синоним3", "синонимN" ], 0.9 # достоверность для метки (0 - 1) ], [ "меткаN", ["синоним11", "синоним21","синоним31", "синонимN1"], 0.9 # достоверность для метки (0 - 1) ] ]
|
{
"error": 0, "message": "success", "id": "132310fa-98c7-4b12-896f-ff113827d077" } | ||
| DELETE/marks/delete/{id} | Удаление набора меток | ||
|
{ "error": 0,
"message": "success" } | ||
| GET/marks/export/{id} | Получение набора меток в виде строк | ||
|
Пример:
метка1 синоним1,синоним2,синоним3,синонимN 0.9 меткаN синоним11,синоним21,синоним31,синонимN1 0.9 | ||
| GET/marks/get/{id} | Получение набора меток в виде json | ||
|
Пример:
{ "error": 0, "message": "success", "data": [ ["метка1", [ "синоним1", "синоним2", "синоним3", "синонимN" ], 0.9 ], ["меткаN", ["синоним11","синоним21", "синоним31","синонимN1"], 0.9 ] ] } | ||
| POST/marks/import/{id} | Импорт в существующий набор меток из файла. Набор будет переписан из файла | ||
|
{ "error": 0,
"message": "success" } | ||
| GET/marks/list | Получение списка наборов меток | ||
| Нет входных параметров | Пример:
{ "error": 0, "message": "success", "result": [ { "id": "416fbe08-19e9-453c-b140-37008a08a76c","name": "test" }, {"id": "16e77fa2-7c4d-47f9-8644-6385876525d6","name": "Рыжик" }, {"id": "132310fa-98c7-4b12-896f-ff113827d077", "name": "test" } ]} | ||
| POST/marks/put/{id} | Импорт в существующий набор меток из json строки. Набор будет переписан | ||
["синоним1", "синоним2", "синоним3", "синонимN" ], 0.9 # достоверность для метки (0 - 1) ], [ "меткаN", ["синоним11", "синоним21","синоним31", "синонимN1"], 0.9 # достоверность для метки (0 - 1) ] ]
|
{ "error": 0,
"message": "success" } | ||
| POST/marks/rename/{id} | Присваивает новое наименование существующему набору меток | ||
|
{ "error": 0,
"message": "success" } | ||
/spr: работа с сервисом SPR
| GET/spr/audio/{taskID} | Получение аудиофайла отложенного задания | ||
|---|---|---|---|
|
Wav файл | ||
| GET/spr/queue | Получение очереди отложенных заданий. Выводит очередь со статусами выполнения заданий. Статусы: ready — готово, waiting — ожидание, failed — сбой | ||
| Нет входных параметров | { "id задания": {
"created": "ХХХХ-ХХ-ХХ ХХ:ХХ:ХХ", "status": "waiting", "filename": "wav"} | ||
| DELETE/spr/queue/{taskID} | Удаление задания из очереди | ||
|
{"error": 0,
"message": "success"} | ||
| GET/spr/result/{taskID} | получениеПезультатов распознавания отложенного задания. Статусы: ready — готово, waiting — ожидание, failed — сбой, not found — не найдена | ||
|
Вывод аналогичен выводу метода stt + добавлено поле status, которое содержит информацию о статусе отложенной задачи | ||
| POST/spr/stt/{model} | Отправка файла на распознавание речи. Моно-файлы до 30 секунд распознаются без разбивки на фрагменты. Многоканальные файлы и файлы длиннее 30 секунд предварительно разбиваются на фрагменты по отсутствию речи. Настройка данных параметров описана в руководстве администратора spr. | ||
|
В случае async=1 возвращается только taskID, результат по taskID смотреть в методе /spr/result.
Для коротких файлов:
Для транскрибации больших файлов:
| ||
| GET/spr/waveform/{taskID} | Служебный метод для отображения аудио в графическом виде, содержит пики сигнала. | ||
|
{"error": 0,
"waveform": [ 0.016, 0.015, 0.01 ] } | ||
/smc: работа с сервисом SMC
| GET/smc/classify/{id} | Классификация текстовой фразы. В случает если модель была создана из меток в ответе groups и nearest будут пустыми, а ответ будет построен без учета confidenceThreshold из запроса.
В ответе:
| ||
|---|---|---|---|
|
{
| ||
| GET/smc/compress | Убирает из фразы слова не влияющие на ее смысл. | ||
|
{ "text": "сжатый текст"} | ||
| GET/smc/correct | Коррекция правописания. Изменяет неправильно написанные слова, меняя их на наиболее близкие правильные (из знакомых модели). Если модель коррекции не смогла предложить правильное написание текста, метод вернёт текст неизменным. | ||
|
{ "text": "корректный текст" } | ||
| GET/smc/emotion | Анализ эмоций. На выходе один из вариантов: positive, negative, neutral. | ||
| text — фраза для анализа эмоций | { "emotion": "positive", "score": 0.9601 } | ||
| POST/smc/groups/{model} | Добавляет к модели группы из корпуса. Группы в модели будут перезаписаны | ||
|
{ "error": 0,
"message": "string"} | ||
| GET/smc/groups/{model} | Поиск групп по ранее полученным меткам. Ищет группы по набору меток. Результат — группы (если найдены) и ближайшие группы с указанием недостающих меток. Позволяет сохранять контекст в виде меток и дозапрашивать группы с учетом контекста. | ||
|
{"groups": [
{ "group": "Группа 1", "intersection": 3, "classes": [ "метка1_о", "метка2_о", "метка3_о" ] }, { "group": "Группа 2", "intersection": 2, "classes": [ "метка1_о", "метка5_о" ] }], "nearest": [ { "group": "Группа до которой не хватило 1 метки", "percent": 0.75, "need": "недостающая метка_о" } ] } | ||
| GET/smc/normalize | Обратная нормализация текста. Пример: двадцать пятого апреля в пятом часу — 25 апреля в 5-м часу. | ||
|
{"text": "<строка после обратной нормализации>"} | ||
| GET/smc/punctuate | Расстановка знаков препинания | ||
|
{ "text": "string" } | ||
| POST/smc/stop/{model} | Остановка обучения модели. Удаляет тестовую версию модели с сервера обучения, тем самым прерывает обучение. | ||
|
{ "error": 0,
"message": "string"} | ||
| POST/smc/test/{model} | Запуск тестирования модели smc. Метод асинхронный, статус тестирования можно запросить методом GET/info/{servicetype}/{model} | ||
|
{ "error": 0,
"message": "success" } | ||
| GET/smc/toxicity | Определение токсичности высказывания. Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1: | ||
|
{ "insult": 0.13, # оскорбление
"obscenity": 0, # брань "threat": 0, # угрозы "politeness": 0.53 вежливость} | ||
| POST/smc/train/{model} | Добавление модели. | ||
|
{ error: INT, message: DESCRIPTION } | ||
/see: работа с сервисом SEE
| GET/see/entities/{model} | Поиск сущностей. Вернется массив со всеми моделями, в которых были найдены сущности (модели для поиска указываются в поле id). Каждая переменная с названием модели будет содержать список всех найденных сущностей. | ||
|---|---|---|---|
|
{ ID-модели: [
{ position: 0, # позиция слова начала фрагмента, определяющего сущность confidence: 1, #вероятность правильного определения сущности text: текст сущности, calculated: vaktsinatsiya # поле, содержащее значение сущности, использованный при обучении модели }, {...} ] } | ||
| POST/see/stop/{model} | Остановка обучения модели | ||
|
{ "error": 0,
"message": "success"} | ||
| POST/see/train/{model} | Запуск обучения модели future | ||
|
{ "error": 0,
"message": "success"} | ||
/sbs: работа с сервисом SBS
| POST/sbs/analyze | Получение аналитических метаданных из голосового фрагмента. Вернется массив с метаданными голосового фрагмента. | ||
|---|---|---|---|
|
Пример:
{ age: { class: 20-29, # {"00-05", "06-12", "13-19", "20-29", "30-39", "40-49", "50-59", "60+"} confidence: 0.99 }, emotion: { class: SADNESS, # { "ANGER", "BORE", "DISAPPOINTMENT", "DISGUST", "EXCITEMENT", "FEAR", "NEUTRAL", "PAIN", "PLEASURE", "SADNESS", "SUPRISE"} confidence: 0.99 }, gender: { class: FEMALE, # { "MALE", "FEMALE" } confidence: 0.99 } } | ||
| POST/sbs/noiselevel | Возвращает процент зашумленности аудио | ||
|
Пример ответа:
| ||
| POST/sbs/search | Поиск говорящего по базе слепков. | ||
|
Пример ответа:
{ error: 0, speaker: Ivan, confidence: 0.79 } | ||
| POST/sbs/speakers/add | Добавление слепка в базу. | ||
|
{
"error": 0, "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433" } | ||
| DELETE/sbs/speakers/delete/{id} | Удаление слепка из базы. | ||
|
{ error: INT, message: DESCRIPTION } | ||
| GET/sbs/speakers/list | Получение списка всех слепков. | ||
| Входные параметры отсутствуют | [ {
"id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433", "name": "наименование слепка" }] | ||
| POST/sbs/speakers/modify/{id} | Дообучение слепка. | ||
|
{ "error": 0,
"message": "Success"} | ||
| POST/sbs/verify/{id} | Сравнение wav-файла cо слепком в базе. В ответе - вероятность совпадения от 0 до 1. | ||
|
{ "error": 0, "confidence": 0.78 } | ||
/tts: методы работы с сервисом tts
| GET/tts/dictionary/export | Выгрузка пользовательского словаря ударений. | ||
|---|---|---|---|
| Входные параметры отсутствуют | Простой текст — строки со словом и его интерпретацией с ударением. | ||
| GET/tts/dictionary/get | Выгрузка пользовательского словаря ударений в виде json. | ||
| Входные параметры отсутствуют | [ [ "слово", "замена слова с удар+ением"],
[ "слово2", "замена слова2 с удар+ением"], ...] | ||
| POST/tts/dictionary/import | Загрузка пользовательского словаря ударений. Текущий словарь будет переписан. | ||
|
{ "error": 0,
"message": "сообщение о статусе результата"} | ||
| POST/tts/dictionary/put | Загрузка пользовательского словаря ударений в виде json. Текущий словарь будет переписан. | ||
|
{
"error": 0, "message": "сообщение о статусе результата" } | ||
| POST/tts/normalize | Нормализация текста — перевод цифр в слова и расстановка ударений (ударения только в нормализованной части фразы), например «в понедельник 10.10.2025» -> «в понедельник дес+ятого октябр+я две т+ысячи дв+адцать п+ятого г+ода». | ||
|
{ "error": 0,
"message": "success", "text": "нормализованный текст" } | ||
| POST/tts/revoice/{revoicer} | Модификация или искажение голоса | ||
|
wav-файл с модифицированным (искаженным) голосом | ||
| GET/tts/revoicers | Перечень моделей модификации или искажения голоса. Модели поставляются только в составе дистрибутива. Модель distortion — искажение голоса, делает голос неузнаваемым и речь неразборчивой. | ||
| Входные параметры отсутствуют | [ "distortion" ] | ||
| POST/tts/synthesize/{model} | Синтез звукового файла из текста/ | ||
|
файл с синтезированой фразой | ||
/qas: методы работы с сервисом qas
| GET/qas/ask | Метод генерирует ответ на поставленный вопрос на основе информации из документов в базе. Ответ на вопрос генерируется на основе информации, содержащейся в одном или нескольких документах. Документы должны быть в текстовом формате. Ответ возвращается в формате JSON, его можно скачать. Если метод не смог найти ответ, возвращается код ошибки и сообщение. | |
|---|---|---|
возможные варианты: - "no" не использовать - "all" использовать все - "checked" использовать только проверенные
|
{
"error": 0, "text": "Здесь будет текст ответа" } | |
| GET/qas/cachemaker/start | Генерация ответов на вопросы в кэше. | |
|
{"error": 0, "message": "success"} | |
| GET/qas/cachemaker/status | Состояние генерации ответов на вопросы в кэше. Статусы: started, stopped, если были ошибки, поле ответа error будет содержать код ошибки. | |
| Входные параметры отсутствуют | { "error": "",
"status": "started", "progress": 33.33} | |
| GET/qas/cachemaker/stop | Остановить генерацию ответов на вопросы в кэше. | |
| Входные параметры отсутствуют | {"error": 0, "message": "success"} | |
| POST/qas/category/add | Добавить категорию с указанным именем. В ответе — id созданной категории или сообщение об ошибке: | |
|
{ "error": 0,
"message": "success", "id": "ad895085-2e48-439a-831e-b5f699b6a54a" } | |
| DELETE/qas/category/delete/{id} | Удалить категорию. В ответе или сообщении об успехе, или ошибке, если категория используется или не существует. | |
|
{ "error": 0,
"message": "success" } | |
| GET/qas/category/list | Получить список категорий | |
| Входные параметры отсутствуют | В ответе json с именами и id категорий | |
| POST/qas/category/modify/{id} | Изменить категорию. У категории пока есть только наименование, поэтому метод только переименовывает категорию | |
|
{ "error": 0,
"message": "success" } | |
| POST/qas/channel/add | Добавление канала. В ответе id созданного канала или сообщение об ошибке | |
|
{"error": 0,
"message": "success", "id": "a46fb887-5d98-41e0-8299-bcc94f615e91"} | |
| DELETE/qas/channel/delete/{id} | Удаление канала | |
|
{ "error": 0, "message": "success" } | |
| GET/qas/channel/list | Получить список всех каналов | |
| Входные параметры отсутствуют | { "error": 0,
"channels": [ { "id": "1", "name": "voice" }, { "id": "56442779-e871-43fd-ae4d-caf4ab6d09b9", "name": "канал++" }, { "id": "0", "name": "default" } ] } | |
| POST/qas/channel/modify/{id} | Изменить канал. У канала пока есть только наименование, поэтому метод только переименовывает канал | |
|
{ "error": 0,
"message": "success" } | |
| POST/qas/chat | Поиск ответа за пределами документов. На стадии разработки, не используется. | |
|
Пример ответа на вопрос "как пройти в библиотеку"{"error": 0,
"text": "1. Проверить время работы библиотеки (обычно от 9 до 20)\n2. Проверить местоположение библиотеки на карте или с помощью сервиса Google Maps\n3. Убедиться, что у вас есть необходимые документы для входа (паспорт, карта члена библиотеки и т.д.)\n4. Посетить библиотеку по адресу: [адрес библиотеки]\n5. Проверить правила поведения в библиотеке перед входом" } | |
| POST/qas/cleandoc/start | Очистка документа от лишней информации | |
|
{"error": 0, "message": "success"} | |
| GET/qas/cleandoc/stop | Остановка очистки документа для конкретного пользователя | |
|
{"error": 0, "message": "success"} | |
| GET/qas/cleandoc/status | Статус очистки документа для конкретного пользователя | |
|
{
"error": 0, "status": stopped | started, "progress": 33.3, "message": string, "place": number, #место в очереди "queue": True | False #состояния - в очереди или в процессе очистки } | |
| GET/qas/cleandoc/result | Результат очистки документа для конкретного пользователя | |
|
{"error": 0,"status": "stopped","text": "очищенный текст","doc_id": "ID документа"} | |
| POST/qas/doc/add | Загрузить текстовый документ. Добавляет документ в базу. В ответе — id созданного документа или сообщение об ошибке. | |
|
{"error": 0,
"message": "success", "id": "ebe2bc57551c2d17f892987d1f62306d"} | |
| DELETE/qas/doc/delete/{id} | Удаление документа | |
|
{"error": 0,"message": "success"} | |
| GET/qas/doc/get/{id} | Выгрузка текста документа | |
|
{
"error": 0, "text": "Здесь будет полный текст документа" } | |
| GET/qas/doc/list | Получение списка имеющихся документов | |
| Входные параметры отсутствуют | Пример:
{ "error": 0, "docs": [ {id": "d4999cdee5ad1faf2cb3066ea1b5e96b", "title": "PVE. Установка сервисного пакета окружения", "category": "Техническая поддержка" }, {"id": "759042575b965745b9d2af869bca1740", "title": "UPS. Руководство администратора", "category": "Техническая поддержка"} ]} | |
| POST/qas/doc/modify/{id} | Обновление документа. В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки. | |
параметр который не меняется может отсутствовать в json
|
{"error": INT, "message": DESCRIPTION} | |
| POST/qas/doc/replace | Замена подстроки в текстах категории Будут заменены все найденные вхождения | |
|
{"error": INT, "message": DESCRIPTION,"replacements":INT} | |
| POST/qas/doc/modifyphrases | Массовая замена текста в указанных фразах. | |
[ { 'doc_id': 'ad895085-2e48-439a-831e-b5f699b6a54a', 'phrase_id': 5, 'text': 'новый текст' } ] |
{"error": 0,"message": "success"} | |
| GET/qas/gpt/list | Получение списка доступных(установленных) GPT моделей | |
| Входные параметры отсутствуют | { "error": 0, "message": "success", "models": ["default" ]} | |
| POST/qas/question/add | Добавление вопроса. В случае успеха метод вернет id вопроса, в случае неудачи — код ошибки. | |
|
{
"error": 0, "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d" } | |
| POST/qas/question/append/{id} | Добавляет алиасы/кандидаты к другому вопросу | |
|
{error: 0 | 1, message: string} | |
| POST/qas/question/approve/{destination_id} | Перемещает кандидаты в формулировки другого вопроса | |
|
{error: 0 | 1, message: string} | |
| POST/qas/question/delete/list | Удаление списка вопросов или ответов | |
|
{"error": INT, "message": DESCRIPTION} | |
| DELETE/qas/question/delete/{id} | Удаление вопроса | |
|
{"error": INT, "message": DESCRIPTION} | |
| GET/qas/question/get/{id} | Получение вопроса вместе с ответами и синонимами вопроса | |
|
{ "error": 0,
"answers": [ { "checked": true, "channel": "0", "answer": "ответ" } ], "aliases": [ "вопрос", "синоним вопроса", "еще синоним вопроса" ] } | |
| GET/qas/question/list | Получение списка вопросов. | |
|
{ "error": 0,
"questions": [ {"id": "","question": "","incomplete": "", "aliases": [],"candidates": [],"category": "", "checked": 0,"unchecked": 0}, {"id": "","question": "","incomplete": "", "aliases": [],"candidates": [],"category": "", "checked": 0,"unchecked": 0} ] } | |
| POST/qas/question/modify/{id} | Модификация вопроса. Позволяет заменить как все параметры так и отдельные | |
|
В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки.
{"error": INT, "message": DESCRIPTION} | |
| POST/qas/question/replace | Поиск и замена подстроки. Будут заменены все найденные вхождения | |
|
{"error": INT, "message": DESCRIPTION,"replacements":INT} | |
| POST/qas/question/modifyanswers | Массовая замена текста в указанных ответах. | |
[ { 'question_id': 'ad895085-2e48-439a-831e-b5f699b6a54a', 'answer_id': 5, 'text': 'новый текст' } ] |
{"error": 0,"message": "success"} | |
| POST/qas/paraphrase | Генерация фраз-синонимов для предложения. | |
|
{"error": 0, "message": "success", "texts": [ "перефразированный текст 1", ... ]} | |
| GET/qas/questionlist/answers | Отображает лог массовой обработки вопросов | |
| Входные параметры отсутствуют | на выходе :
массив из объектов { error: number; question: string; answer: string; confidence: number | null; } | |
| POST/qas/questionlist/start | Старт массовой обработки вопросов из файла | |
возможные варианты: — "no" не использовать - "all" использовать все - "checked" использовать только проверенные
|
{error: 0 | 1, message: string} | |
| GET/qas/questionlist/status | Статус массовой обработки вопросов | |
| Входные параметры отсутствуют | { error: string;
status: 'started' | 'stopped'; progress: number; } | |
| GET/qas/questionlist/stop | Остановка массовой обработки вопросов | |
| Входные параметры отсутствуют | {error: 0 | 1, message: string} | |
| POST/qas/mismatchsearcher/start | Старт поиска несоответствий | |
|
{error: 0 | 1, message: string} | |
| GET/qas/mismatchsearcher/status | Статус поиска несоответствий | |
| Входные параметры отсутствуют | { error: string; status: 'started' | 'stopped';
progress: number; } | |
| GET/qas/mismatchsearcher/stop | Остановка поиска несоответствий | |
| Входные параметры отсутствуют | {error: 0 | 1, message: string} | |
| GET/qas/mismatchsearcher/mismatches | Статус получения результатов | |
| Входные параметры отсутствуют | {"error": 0,"message": "success","mismatches": [{"question_id": "ID вопроса", "question": "вопрос", "category": "ID категории", "answer_id": "ID ответа", "answer": "ответ на вопрос {question}", "description": "результат поиска", "error" : string, "context": "фрагмент документа", "generatedText" : "Результат генерации" }, ... ] } | |
| GET/qas/questionmaker/start | Запуск генерации вопросов | |
|
{ "error": 0, "message": "success" } | |
| GET/qas/questionmaker/status | Статус генерации вопросов | |
| Входные параметры отсутствуют | {"error": string, "status": 'started' | 'stopped', "progress": 33.3 } | |
| GET/qas/questionmaker/stop | Прервать генерацию. | |
| Входные параметры отсутствуют | {"error": 0, "message": "success"} | |
| GET/qas/search | Поиск фрагментов содержащих ответ | |
|
{ "error": 0,
"text": " Фрагмент 1:Здесь будет текст найденного фрагмента Фрагмент 2:Здесь будет текст найденного фрагмента", "fragments": [ { "id": "3a386b0a9e0e19efb0870685e1d0b484", "title": "Заголовок документа", "category": "Категория документа", "text": "Здесь будет текст найденного фрагмента" }, { "id": "44fd73ea1ac63f32cf18d79c854dbfe2", "title": "Заголовок документа", "category": "Категория документа", "text": "Здесь будет текст найденного фрагмента" } ] } | |
| POST/qas/summarization_template/add | Добавление шаблона протокола. В случае успеха метод вернет id шаблона, в случае неудачи — код ошибки. | |
|
{ "error": 0, "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"} | |
| DELETEqas/summarization_template/delete/{id} | Удаление шаблона. | |
|
{"error": INT, "message": DESCRIPTION} | |
| GET/qas/summarization_template/get/{id} | Получение json с шаблоном. | |
|
На выходе словарь, основные элементы: data — словарь с шаблоном, остальные элементы этого уровня служебные. В data: id, name (идентификатор и наименование).И options — словарь с разделами шаблона. | |
| GET/qas/summarization_template/list | Получение всех шаблонов. | |
| Входные параметры отсутствуют | На выходе словарь, основной элемент — templates, содержит список шаблонов (каждый шаблон как в выдаче метода GET /qas/summarization_template/get/{id}). | |
| POST/qas/summarization_template/modify/{id} | Изменение шаблона. | |
|
{"error": INT, "message": DESCRIPTION} | |
| POST/qas/summarize | Построение протокола или краткого содержания совещания | |
|
{ "error": 0,
"message": "success", "summary": "здесь текст протокола" } | |
| POST/qas/replace | корректировка информации в тексте при помощи LLM | |
|
{ "error": 0, "message": "success",
"text": "итоговый текст" } | |
| POST/qas/replacementlist | список всех фраз в документах и ответов в вопросах, подлежащих правке. Векторно ищет все фрагменты по указанному тексту. | |
|
[ "error": 0,
"message": "success", "docs": [], "answers": [] ] | |
| POST/qas/prompt/add | Добавление шаблона запроса к LLM. В случае успеха метод вернет id вопроса, в случае неудачи — код ошибки. | |
|
{ "error": 0,
"id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d" } | |
| DELETE/qas/prompt/delete/{id} | Удаление шаблона. | |
|
{"error": INT, "message": DESCRIPTION} | |
| GET/qas/prompt/get/{id} | Получение шаблона. | |
|
{ "error": 0, "prompt": {
"id": "cleandoc", "type": "cleandoc", "isDefault": false, "name": "Чистка документа", "prompt": "Удали сноски, колонтитуры и мусорную информацию из текста ниже. Не удаляй ничего лишнего. Не добавляй ничего, только информация из текста. Выведи только конечный результат без отчета о результате.\n###Текст:\n{context}\n\n###Конечный результат:", "postprompt": "", "_modified": 1751475766.7460272, "_created": 1751475766.7460272, "_modified_date": "2025-07-02", "_created_date": "2025-07-02" } } | |
| GET/qas/prompt/list | Получение списка шаблонов. | |
| { "error": 0, "prompts": [
{ "id": "chat", "type": "chat", "isDefault": false, "name": "Чат", "prompt": "Ты спокойный вежливый консультант.[\n\n###История переписки:\n{history}]\n\n###Вопрос: {question}\n###Ответ:", "postprompt": "", "_modified": 1751475766.7460272, "_created": 1751475766.7460272, "_modified_date": "2025-07-02", "_created_date": "2025-07-02" } ] } | ||
| POST/qas/prompt/modify/{id} | Модификация шаблона. Позволяет заменить как все параметры, так и отдельные. | |
|
В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки.{"error": INT, "message": DESCRIPTION} | |
/ses: методы работы с роботом
| для некоторых путей, где используется {robot_id} - это обращение к версии черновика, чтобы обращаться к продовой версии - нужен постфикс "_prod", для бэкапа "_backup"
актуально для методов - получения данных робота GET/ses/robot/get/{id} - применение настроек робота GET/ses/robot/commit/{id} - экспорт робота GET/ses/robot/export/{id} - список скриптов GET/ses/robot/script/list/{robot} - получение скрипта GET/ses/robot/script/get/{robot}/{id} - список ЭД GET/ses/robot/data/list/{robot} - получение ЭД GET/ses/robot/data/get/{robot}/{id} - список КТ GET/ses/robot/endpoint/list/{robot} - получение КТ GET/ses/robot/endpoint/get/{robot}/{id} - метода ask (отладчика) POST/ses/ask/{robot_id} - данные сессии (отладчика) GET/ses/session/{robot_id}/{session_id} | |||
|---|---|---|---|
| GET/ses/archive/audio/{uuid} | Получение аудио-файла из архива диалогов | ||
|
аудио-файл с расширением opus | ||
| GET/ses/archive/dialog/{uuid} | Получение диалога из архива | ||
|
{ "error": 0, "message": "success",
"dialog": [{"id": "...", "robot": "...", "channel": "...", "unknown": true/false, "closed": true/false, "endpoint": "...", "answered": true/false, "models": [...], "variables": {}, "current": { "id": "...", "qas": "", "category": "...", "entry": [...], "nearest": "...", "missingRunData": [...], "waitingRunData": "...", "answered": true/false, "lastreply": "..."}, "request": {"datetime": "...", "message": "", "data": [...]}, "reply": {"answers": [{"messages": [...], "voice": "...", "interruptible": true/false, "file": null}], "datetime": "...", "answered": true/false}}]} | ||
| GET/ses/archive/list | Получение списка диалогов из архива | ||
|
[{"uuid": "...", "datetime": "...","phone": "", "channel": [...], "robot": ["..."]}] | ||
| GET/ses/archive/waveform/{uuid} | Служебный метод для визуализации полученного из архива диалогов аудио-файла, содержит пики сигнала. | ||
|
[0.016,
0.015, 0.01] | ||
| POST/ses/ask/{robot_id} | Получение ответа на запрос пользователя. Метод для отладки робота | ||
|
{ "error": 0, "question": "Вопрос",
"answer": [ { "messages": [ "ответ" ], "voice": "", "interruptible": true/false, "file": "" } ], "session": "", "uuid": "" } | ||
| POST/ses/robot/add | Создание нового робота. На выходе id созданного робота или сообщение об ошибке | ||
|
{ "error": 0, "id": "2fd2f909-2069-4b20-a725-3a598c83f886"} | ||
| POST/ses/robot/apply/{id} | Применение робота. Переводит черновик робота в статус prod. Если до этого был prod вариант — становится backup. | ||
|
{ "error": 0, "message": "success"} | ||
| POST/ses/robot/cleardraft/{id} | Обнуление черновика рабочей версией робота | ||
|
{ "error": 0, "message": "success"} | ||
| POST/ses/robot/commit/{id} | Применение текущих изменений настроек робота. Применимо ко всем версиям (черновик, рабочая, резервная копия) | ||
|
{ "error": 0, "message": "success"} | ||
| POST/ses/robot/data/add/{robot} | Добавление элемента данных | ||
|
{ "error": 0, "message": "success"} | ||
| DELETE/ses/robot/data/delete/{robot}/{id} | Удаление элемента данных | ||
|
{ "error": 0, "message": "success"} | ||
| GET/ses/robot/data/get/{robot}/{id} | Получение настроек элемента данных | ||
|
{ "error": 0, "data": { "id": "id ЭД", "name": "Имя ЭД", "comment": "",
"type": "...", "rtype": "report", "model": "Имя модели", "param": "Ответ", "script": "", "weight": 3, "slaveData": [], "getOnlyAsNearest": true/false, "injectToMessage": true/false, "longWaiting": true/false, "dataWaiting": [], "actions": { "alone": { "default": [{"action": "say", "type": "random", "text": ["....."]}]}}, "exceptions": {}}} | ||
| GET/ses/robot/data/list/{robot} | Получение списка элементов данных | ||
|
[ { "id": "3ebfe38b-95bf-4927-a662-17f6e5da22ea",
"name": "pve", "type": "smc", "rtype": "report", "weight": 3, "hasNearestAction": false } ] | ||
| POST/ses/robot/data/modify/{robot}/{id} | Изменение элемента данных. Формат data как на выходе метода GET/ses/robot/data/get/{robot}/{id} | ||
|
{ "error": 0, "message": "success"} | ||
| DELETE/ses/robot/delete/{id} | Удаление всех версий робота | ||
|
{ "error": 0, "message": "success"} | ||
| POST/ses/robot/endpoint/add/{robot} | Создание конечной точки. Формат data как на выходе метода GET/ses/robot/endpoint/get/{robot}/{id} | ||
|
{ "error": 0, "id": "8576593b-b0d8-4b03-a623-74f3132356ea"} | ||
| DELETE/ses/robot/endpoint/delete/{robot}/{id} | Удаление конечной точки. | ||
|
{ "error": 0, "message": "success"} | ||
| GET/ses/robot/endpoint/get/{robot}/{id} | Получение настроек конечной точки | ||
|
{ "error": 0, "data": { "id": "...", "name": "...", "comment": "",
"entryType": "conditions", "entry": [{ "conditions": [{ "type": "...", "depth": 5, "id": "...", "operation": "...", "value": ""}], "run": []}], "run": [], "actions": { "default": [{ "action": "...", "voice": "", "type": "...", "interruptible": true/false}]}, "type": "report"}} | ||
| GET/ses/robot/endpoint/list/{robot} | Получение списка конечных точек робота | ||
|
[{ "error": 0, "data": { "id": "...", "name": "точка 1", "comment": "",
"entryType": "conditions", "entry": [{ "conditions": [{ "type": "...", "depth": 5, "id": "...", "operation": "...", "value": ""}], "run": []}], "run": [], "actions": { "default": [{ "action": "...", "voice": "....", "type": "...", "interruptible": true/false}]}, "type": "report"}}] | ||
| POST/ses/robot/endpoint/modify/{robot}/{id} | Изменение конечной точки. Формат data как на выходе метода GET/ses/robot/endpoint/get/{robot}/{id} | ||
|
{ "error": 0, "message": "success"} | ||
| GET/ses/robot/export/{id} | Выгрузка робота в архив | ||
|
zip файл с именем = идентификатор робота | ||
| GET/ses/robot/files/download/{robot}/{id} | Получение файла. | ||
|
файл | ||
| POST/ses/robot/files/upload/{robot} | Отправка файла. | ||
|
{"error": 0, "message": "success", "id": "Id файла"} | ||
| GET/ses/robot/get/{id} | Выгрузка основных настроек робота | ||
|
{ "error": 0, "data": {
"id": "9fd7f6f1-2cac-4f0f-a121-75c40f2b5e78", "name": "test", "description": "", "voice": "", "session": { "lifetime": 600 }, "models": {}, "servicedata": {}, "exceptions": {}, "actions": {}, "holidays": [], "timeintervals": { "name": { "weekdays": [ 1, 2, 3, 4, 5, 6, 7 ], "dates": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31], "months": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ], "days": "all", "intervals": [ [ 0, 1440 ] ] }}}} | ||
| POST/ses/robot/import/{id} | Загрузка архива робота в черновик существующего робота | ||
|
{ "error": 0, "message": "success"} | ||
| GET/ses/robot/list | Получение списка роботов | ||
| Входные параметры отсутствуют | [ { "id": "9fd7f6f1-2cac-4f0f-a121-75c40f2b5e78", "name": "test",
"hasProd": true, "hasBackup": true } ] | ||
| POST/ses/robot/modify/{id} | Изменение основных настроек робота. Формат data как в ответе метода GET/ses/robot/get/{id} | ||
|
{ "error": 0, "message": "success"} | ||
| POST/ses/robot/restore/{id} | Откат рабочей версии из бэкапа. Резервная копия становится рабочей, и удаляется, а черновик остается без изменений | ||
|
{ "error": 0, "message": "success"} | ||
| POST/ses/robot/script/add/{robot} | Добавление нового скрипта. Формат data как в ответе метода GET/ses/robot/script/get/{robot}/{id} | ||
|
{ "error": 0, "message": "success"} | ||
| DELETE/ses/robot/script/delete/{robot}/{id} | Удаление скрипта | ||
|
{ "error": 0, "message": "success"} | ||
| GET/ses/robot/script/get/{robot}/{id} | Получение текста скрипита | ||
|
{ "error": 0, "data": {
"id": "6a9f91b6-9634-4079-ac2b-60a944922c61", "type": "Тип скрипта", "name": "Наименование скрипта", "code": "Текст скрипта" } } | ||
| GET/ses/robot/script/list/{robot} | Получение списка скриптов | ||
|
[ { "id": "9b9d83b7-d5c3-49e6-9bd4-a123a9047939", "name": "наименование1",
"type": "Тип скрипта"}, { "id": "48b508ba-a32b-4ada-bcc3-66ce26d81c6a", "name": "наименование2", "type": "Тип скрипта"}] | ||
| POST/ses/robot/script/modify/{robot}/{id} | Изменение скрипта.Формат data как в ответе метода GET/ses/robot/script/get/{robot}/{id} | ||
|
{ "error": 0, "message": "success"} | ||
| POST/ses/robot/script/test/{robot}/{id} | Тестирование скрипта. Формат data как в ответе метода GET/ses/session/{robot_id}/{session_id} | ||
|
{"error": 0, "message": "success", "result": {.....}, "variables": {}} | ||
| POST/ses/robot/userdata/data/add/{robot}/{structure} | Добавление записи в пользовательский справочник. | ||
|
{"error": 0, "id": "id записи"} | ||
| DELETE/ses/robot/userdata/data/delete/{robot}/{structure}/{id} | Удаление записи из пользовательского справочника. | ||
|
{"error": 0, "message": "success"} | ||
| GET/ses/robot/userdata/data/list/{robot}/{structure} | Получение данных из пользовательского справочника. | ||
|
[{ "колонка 1": "значение 1", "колонка n": "значение n", "id": "id записи"}] | ||
| POST/ses/robot/userdata/data/modify/{robot}/{structure} | Массовое изменение данных в пользовательском справочнике. | ||
|
{"error": 0, "message": "success"} | ||
| POST/ses/robot/userdata/data/modify/{robot}/{structure}/{id} | Изменение одной записи пользовательского справочника. | ||
|
{"error": 0, "message": "success"} | ||
| POST/ses/robot/userdata/data/put/{robot}/{structure} | Добавление данных с заменой в пользовательском справочнике. | ||
|
{"error": 0, "message": "success"} | ||
| POST/ses/robot/userdata/structure/add/{robot} | Добавление пользовательского справочника. | ||
|
{"error": 0, "id": "id справочника"} | ||
| DELETE/ses/robot/userdata/structure/delete/{robot}/{id} | Удаление пользовательского справочника. | ||
|
{"error": 0, "message": "success"} | ||
| GET/ses/robot/userdata/structure/list/{robot} | Получение списка пользовательских справочников. | ||
|
[{"id": "id справочника", "name": "справочник", "fields": {"колонка1": "значение по умолчанию"}}] | ||
| POST/ses/robot/userdata/structure/modify/{robot}/{id} | Модификация структуры пользовательского справочника. | ||
|
{"error": 0, "message": "success"} | ||
| GET/ses/session/{robot_id}/{session_id} | Выдает параметры сессии. Для отображения на боковой панели тестирования в UPS. Основные блоки результата: | ||
|
{ "started": "", "modified": "",
"robot": "", "session": "", "channel": "", "connector": "", "unknown": true/false, "current": {"id": "", "qas": "", "answered": true/false, "category": "", "nearest": "", "entry": [.....], "missingRunData": [], "passedRunData": [.....], "waitingRunData": null, "border": int, "preborder": int, "lastreply": ""}, "models": [.....], "scripts": [.....], "data": [{"request": {.....}, "reply": {.....}}], "timers": [], "variables": {}, "error": "", "events": {.....}, "closed": "" } | ||
| GET/ses/widget/config | Выдает параметры виджета для web канала по запросу js скрипта | ||
|
Состав конфига канала, для передачи виджету. Подробней в Руководстве администратора | ||
| GET/ses/widget/js | Выдает код js скрипта виджета для web-канала | ||
| Входные параметры отсутствуют | Код скрипта | ||
/res: методы работы с сервисом отчетов
| GET/res/dashboards | Получить список рабочих столов kibana с наборами отчетов | ||
|---|---|---|---|
| Входные параметры отсутствуют | { "error": 0, "message": "success",
"dashboards": { "Наименование1": "https://........", "Наименование2": "https://........." }} | ||
/transcription: методы работы со стенографией
| GET/transcription/audio/{id} | Получить аудиофайл по id стенограммы. Идентификатор нужной стенограммы можно получить методом
"GET /transcription/list" | ||
|---|---|---|---|
|
wav файл сохраненной стенограммы | ||
| POST/transcription/create | Создание стенограммы из завершенного задания в очереди распознавания. В ответ придет id созданной стенограммы | ||
|
{"error": 0,
"message": "success", "id": "74721a3b-9055-4650-9afb-de4d103cafc7"} | ||
| DELETE/transcription/delete/{id} | Удаление стенограммы | ||
|
{"error": 0,"message": "success"} | ||
| GET/transcription/get/{id} | Получение стенограммы. Используется для отображения стенограммы в веб интерфейсе | ||
|
стенограмма в json формате | ||
| GET/transcription/list | Получение списка сохраненных стенограмм | ||
| Входные параметры отсутствуют | [ { "id": "926e8d25-4275-4a78-906b-a1109cdacbea",
"name": "название", "model": "big", "created": "2024-03-29 12:37:42", "modified": "2024-04-24 16:09:09", "user": "0", "dataset": "0" }, .... ] | ||
| POST/transcription/save/{id} | Сохранение стенограмы. Используется для сохранения изменений по нажатию кнопки «Сохранить». | ||
|
{"error": 0,"message": "success"} | ||
| GET/transcription/waveform/{id} | Служебный метод для отображения аудио в графическом виде, ответ содержит пики сигнала | ||
|
{ "error": 0,
"waveform": [ 0.016, .......... .......... 0.015, 0.01 ] } | ||