[MCS-DE-GO] Bug on LUIS results in child dialog
See original GitHub issueWhen having a conversation within a child dialog, the UserInput is processed by the child dialog LUIS model as well as the root dialog LUIS model.
The “turn.recognized.intent” does not contain the highest scoring value but actually the result from the root dialog LUIS model.
Also it seems that the child dialog LUIS model is always called twice.
It appears as if only the last result from the LUIS calls is stored and not all results are considered when evaluating which has the highest score.
Is there a way to configure this via the Bot Design settings or the appsettings?
Here the details from Emulator:
Child dialog 1st LUIS call (1st. LUIS result):
{
"recognizerResult": {
"alteredText": null,
"entities": {},
"intents": {
"Intent_ConfirmationUnsubscribed": {
"score": 0.96476275
}
},
"text": "ist abgemeldet"
}
}
Child dialog 2nd LUIS call (2nd LUIS result):
{
"recognizerResult": {
"alteredText": null,
"entities": {},
"intents": {
"Intent_ConfirmationUnsubscribed": {
"score": 0.96476275
}
},
"text": "ist abgemeldet"
}
}
Root dialog LUIS result (3rd LUIS result):
{
"recognizerResult": {
"alteredText": null,
"entities": {},
"intents": {
"Intent_None": {
"score": 0.31199825
}
},
"text": "ist abgemeldet"
}
}
Result in ${turn.recognized} output:
There is a second issue. The child dialog LUIS model is always queried twice which does not make sense.
I would like to add that there should be more best practice guidance on how to best configure and train LUIS Models. Having a separate LUIS Model per Dialog is decreasing overall performance and increasing LUIS cost plus adds complexity to the Bot maintenance.
Issue Analytics
- State:
- Created 2 years ago
- Comments:10 (6 by maintainers)
Top GitHub Comments
Hi @goergenj , I think the root dialog is being consulted because you’ve got the
allow interruptions
flag on for this user input, and there is no trigger that was hit in the child dialog. There are hopefully some helpful details here.So if you create a trigger in the child dialog called
Intent_ConfirmationUnsubscribed
, and fill it out with the same lu data from the userinput, this will prevent the root dialog from being consulted since this trigger will be hit first. Inside the newIntent_ConfirmationUnsubscribed
trigger in the child dialog,${turn.recognized}
is populated correctly with the correct intent.I’m investigating the child recognizer being invoked twice, I can repro this always when using interruptions. I’ll need some time to trace the events in the SDK to see why we’re doing this.
Closing this ticket, feel free to reopen if something still needs to be addressed.