QNA Maker не возвращает точные совпадения из баз знаний.
Итак, мы использовали библиотеку botbuilder-ai для вызова создателя QNA. Однако QNA Maker не возвращает точное совпадение, которое есть в базе знаний. Однако, если я проверю это в тестовой функции портала qnamaker.ai, это сработает.
Вот код, который я использую для извлечения результатов.
const this.qnaRecognizer = new QnAMaker(
{
knowledgeBaseId: keyvault.QnAMakerSecret.knowledgebaseID,
endpointKey: keyvault.QnAMakerSecret.qnaAuthKEY,
host: keyvault.QnAMakerSecret.qnaEndPointHost,
},
{
scoreThreshold: QNA_CONFIDENCE_THRESHOLD,
top: QNA_NUM_OF_RESULTS,
}
);
const qnaResult = await this.qnaRecognizer.getAnswers(step.context);
Как и ожидалось, он вызывает конечную точку QNA Maker и должен возвращать результаты. Вместо этого возвращается пустой массив.
Теперь я наблюдал за вызовами qnamaker.ai и заметил, что когда они вызывают API, они передают еще один параметр, который является isTest = true
.
Вот результаты:
Без isTest = true
URL: https://qnamaker-host.azurewebsites.net/qnamaker/knowledgebases/<kbid>/generateAnswer
Method: POST
Result: {
"answers": [
{
"questions": [],
"answer": "No good match found in KB.",
"score": 0,
"id": -1,
"source": null,
"metadata": []
}
],
"debugInfo": null
}
С isTest = true
URL: https://qnamaker-host.azurewebsites.net/qnamaker/knowledgebases/<kbid>/generateAnswer
Method: POST
Result: {
"answers": [
{
"questions": [
"Who are you?"
],
"answer": "I am an intelligent bot",
"score": 100,
"id": 2,
"source": "Editorial",
"metadata": [
{
"name": "_id",
"value": "<removed>"
}
],
"context": {
"isContextOnly": false,
"prompts": []
}
}
],
"debugInfo": null
}
Теперь я должен ожидать того же поведения без установки isTest = true
в этом случае. Кроме того, в каждом API я не могу передать isTest = true
, потому что я напрямую использую их библиотеку для этого.
Может кто-нибудь помочь в этом?
Заранее спасибо.