Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

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

Python example

Code Block
breakoutModewide
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:

Code Block
breakoutModewide
curl$curl -H "Content-Type: application/json" -XPOST https://api.autofaq.ai/v1/query/batch -d '
[
 {"service_id": 89237107742, "service_token": "1cabef60a1ef44b34b3127295312acc6f46b30dc373644e24a557135a60287099", "query": "приветсколько стоит", "top_k": 3 },
 {"service_id": 107742, "service_token": "46b30dc373644e24a557135a60287099xxx", "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"
    }
]