QNA制造商并没有从知识库中返回准确的匹配信息。
因此,我们一直在使用僵尸生成器-ai库调用QNA制造商。然而,QNA制造商并没有返回知识库中的精确匹配。但是,如果我检查一下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制造商的端点,并将返回结果。相反,它返回一个空白数组。
现在,我监视了qnamaker.ai调用,并注意到当它们调用API时,它们又传递了一个参数,即isTest = true。
以下是研究结果:
不带isTest =真
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
}With 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,因为我直接使用它们的库来实现这一点。
有人能帮忙吗?提前谢谢。
https://stackoverflow.com/questions/56171009
复制相似问题