我正在开发一个机器人,目前通过调度工具将 1 KB 映射到 LUIS 中的一个 Intent。我按照这篇文章创建了调度。我想在同一个 QnA 服务中创建更多知识库,并通过创建调度文件将它们映射到多个意图。我关注的 Microsoft 文章使用Caseswitch 语句来确定多个意图。这对我来说似乎非常依赖代码。问题是:如果我通过调度文件创建多个意图和知识库,是否有办法摆脱这些 case switch 语句?或者我必须为每个知识库创建多个 case switch 语句,以便机器人映射到正确的知识库?我有以下代码: private async Task DispatchToTopIntentAsync(ITurnContext<IMessageActivity> turnContext, string intent, RecognizerResult recognizerResult, CancellationToken cancellationToken) { switch (intent) { case "l_HomeAutomation": await ProcessHomeAutomationAsync(turnContext, recognizerResult.Properties["luisResult"] as LuisResult, cancellationToken); break; case "l_Weather": await ProcessWeatherAsync(turnContext, recognizerResult.Properties["luisResult"] as LuisResult, cancellationToken); break; //case "q_sample-qna": case "q_CivicSampleFAQ": await ProcessSampleQnAAsync(turnContext, cancellationToken); break; default: _logger.LogInformation($"Dispatch unrecognized intent: {intent}."); // await turnContext.SendActivityAsync(MessageFactory.Text($"Dispatch unrecognized intent: {intent}."), cancellationToken); break; } }基本上情况q_CivicSampleFAQ决定处理的意图应该得到 QnA Maker KB 的回复。如果我有多个 KB,我可以创建多个案例,但这会限制我每次拥有新 KB 时或即使旧 KB 的名称发生更改时也必须更改代码。有什么想法如何绕过这个吗?
1 回答
翻阅古今
TA贡献1780条经验 获得超5个赞
Microsoft 提供了一个利用认知服务 API 的 QnA Maker 软件包,您可以从那里下载并存储所有 KB、其 ID 和数据的列表。
https://www.nuget.org/packages/Microsoft.Bot.Builder.AI.QnA/
除此之外,您还必须创建自己的意图与您想要定位的知识库之间的关系图。不过,一旦完成此操作,接收意图并根据您的映射分派到适当的知识库就变得很简单。
- 1 回答
- 0 关注
- 68 浏览
添加回答
举报
0/150
提交
取消