我正在開(kāi)發(fā)一個(gè)機(jī)器人,目前通過(guò)調(diào)度工具將 1 KB 映射到 LUIS 中的一個(gè) Intent。我按照這篇文章創(chuàng)建了調(diào)度。我想在同一個(gè) QnA 服務(wù)中創(chuàng)建更多知識(shí)庫(kù),并通過(guò)創(chuàng)建調(diào)度文件將它們映射到多個(gè)意圖。我關(guān)注的 Microsoft 文章使用Caseswitch 語(yǔ)句來(lái)確定多個(gè)意圖。這對(duì)我來(lái)說(shuō)似乎非常依賴代碼。問(wèn)題是:如果我通過(guò)調(diào)度文件創(chuàng)建多個(gè)意圖和知識(shí)庫(kù),是否有辦法擺脫這些 case switch 語(yǔ)句?或者我必須為每個(gè)知識(shí)庫(kù)創(chuàng)建多個(gè) case switch 語(yǔ)句,以便機(jī)器人映射到正確的知識(shí)庫(kù)?我有以下代碼: 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決定處理的意圖應(yīng)該得到 QnA Maker KB 的回復(fù)。如果我有多個(gè) KB,我可以創(chuàng)建多個(gè)案例,但這會(huì)限制我每次擁有新 KB 時(shí)或即使舊 KB 的名稱發(fā)生更改時(shí)也必須更改代碼。有什么想法如何繞過(guò)這個(gè)嗎?
1 回答

翻閱古今
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
Microsoft 提供了一個(gè)利用認(rèn)知服務(wù) API 的 QnA Maker 軟件包,您可以從那里下載并存儲(chǔ)所有 KB、其 ID 和數(shù)據(jù)的列表。
https://www.nuget.org/packages/Microsoft.Bot.Builder.AI.QnA/
除此之外,您還必須創(chuàng)建自己的意圖與您想要定位的知識(shí)庫(kù)之間的關(guān)系圖。不過(guò),一旦完成此操作,接收意圖并根據(jù)您的映射分派到適當(dāng)?shù)闹R(shí)庫(kù)就變得很簡(jiǎn)單。
- 1 回答
- 0 關(guān)注
- 108 瀏覽
添加回答
舉報(bào)
0/150
提交
取消