Azure BOT 框架,将 QnA Maker 与 LUIS 集成
Azure BOT Framework, Integrate QnA Maker with LUIS
我正在搜索 QnA Maker API 与 LUIS 在 Azure 中集成的文档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。
我正在搜索 QnA Maker API 与 LUIS 在 Azure 中集成的文档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。