QnA 메이커를 사용할 계획이지만 백그라운드에서 LUIS를 사용합니까? QnA 제조사와 다른 방식으로 질문하는 경우 응답합니까?Microsoft QnA 제조업체에서 LUIS를 사용합니까?
0
A
답변
1
백그라운드에서 LUIS를 사용합니까?
아니요,하지만 Combining Search, QnA Maker, and/or LUIS 수 있습니다.
이 문서에 따르면 LUIS와 함께 QnA를 구현하는 데 다음 세 가지 방법이 제안됩니다.
여기에 나는 세 번째 방법은 C#으로 쓴 단지에 대한 코드 샘플을 게시 할 수 있습니다. 첫째
전화 모두 같은 시간에 문의 글 메이커와 루이스, 특정 임계 값의 점수를 반환하는 첫 번째 정보를 사용하여 사용자에게 응답합니다.
먼저 LUIS를 호출하고 특정 임계 값 스코어, 즉 "없음"인 텐트가 충족되지 않으면 QnA Maker를 호출하십시오. 또는 QnA Maker 용 LUIS 인 텐트를 작성하고 LUIS 모델에 "QnAIntent"에 매핑되는 예제 QnA 질문을 제공하십시오.
QnA Maker를 먼저 호출하고 특정 임계점을 만족하는 응답이없는 경우 LUIS를 호출하십시오.
MessagesController
전화에서 문의 글 메이커 : 대답이 일치하는 경우 MyQnADialog
에서
if (activity.Type == ActivityTypes.Message)
{
await Conversation.SendAsync(activity,() => new Dialogs.MyQnADialog());
}
이되지 않을 경우, 전화, 참조 루이스 :
[QnAMakerAttribute("QnASubscriptionKey", "QnAKnowledgebaseId", "No Answer in Knowledgebase, seraching in Luis...", 0.5)]
[Serializable]
public class MyQnADialog : QnAMakerDialog
{
protected override async Task DefaultWaitNextMessageAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result)
{
if (result.Answers.Count == 0)
{
await context.Forward(new MyLuisDialog(), this.ResumeAfterNewOrderDialog, message, CancellationToken.None);
}
context.Wait(this.MessageReceivedAsync);
//return base.DefaultWaitNextMessageAsync(context, message, result);
}
private async Task ResumeAfterNewOrderDialog(IDialogContext context, IAwaitable<object> result)
{
var resultfromnewdialog = await result;
context.Wait(this.MessageReceivedAsync);
}
}
우리가 문의 글과 루이스를 사용하는 경우, 다음 공급 수업을 두 번해야합니다. QnA에서 한 번, LUIS에서 다시 한 번? 내 이해를 바로 잡으십시오. – ZEE
@ZEE, 그들은 서로 다른 서비스입니다. 동일한 시간에 두 서비스에 직접 메시지를 보내고 결과를 확인하거나 서로 이동할 수 있습니다. 예를 들어 QnA의 사용자 쿼리와 대답이있는 경우 LUIS를 더 이상 호출 할 필요가 없습니다. –
분명한 답변을 보내 주셔서 감사합니다.하지만 제 걱정거리는 두 번 훈련해야하는지, 즉 QnA에 한 번, LUIS에 다시 훈련해야하는지 여부입니다. 따라서 첫 번째 옵션이 특정 점수에 도달하면 2 번째 전화를 진행합니다. – ZEE