当在QnaMaker中进行测试时,输入analyst report和analyst reports会给出响应。然而,我们的bot解决方案中的调用并没有给出对analyst reports的响应--它只给出了analyst report的响应。返回的错误是
序列不包含任何元素
呼叫QnaMaker
QueryResult[] result = null;
try
{
result = await botServices.QnaServices[FAQQnAMakerKey].GetAnswersAsync(dc.Context);
}
catch { /* ... */ }预期输出与在QnaMaker中测试的输出相同-- analyst report和analyst reports的响应相同。
发布于 2019-07-30 09:46:33
我猜‘分析师报告’和‘分析师报告’得到不同的分数,也许其中一个被bot框架过滤掉了。
QnAMaker类在构造函数中接受一个QnAMakerOptions对象,该构造函数默认为null,但我不确定QnAMakerOptions.ScoreThreshold默认为什么。您可以尝试将其指定为0,以确保得到任何响应。
var qnaMaker = new QnAMaker(new QnAMakerEndpoint
{
KnowledgeBaseId = _configuration["QnAKnowledgebaseId"],
EndpointKey = _configuration["QnAEndpointKey"],
Host = _configuration["QnAEndpointHostName"]
},
new QnAMakerOptions
{
Top = 3,
Timeout = 10000,
ScoreThreshold = 0F
},
httpClient);或者,只需将这些选项添加到GetAnswerAsync()的函数调用中即可。
var response = await qnaMaker.GetAnswersAsync(turnContext, new QnAMakerOptions
{
Top = 3,
Timeout = 10000,
ScoreThreshold = 0F
}
);https://stackoverflow.com/questions/57265884
复制相似问题