Azure BOT 框架,将 QnA Maker 与 LUIS 集成

Azure BOT Framework, Integrate QnA Maker with LUIS

我正在搜索 QnA Maker APILUISA​​zure 中集成的文档BOT 框架。但经过大量研究,我找不到任何这样的文件。

如果有人遇到同样的情况,请post努力。

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

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

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

Dialog management with QnA, Luis, and 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 服务(您训练)回答。

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

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

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

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

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

2) 首先调用 LUIS,如果没有意向达到特定阈值分数,即触发 "None" 意向,则调用 QnA Maker。或者,为 QnA Maker 创建 LUIS 意图,为 LUIS 模型提供映射到 "QnAIntent."

的示例 QnA 问题

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