Пример QNA batch query

Пример поиска запроса query_text во всех опубликованных БЗ.

Сначала получаем список опубликованных БЗ и их service_token которые нужны для query/batch

Затем получаем top_k документов из каждой БЗ по запросу query_text и объединяем их в общий список, сортируем чтобы получить общий top_k от всех опрошенных БЗ.

Swagger документация

Python example

import requests import pprint user_token = 'XXXXXXXXXXXXXXXXXXXXXXXXX' query_text = 'test' top_k = 3 print('1. collect all available knowledge bases') r = requests.get('https://croc-chat.autofaq.ai/core-api/crud/api/v1/services', headers={'AUTOFAQ-User-Token': user_token}) kb_services = r.json() pprint.pprint(kb_services) print('2. send query to all published') batch_query = [] for item in kb_services: if item['status'] == 'Serving': batch_query.append({ 'service_id': item['service_id'], 'service_token': item['tokens'][0], 'query': query_text, 'top_k': top_k, }) r = requests.post('https://croc-chat.autofaq.ai/core-api/query/api/v1/query/batch', json=batch_query) batch_response = r.json() print('batch response') pprint.pprint(batch_response) for i, item in enumerate(batch_response): print(f'\n Top {top_k} documents found from {kb_services[i]["service_id"]} - {kb_services[i]["name"]}') pprint.pprint(item['results']) print('3. merge results and sort together by score') total_results = [] [total_results.extend(item['results']) for item in batch_response] pprint.pprint(sorted(total_results, key=lambda x: x['score'], reverse=True))

 

curl example

Пример запроса в 3 БЗ.

Если есть ответ от БЗ то ответ для нее будет в поле results

Если БЗ отсутствует то код ошибки в поле error = no_service

Если БЗ остановлена, то код ошибки в поле error = service_stopped

При указании некорректного service_token код ошибки в поле error = bad_token

Пример запроса и ответа QNA batch query API:

$curl -H "Content-Type: application/json" -XPOST https://api.autofaq.ai/v1/query/batch -d ' [ {"service_id": 107742, "service_token": "46b30dc373644e24a557135a60287099", "query": "сколько стоит", "top_k": 3 }, {"service_id": 107742, "service_token": "xxx", "query": "тест", "top_k": 3 }, {"service_id": 100500146, "service_token": "1234", "query": "тест", "top_k": 3 } ] ' [ { "results": [ { "document_id": 1802226, "name": "Стоимость и описание продукта", "question": "Сколько стоит?", "answer": "Во вложении наш прайс-лист и презентация продукта.<br>\nОбратите внимание, что стоимость нашего сервиса не зависит от количества подключенных баз знаний или операторов. У нас несколько тарифов в зависимости от объема запросов к системе и желаемого функционала. Есть расширенные пакеты услуг для крупных клиентов. Пожалуйста, оставьте ваш email или телефон, мы с вами свяжемся и всё расскажем. 🙂", "ext": { "comment": "", "answerType": "Answer", "import_excel_doc_id": null, "import_excel_answer_type": "", "modifiedAt": 1682271809629, "modifiedByUserId": "0be1cd96-0a34-4348-bfd8-a0ddfecaabab", "modifiedByUserName": "Владислав Беляев" }, "attachments": [ { "attachment_id": 3363, "name": "AutoFAQ_price_list_2023.pdf" }, { "attachment_id": 3362, "name": "AutoFAQ для клиентской поддержки_2023.pdf" } ], "modified_at": "2023-04-23T17:43:30", "expired_at": null, "status": "OK", "context": [], "answers": null, "score": 1.0 }, { "document_id": 965210, "name": "Интеграции", "question": "как с вами интегрироваться", "answer": "С AutoFAQ можно интегрироваться через API или диалоговые <a href=\"https://deephack.atlassian.net/wiki/spaces/AKB/pages/1220542465\">сценарии</a><br>\n<br>\n", "ext": { "answerType": "Answer", "comment": "", "modifiedAt": 1597766871223, "modifiedByUserId": "0be1cd96-0a34-4348-bfd8-a0ddfecaabab", "modifiedByUserName": "" }, "attachments": [], "modified_at": "2020-08-18T16:07:51", "expired_at": null, "status": "OK", "context": [], "answers": null, "score": 0.46 }, { "document_id": 719291, "name": "Демо или пилот", "question": "Можете организовать демо?", "answer": "Во вложении краткая презентация продукта с кейсами использования.<br>\nМы будем рады организовать звонок или подъехать к вам для демонстрации системы. Пожалуйста, оставьте email или телефон, мы свяжемся с Вами и всё расскажем.", "ext": { "answerType": "Answer", "comment": "", "modifiedAt": 1680726327474, "modifiedByUserId": "cf5ac283-b029-4e2a-992a-cf9651a2e0ba", "modifiedByUserName": "irina@autofaq.ai" }, "attachments": [ { "attachment_id": 3280, "name": "AutoFAQ для клиентской поддержки_2023.pdf" } ], "modified_at": "2023-04-05T20:25:33", "expired_at": null, "status": "OK", "context": [], "answers": null, "score": 0.43 } ], "query_tokens": [ "сколько", "стоит" ], "query_id": "d33a4f6ff74b49e69ae086caa9b9a8f3", "session_id": "12de0bf0af0b416d9a02772eacf2b3f3" }, { "message": "Access Denied (incorrect token)", "error": "bad_token" }, { "message": "No such service", "error": "no_service" } ]