2

我正在搜索有关在Azure BOT Framework中将QnA Maker APILUIS集成的文档。但经过大量研究,我找不到任何这样的文件。

如果有人遇到相同的情况,请发表您的努力。

我在这里使用 C# 作为脚本。

4

1 回答 1

2

有几种通用方法可以做到这一点,但最终由您作为 Bot 开发人员来决定如何构建它。

此处的文档中提供了一般概述,但如果您想要更多面向代码的示例,这篇博文应该可以帮助您 -

使用 QnA、Luis 和 Scorables 进行对话管理

在示例中,LuisDialog充当一种消息控制器,根据意图引导用户进入某种对话。这也可用于将用户引导至 QnA 对话框 ->

[Serializable]
[LuisModel("YourLuisAppID", "YourLuisSubscriptionKey")]
public class LuisDialog : LuisDialog<object>
{
    // methods to handle LUIS intents

    [LuisIntent("")]
    [LuisIntent("None")]
    public async Task None(IDialogContext context, LuisResult result)
    {
       // You can forward to QnA Dialog, and let Qna Maker handle the user's 
        query if no intent is found
        await context.Forward(new QnaDialog(), ResumeAfterQnaDialog, 
                               context.Activity, CancellationToken.None);
    }

    [LuisIntent("Some-Intent-Like-Get-Weather")]
     public async Task GetWeather(IDialogContext context, LuisResult result)
     {
         .... 
         // some tasks, forward to other dialog, etc 
     }

}

这是一种方法,也是一种流行的方法。在此设置中,如果 LUIS 无法检测到任何意图,它会将用户的查询路由到 QnA 对话框,供 Qna 服务(您训练的)回答。

或者,如果用户的意图是提出问题,您可以专门创建一个“问题意图”并尝试以这种方式将其转发给 QnA。然而,这更棘手,因为这种方法需要您手动创建自定义代码来管理响应的“分数”。

希望这足以帮助您获得所需的东西!

编辑- 抱歉,修复了第一个链接。

此外,我将粘贴文档中列出的 3 个常见场景作为使用 LUIS + QnA 的方式:

1) 同时调用 QnA Maker 和 LUIS,并使用第一个返回特定阈值分数的信息来响应用户。

2)先调用LUIS,如果没有intent满足特定阈值分数,即触发“None”intent,则调用QnA Maker。或者,为 QnA Maker 创建一个 LUIS 意图,为您的 LUIS 模型提供映射到“QnAIntent”的示例 QnA 问题。

3)首先调用 QnA Maker,如果没有答案达到特定阈值分数,则调用 LUIS。

于 2017-12-14T18:05:57.310 回答