首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QnA Maker知识库返回“KB中找不到好的匹配”作为后续提示

QnA Maker知识库返回“KB中找不到好的匹配”作为后续提示
EN

Stack Overflow用户
提问于 2019-07-10 08:07:03
回答 2查看 1.2K关注 0票数 1

我的QnA知识库出现了一个问题,在使用后续提示时,它会重新设置“KB中找不到好的匹配”,并将其配置为返回一个答案。

我已经设置了大约200个问答对,它们都有后续提示,将每个问题/答案对链接到其他问题/答案对。然而,当我在QnA Maker中测试知识库时,我得到的答案是“KB中找不到答案”。

以下是一个例子:

我有一个问答组合来回答‘什么是抑郁’的问题,这个问题有五个不同的后续提示--流行率、原因、类型、症状和相关问题:

正如您在下面的图片中所看到的,流行率跟踪提示被配置为使用“抑郁症有多常见”的问题/答案对来回答:

但是,当我使用QnA Maker的内置测试聊天机器人进行测试时,我得到的答案是“KB中找不到很好的匹配”:

当我检查结果时,我看到以下内容:

正如你所看到的,没有返回答案,信心分数是‘无’。

有没有其他人见过这个问题,并有解决办法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-10 09:18:52

跟踪提示目前不支持在QnA制造者门户之外的框外。有一个C#NodeJS实验示例,演示如何将此功能集成到bot中。

由于您没有指定语言首选项,所以我将使用C#首选项,基本上您的QnA代码需要从以下几个方面进行更新:

代码语言:javascript
复制
var qnaMaker = new QnAMaker(new QnAMakerEndpoint
{
    KnowledgeBaseId = _configuration["QnAKnowledgebaseId"],
    EndpointKey = _configuration["QnAEndpointKey"],
    Host = _configuration["QnAEndpointHostName"]
},
null,
httpClient);

var response = await qnaMaker.GetAnswersAsync(turnContext);

if (response != null && response.Length > 0)
{
    await turnContext.SendActivityAsync(MessageFactory.Text(response[0].Answer), cancellationToken);
}
else
{
    await turnContext.SendActivityAsync(MessageFactory.Text("No QnA Maker answers were found."), cancellationToken);
}

至:

代码语言:javascript
复制
var qnaMaker = new QnAMaker(new QnAMakerEndpoint
{
    KnowledgeBaseId = _configuration["QnAKnowledgebaseId"],
    EndpointKey = _configuration["QnAEndpointKey"],
    Host = _configuration["QnAEndpointHostName"]
},
null,
httpClient);

var response = await qnaMaker.GetAnswersAsync(turnContext);
var qnaAnswer = response[0].Answer;
var prompts = response[0].Context?.Prompts;

if (prompts == null || prompts.Length < 1)
{
    await turnContext.SendActivityAsync(MessageFactory.Text(response[0].Answer), cancellationToken);
}
else
{
    // Set bot state only if prompts are found in QnA result
    newState = new QnABotState
    {
        PreviousQnaId = response[0].Id,
        PreviousUserQuery = query
    };

    outputActivity = CardHelper.GetHeroCard(qnaAnswer, prompts);
}

相关代码在这个文件中,正如您可以看到的那样,还有一些额外的代码可以通过后续提示来存储进度,所以在将KB细节插入示例之后,在将其移植到您的机器人之前,可能更容易将其插入到示例中以查看它的工作方式。

票数 2
EN

Stack Overflow用户

发布于 2019-07-11 07:09:42

在Matt的帮助下,我们对门户聊天机器人和QnA API进行了一些测试,发现在门户聊天机器人返回预期的答案时,存在一个bug。随后,我在BotFramework文档页这里上发布这方面的详细信息作为反馈。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56966147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档