/
Пример QNA batch query
Пример QNA batch query
Пример поиска запроса query_text
во всех опубликованных БЗ.
Сначала получаем список опубликованных БЗ и их service_token
которые нужны для query/batch
Затем получаем top_k
документов из каждой БЗ по запросу query_text
и объединяем их в общий список, сортируем чтобы получить общий top_k
от всех опрошенных БЗ.
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"
}
]