我正在開發一個機器人,目前通過調度工具將 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 關注
- 101 瀏覽
添加回答
舉報
0/150
提交
取消