我正在搜索有关 QnA Maker API 与 LUIS 在 Azure BOT框架中集成的文档。但经过大量的研究,我找不到任何这样的文件。
如果有人遇到同样的情况,请发布您的努力。
我在这里使用C#作为脚本。
答案 0 :(得分:2)
有几种通用方法可以做到这一点,但最终由您作为Bot开发人员来决定如何构建它。
文档here中提供了一般性概述,但如果您想要一个更加面向代码的示例,此博客文章应该可以帮助您 -
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对话框以进行回答。
或者,您可以专门创建一个&#34;问题意图&#34;如果用户的意图是提出问题,请尝试将其转发给QnA。但这很棘手,因为这种方法要求您手动创建自定义代码来管理分数&#39;的回应。
希望这足以帮助您达到您的需求!
编辑 - 道歉,修复了第一个链接。
此外,我只是粘贴文档中列出的3种常见方案,作为使用LUIS + QnA的方法:
1)同时呼叫QnA Maker和LUIS,并使用第一个返回特定阈值分数的信息回复用户。
2)首先调用LUIS,如果没有意图达到特定的阈值分数,即&#34;无&#34;意图被触发,然后调用QnA Maker。或者,为QnA Maker创建一个LUIS意图,为您的LUIS模型提供示例QnA问题,这些问题映射到&#34; QnAIntent。&#34;
3)首先调用QnA Maker,如果没有答案符合特定的阈值分数,则调用LUIS。