【发布时间】:2019-10-03 21:02:34
【问题描述】:
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,因为我直接使用他们的库来执行此操作。
有人可以帮忙吗? 提前致谢。
【问题讨论】:
标签: node.js azure azure-cognitive-search qnamaker