Azure BOT Framework, интеграция QnA Maker с LUIS

Я ищу документацию по интеграции QnA Maker API с LUIS в Azure BOT Framework. Но после долгих поисков я не смог найти ни одного такого документа.

Если кто-то сталкивался с таким же сценарием, опубликуйте свои усилия.

Здесь я использую C # в качестве сценария.


person gachCoder    schedule 14.12.2017    source источник
comment
Я думаю, это зависит от того, что вы пытаетесь сделать. Я просто создал отдельный диалог для QnA и перехожу к нему из намерения None моего диалога LUIS.   -  person henrikmerlander    schedule 14.12.2017
comment
Думаю, ваш вопрос недостаточно ясен. Если вы хотите использовать QnAMaker и LUIS в проекте бота, в Интернете есть несколько примеров. Существует несколько подходов: сначала вызовите LUIS, а при намерении «Нет» - QnAMaker, или QnAMaker, затем LUIS, если нет ответа ... Выбор будет зависеть от вашего бизнес-кейса.   -  person Nicolas R    schedule 14.12.2017
comment
Позвольте мне объяснить свой сценарий: всякий раз, когда пользователь входит в BOT и отправляет приветственное сообщение, BOT должен позвонить в LUIS и найти это приветствие из намерения (на конце LUIS) и отправить случайный ответ (будет набор приветственных ответов. ). После этого он выполнит следующий вызов API-интерфейса QnA maker и выдаст соответствующий ответ. Я пробовал вести несколько блогов, но не могу использовать оба API вместе. Если у вас есть относительные блоги, пожалуйста, передайте мне ссылки.   -  person gachCoder    schedule 14.12.2017


Ответы (1)


Есть несколько общих способов сделать это, но в конечном итоге вы, как разработчик бота, должны решить, как его структурировать.

Общий обзор представлен в документации здесь, но если вам нужен пример, более ориентированный на код, это сообщение в блоге должно помочь вам -

Управление диалогом с QnA, Luis и Scorables

В этом примере LuisDialog действует как своего рода контроллер сообщений, который направляет пользователя к определенному диалогу на основе намерения. Это также можно использовать для направления пользователя к диалоговому окну QnA ->

[Serializable]
[LuisModel("YourLuisAppID", "YourLuisSubscriptionKey")]
public class LuisDialog : LuisDialog<object>
{
    // methods to handle LUIS intents

    [LuisIntent("")]
    [LuisIntent("None")]
    public async Task None(IDialogContext context, LuisResult result)
    {
       // You can forward to QnA Dialog, and let Qna Maker handle the user's 
        query if no intent is found
        await context.Forward(new QnaDialog(), ResumeAfterQnaDialog, 
                               context.Activity, CancellationToken.None);
    }

    [LuisIntent("Some-Intent-Like-Get-Weather")]
     public async Task GetWeather(IDialogContext context, LuisResult result)
     {
         .... 
         // some tasks, forward to other dialog, etc 
     }

}

Это один из самых популярных способов сделать это. В этой настройке, если LUIS не обнаружит намерения, он направит запрос пользователя в диалоговое окно QnA для службы Qna (которую вы обучаете), чтобы ответить.

В качестве альтернативы вы можете создать специально «Намерение вопроса» и попытаться переслать его в QnA таким образом, если намерением пользователя было задать вопрос. Однако это сложнее, поскольку этот метод требует, чтобы вы вручную создавали собственный код для управления «оценками» ответов.

Надеюсь, этого было достаточно, чтобы помочь вам получить то, что вам нужно!

РЕДАКТИРОВАТЬ - извинения, исправлена ​​первая ссылка.

Кроме того, я просто вставлю 3 распространенных сценария, перечисленных в документации, как способы использования LUIS + QnA:

1) Вызовите QnA Maker и LUIS одновременно и ответьте пользователю, используя информацию из первого, которая возвращает оценку определенного порога.

2) Сначала вызовите LUIS, и если ни одно намерение не соответствует определенному пороговому баллу, т. Е. Инициировано намерение «Нет», затем вызовите QnA Maker. В качестве альтернативы создайте намерение LUIS для QnA Maker, снабдив вашу модель LUIS примерами вопросов QnA, которые отображаются в «QnAIntent».

3) Сначала вызовите QnA Maker, и если ни один ответ не соответствует определенному пороговому баллу, затем вызовите LUIS.

person Matthew S    schedule 14.12.2017