代码之家  ›  专栏  ›  技术社区  ›  gachCoder

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

  •  2
  • gachCoder  · 技术社区  · 7 年前

    我正在搜索有关集成的文档 QnA Maker API 具有 路易斯 在里面 Azure BOT框架 . 但经过大量研究,我找不到任何这样的文件。

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

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   Matthew S    7 年前

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

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

    Dialog management with QnA, Luis, and Scorables

    在示例中 路易斯Dialog 充当一种消息控制器,引导用户根据意图进行某种对话。这也可用于将用户引导到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,如果没有意图满足特定阈值得分,即触发“无”意图,则致电QnA Maker。或者,为QnA Maker创建一个LUIS意图,为您的LUIS模型提供映射到“QnAIntent”的示例QnA问题

    3) 首先打电话给QnA Maker,如果没有答案符合特定的阈值分数,那么打电话给LUIS。