QAS. Руководство пользователя: различия между версиями
Материал из Флора AI
VoroninE (обсуждение | вклад) Нет описания правки |
|||
| (не показано 56 промежуточных версий 4 участников) | |||
| Строка 10: | Строка 10: | ||
==== '''Описание методов API''' ==== | ==== '''Описание методов API''' ==== | ||
Сервис QAS доступен по протоколу HTTP 1.1 через порт 6187/tcp. Авторизация не требуется, но все запросы должны содержать заголовок | Сервис QAS доступен по протоколу HTTP 1.1 через порт 6187/tcp. Авторизация не требуется, но все запросы должны содержать заголовок «accept: application/json». Ответ сервиса возвращается в формате JSON. Если произошла ошибка, возвращается переменная «error=1» и описание ошибки в переменной «message». Для удобства тестирования и использования методов сервиса по адресу <nowiki>http://АДРЕС:6187</nowiki> доступен интерфейс Swagger, который позволяет просматривать и тестировать все доступные методы из таблицы ниже. | ||
{| class="wikitable" | |||
|+ | |||
! | |||
{| class="wikitable" style="width: 110%" | |||
! | |+''Методы API'' | ||
! | |- | ||
! colspan="3" style="text-align: center" |'''<big>Группа методов qas</big>''' | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/ask''' | |||
! colspan="2" style="width: 85%" |Метод генерирует ответ на поставленный вопрос на основе информации из документов в базе. | |||
<small>Ответ на вопрос генерируется на основе информации, содержащейся в одном или нескольких документах. Документы должны быть в текстовом формате. Ответ возвращается в формате JSON, его можно скачать. Если метод не смог найти ответ, возвращается код ошибки и сообщение.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
* <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>''' <small>—</small> <small>определяет допустимую разницу между максимальной и минимальной релевантностью фрагментов при фильтрации результатов</small> | |||
| style="width: 50%" |<small>{</small> | |||
<small>"error": 0,</small> | |||
<small>"text": "Здесь будет текст ответа"</small> | |||
<small>}</small> | |||
|- | |- | ||
! colspan=" | ! style="color:green;width: 15%" |'''POST/qas/autocache''' | ||
! colspan="2" style="width: 85%" |Добавление вопросно-ответной пары в кэш. | |||
<small>В случае указания id answer будет принудительно добавлен в вопрос с указанным id. Если же указан question, то система сначала попытается найти похожий вопрос и добавить ответ в него, если же вопрос не будет найден, то система создаст новый с указанной формулировкой. При установке флага emptyQuestion будет добавлен только вопрос (без ответа).</small> | |||
|- | |- | ||
|/ | | colspan="2" style="width: 50%" | | ||
|GET | *<small>'''question''' — текст вопроса</small> | ||
| | *<small>'''category''' — категория</small> | ||
| | *<small>'''channel''' — канал</small> | ||
*''' | *<small>'''answer''' — ответ</small> | ||
* ''' | *<small>'''emptyQuestion''' — yes или no, флаг добавления вопроса без указания ответа</small> | ||
| | *<small>'''checked''' — yes или no, флаг добавления вопроса как «проверенного»</small> | ||
*<small>'''id''' — код существующего вопроса</small> | |||
| style="width: 50%" |<small>{"error": 0, "message": "success"}</small> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/cachemaker/start''' | |||
! colspan="2" style="width: 85%" |Генерация ответов на вопросы в кэше. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''category''' — категория для которой генерируются ответы, если указан код категории, то генерация только для этой категории</small> | |||
*<small>'''mode''' — режим генерации ответов, возможные значения:</small><small>'''- paraphrase''' - генерирует вариации ответов перефразированием уже проверенных ответов, если таковые имеются на вопросе</small><small>'''- generate''' — генерирует кэш через разные ответы на каждый вопрос по документации</small> | |||
*<small>'''option''' — {all | empty} обработать все вопросы или только не содержащие ответов</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> | |||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/cachemaker/status''' | |||
! colspan="2" style="width: 85%" |Состояние генерации ответов на вопросы в кэше. | |||
<small>статусы: '''started''', '''stopped''', если были ошибки поле ответа</small> | |||
<small>'''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/chat''' | |||
! colspan="2" style="width: 85%" |Произвольный запрос в LLM. | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''text -''' текст вопроса</small> | |||
*<small>'''history''' - история вопросов, будет склеена с text при запросе</small> | |||
*<small>'''model''' - какую модель использовать для ответа, если кроме default используются другие модели</small> | |||
*<small>'''useInternalTemplate''' - использовать ли шаблон запроса. '''no''' - не использовать, либо код шаблона запроса к LLM. Необязательный параметр. Если не указан, используется шаблон по умолчанию.</small> | |||
*<small>'''params''' - необязательный параметр. JSON с произвольными параметрами запроса к LLM. Описание параметров см. в [[QAS. Руководство администратора|руководстве администратора]].</small> | |||
| style="width: 50%" |<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> | |||
|- | |- | ||
|/qas/ | ! 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>"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" |Результат очистки документа для конкретного пользователя | |||
|- | |- | ||
|/qas/ | | colspan="2" | | ||
| | *<small>'''doc_id''' - необязательный параметр, ID документа</small> | ||
| | *<small>'''user_id''' - ID пользователя</small> | ||
| | |<small>{</small><small>"error": 0,</small><small>"status": "stopped",</small><small>"text": "очищенный текст",</small><small>"doc_id": "ID документа"</small><small>}</small> | ||
* '''text''' - | |- | ||
* ''' | ! 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/gpt/list''' | |||
| colspan="2" |Получение списка доступных(установленных) GPT моделей | |||
|- | |||
| colspan="2" |<small>Входные параметры отсутствуют</small> | |||
|<small>{ "error": 0, "message": "success",</small> | |||
<small> "models": ["default" ]}</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</small>''' <small>- максимальное количество документов одной категории для формирования контекста при генерации ответа на вопрос, по умолчанию 1</small> | |||
*<small>'''addAlias''' — добавлять похожие вопросы к синонимам, не создавая отдельного вопроса. возможные варианты "'''yes'''" "'''no'''"</small> | |||
*<small>'''threshold''' - порог достоверности при обработке</small> | |||
"message": " | | 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" | Старт поиска несоответствий | |||
|- | |- | ||
|/qas/ | | 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> | ||
"error": 0, | |<small><nowiki>{error: 0 | 1, message: string}</nowiki></small> | ||
"message": "success" | |- | ||
} | ! 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> status: 'started' | 'stopped';</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>{</small><small>"error": 0,</small><small>"message": "success",</small><small>"mismatches": [{</small> <small>"question_id": "ID вопроса",</small> | |||
<small>"question": "вопрос",</small> | |||
<small>"category": "ID категории",</small> | |||
<small>"answer_id": "ID ответа",</small> | |||
<small>"answer": "ответ на вопрос {question}",</small> | |||
<small>"description": "результат поиска",</small> | |||
<small>"error" : string,</small> | |||
<small>"context": "фрагмент документа",</small> | |||
<small>"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>{</small> | |||
<small>"error": string,</small> | |||
<small>"status": 'started' | 'stopped',</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><nowiki>{error: 0 | 1, message: string}</nowiki></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> | ||
"error": 0, | *'''<small>similarityArea -</small>''' <small>определяет допустимую разницу между максимальной и минимальной релевантностью фрагментов при фильтрации результатов</small> | ||
| style="width: 50%" |<small>{ "error": 0,</small> | |||
<small> "text": "</small> | |||
<small> Фрагмент 1:Здесь будет текст найденного фрагмента</small> | |||
" | <small> Фрагмент 2:Здесь будет текст найденного фрагмента",</small> | ||
<small> "fragments": [</small> | |||
"id": " | <small> { "id": "3a386b0a9e0e19efb0870685e1d0b484",</small> | ||
" | <small> "title": "Заголовок документа",</small> | ||
<small> "category": "Категория документа",</small> | |||
<small> "text": "Здесь будет текст найденного фрагмента" },</small> | |||
"id": " | <small> { "id": "44fd73ea1ac63f32cf18d79c854dbfe2",</small> | ||
" | <small> "title": "Заголовок документа",</small> | ||
<small> "category": "Категория документа",</small> | |||
<small> "text": "Здесь будет текст найденного фрагмента" } ] }</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>{</small><small> "error": 0,</small> | |||
<small> "message": "success",</small> | |||
] | <small> "summary": "здесь текст протокола"</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> "text": "итоговый текст"</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> | |||
|- | |||
! colspan="3" style="text-align: center" |'''<big>Группа методов channel</big>''' | |||
|- | |||
! 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%" |Удаление канала | |||
|- | |- | ||
|/qas/channel/ | | 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> "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> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''name''' — новое наименование канала</small> | |||
} | *<small>'''id''' — идентификатор канала</small> | ||
| style="width: 50%" |<small>{ "error": 0,</small> | |||
<small> "message": "success" }</small> | |||
|- | |- | ||
! colspan=" | ! colspan="3" style="text-align: center" |'''<big>Группа методов category</big>''' | ||
|- | |- | ||
|/qas/category/add | ! style="color:green;width: 15%" |'''POST/qas/category/add''' | ||
| | ! colspan="2" style="width: 85%" |обавить категорию с указанным именем. <small>В ответе - id созданной категории или сообщение об ошибке:</small> | ||
|- | |||
| | | colspan="2" style="width: 50%" | | ||
* '''name''' | *<small>'''name''' — наименование категории</small> | ||
| | | style="width: 50%" |<small>{ "error": 0,</small> | ||
<small> "message": "success",</small> | |||
"error": 0, | <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> | |||
|- | |||
! colspan="3" style="text-align: center" |'''<big>Группа методов doc</big>''' | |||
|- | |||
! 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>"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> | ||
|- | |||
! style="color:blue;width: 15%" |'''GET/qas/doc/list''' | |||
! colspan="2" style="width: 85%" |Получение списка имеющихся документов | |||
|- | |- | ||
|/ | | colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small> | ||
| style="width: 50%" |<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> | ||
|- | |- | ||
|/qas/ | ! 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="3" 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> | |||
| | | | ||
|- | |- | ||
|/qas/doc/ | ! style="color:green;width: 15%" |'''POST/qas/doc/modifyphrases''' | ||
! colspan="3" |Массовая замена текста в указанных фразах. | |||
| | |- | ||
| 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>'text': 'новый текст'</small> | |||
<small>}</small> | |||
<small>]</small> | |||
|<small>{"error": 0,"message": "success"}</small> | |||
| | | | ||
|- | |- | ||
|/qas/ | ! colspan="3" style="text-align: center" |'''<big>Группа методов question</big>''' | ||
| | |- | ||
| | ! style="color:green;width: 15%" |'''POST/qas/question/add''' | ||
| | ! colspan="2" style="width: 85%" |Добавление вопроса. <small>В случае успеха метод вернет id вопроса, в случае неудачи — код ошибки.</small> | ||
* '''id''' - идентификатор | |- | ||
| | | 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> "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": "77b42c9b-2075-4a5f-b6d9-a284bba7cf43",</small> | |||
<small> "question": "вопрос",</small> | |||
<small> "category": "9580b3b7-34cb-4d0e-ba75-d17313ead16d" },</small> | |||
< | <small> { "id": "d1836e5e-010e-4f3a-b306-813c3acb7efb",</small> | ||
<small> "question": "n-й второй вопрос",</small> | |||
<small> "category": "7d8a3415-cb09-4dad-a169-478ba15ade47" }</small> | |||
<small> ] }</small> | |||
|- | |||
! style="color:green;width: 15%" |'''POST/qas/question/modify/{id}''' | |||
! colspan="2" style="width: 85%" |Модификация вопроса. Позволяет заменить как все параметры, так и отдельные. | |||
|- | |- | ||
| | | colspan="2" style="width: 50%" | | ||
*<small>'''data''' — json c измененными параметрами, пример полного:</small> | |||
| | <small><code>{ "answers": [</code></small> | ||
* '''data''' | |||
<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> | |||
* '''id''' | *<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="3" 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/question/modifyanswers''' | |||
! colspan="3" |Массовая замена текста в указанных ответах. | |||
|- | |||
| colspan="2" | | |||
*<small>'''answers''' - 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> | |||
| | | | ||
|- | |- | ||
|/qas/ | ! colspan="3" style="text-align: center" |'''<big>Группа методов summarization_template</big>''' | ||
|DELETE | |- | ||
| | ! 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>{</small><small> "error": 0,</small><small> "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"</small><small>}</small> | |||
|- | |||
! style="color:red;width: 15%" |'''DELETE/qas/summarization_template/delete/{id}''' | |||
! colspan="2" style="width: 85%" |<small>Удаление шаблона.</small> | |||
|- | |||
| colspan="2" style="width: 50%" | | |||
*<small>'''id''' — идентификатор шаблона</small> | |||
| style="width: 50%" |<small>{"error": INT, "message": DESCRIPTION}</small> | |||
|- | |||
! 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 (идентификатор и наименование).</small><small>И 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> | |||
|- | |||
! colspan="3" style="text-align: center" |'''<big>Группа методов prompt</big>''' | |||
|- | |||
! 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>'''name''' — название шаблона</small> | |||
*<small>'''prompt''' — текст шаблона</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> "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"</small> | |||
<small>}</small> | |||
|- | |||
! style="color:red;width: 15%" |'''DELETE/qas/prompt/delete/{id}''' | |||
! colspan="2" |Удаление шаблона. | |||
|- | |||
| colspan="2" | | |||
*<small>'''id''' — идентификатор вопроса</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> | |||
|- | |||
! 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> "id": "chat",</small> | |||
<small> "type": "chat",</small> | |||
<small> "isDefault": false,</small> | |||
<small> "name": "Чат",</small> | |||
<small> "prompt": "Ты спокойный вежливый консультант.[\n\n###История переписки:\n{history}]\n\n###Вопрос: {question}\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> | |||
|- | |- | ||
|/qas/ | ! style="color:green;width: 15%" |'''POST/qas/prompt/modify/{id}''' | ||
! colspan="2" |Модификация шаблона. Позволяет заменить как все параметры, так и отдельные. | |||
| | |||
|- | |- | ||
|/ | | colspan="2" | | ||
*<small>'''data''' — json c измененными параметрами:</small> | |||
| | <small><code>{ "name": "новое имя" }</code></small> | ||
*<small>'''id''' — идентификатор вопроса</small> | |||
|<small>В случае успеха метод вернет статус выполнения операции (например, «success»), в случае неудачи — код ошибки.</small> | |||
<small>{"error": INT, "message": DESCRIPTION}</small> | |||
|} | |} | ||
Текущая версия от 14:52, 22 октября 2025
В Общее описание
Сервис предназначен для поиска ответа на заданный вопрос. Входным значением для сервиса являются данные в текстовом формате. В ответ на входящий запрос сервис возвращает данные в формате JSON.
Термины и определения
Question Answering System (QAS) – сервис ответов на вопросы.
Описание методов API
Сервис QAS доступен по протоколу HTTP 1.1 через порт 6187/tcp. Авторизация не требуется, но все запросы должны содержать заголовок «accept: application/json». Ответ сервиса возвращается в формате JSON. Если произошла ошибка, возвращается переменная «error=1» и описание ошибки в переменной «message». Для удобства тестирования и использования методов сервиса по адресу http://АДРЕС:6187 доступен интерфейс Swagger, который позволяет просматривать и тестировать все доступные методы из таблицы ниже.
| Группа методов qas | |||
|---|---|---|---|
| GET/qas/ask | Метод генерирует ответ на поставленный вопрос на основе информации из документов в базе.
Ответ на вопрос генерируется на основе информации, содержащейся в одном или нескольких документах. Документы должны быть в текстовом формате. Ответ возвращается в формате JSON, его можно скачать. Если метод не смог найти ответ, возвращается код ошибки и сообщение. | ||
возможные варианты: — "no" не использовать - "all" использовать все - "checked" использовать только проверенные
|
{
"error": 0, "text": "Здесь будет текст ответа" } | ||
| POST/qas/autocache | Добавление вопросно-ответной пары в кэш.
В случае указания id answer будет принудительно добавлен в вопрос с указанным id. Если же указан question, то система сначала попытается найти похожий вопрос и добавить ответ в него, если же вопрос не будет найден, то система создаст новый с указанной формулировкой. При установке флага emptyQuestion будет добавлен только вопрос (без ответа). | ||
|
{"error": 0, "message": "success"} | ||
| 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/chat | Произвольный запрос в LLM. | ||
|
Пример ответа на вопрос "как пройти в библиотеку"
{"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/paraphrase | Генерация фраз-синонимов для предложения. | ||
|
{"error": 0, "message": "success", "texts": [ "перефразированный текст 1", ... ]} | ||
| GET/qas/gpt/list | Получение списка доступных(установленных) GPT моделей | ||
| Входные параметры отсутствуют | { "error": 0, "message": "success",
"models": ["default" ]} | ||
| 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 | 1, message: string} | ||
| GET/qas/search | Поиск фрагментов содержащих ответ | ||
|
{ "error": 0,
"text": " Фрагмент 1:Здесь будет текст найденного фрагмента Фрагмент 2:Здесь будет текст найденного фрагмента", "fragments": [ { "id": "3a386b0a9e0e19efb0870685e1d0b484", "title": "Заголовок документа", "category": "Категория документа", "text": "Здесь будет текст найденного фрагмента" }, { "id": "44fd73ea1ac63f32cf18d79c854dbfe2", "title": "Заголовок документа", "category": "Категория документа", "text": "Здесь будет текст найденного фрагмента" } ] } | ||
| 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": [] } | ||
| Группа методов channel | |||
| POST/qas/channel/add | Добавление канала. В ответе id созданного канала или сообщение об ошибке | ||
| name — наименование канала | {"error": 0,
"message": "success", "id": "a46fb887-5d98-41e0-8299-bcc94f615e91"} | ||
| DELETE/qas/channel/delete/{id} | Удаление канала | ||
| 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" } | ||
| Группа методов category | |||
| 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" } | ||
| Группа методов doc | |||
| 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"} | ||
| Группа методов question | |||
| 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": "77b42c9b-2075-4a5f-b6d9-a284bba7cf43", "question": "вопрос", "category": "9580b3b7-34cb-4d0e-ba75-d17313ead16d" }, { "id": "d1836e5e-010e-4f3a-b306-813c3acb7efb", "question": "n-й второй вопрос", "category": "7d8a3415-cb09-4dad-a169-478ba15ade47" } ] } | ||
| 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"} | ||
| Группа методов summarization_template | |||
| POST/qas/summarization_template/add | Добавление шаблона протокола. В случае успеха метод вернет id шаблона, в случае неудачи — код ошибки. | ||
|
{ "error": 0, "id": "527be9f0-f773-4a3e-bd0b-81b40a061d0d"} | ||
| DELETE/qas/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} | ||
| Группа методов prompt | |||
| 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} | ||