Использование нескольких моделей LUIS и QnAUse multiple LUIS and QnA models

применимо к: Пакет SDK v4APPLIES TO: SDK v4

Если бот использует несколько моделей LUIS и базы знаний QnA Maker, вы можете применить средство Dispatch, чтобы определить модель LUIS или базу знаний QnA Maker, которые лучше всего соответствуют вводимым пользователем данным.If a bot uses multiple LUIS models and QnA Maker knowledge bases (knowledge bases), you can use Dispatch tool to determine which LUIS model or QnA Maker knowledge base best matches the user input. Для этого средство Dispatch создает одно приложение LUIS, чтобы отправить эти данные в соответствующую модель.The dispatch tool does this by creating a single LUIS app to route user input to the correct model. Дополнительные сведения о средстве Dispatch (включая команды CLI) см. в файле сведений.For more information about the Dispatch, including the CLI commands, refer to the README.

Предварительные требованияPrerequisites

Об этом примереAbout this sample

Этот пример основан на предопределенном наборе LUIS и QnA Maker приложений.This sample is based on a predefined set of LUIS and QnA Maker apps.

Пример кода. логика потока

OnMessageActivityAsync вызывается для каждого полученного блока данных, введенных пользователем.OnMessageActivityAsync is called for each user input received. Этот модуль обнаруживает намерения пользователя с наивысшими оценками и передает результат в DispatchToTopIntentAsync.This module finds the top scoring user intent and passes that result on to DispatchToTopIntentAsync. DispatchToTopIntentAsync, в свою очередь, вызывает соответствующий обработчик приложения.DispatchToTopIntentAsync, in turn, calls the appropriate app handler

  • ProcessSampleQnAAsync — для вопросов и ответов о боте.ProcessSampleQnAAsync - for bot faq questions.
  • ProcessWeatherAsync —для запросов о погоде.ProcessWeatherAsync - for weather queries.
  • ProcessHomeAutomationAsync — для команд домашнего освещения.ProcessHomeAutomationAsync - for home lighting commands.

Обработчик вызывает службу LUIS или QnA Maker и возвращает полученный результат пользователю.The handler calls the LUIS or QnA Maker service and returns the generated result back to the user.

Создание приложений LUIS и базы знаний QnACreate LUIS apps and QnA knowledge base

Перед созданием модели отправки вам нужно создать и опубликовать приложения LUIS и базы знаний QnA.Before you can create the dispatch model, you'll need to have your LUIS apps and QnA knowledge bases created and published. В этой статье мы опубликуем следующие модели, которые присутствуют в примере NLP with Dispatch в папке \CognitiveModels:In this article, we'll publish the following models that are included with the NLP With Dispatch sample in the \CognitiveModels folder:

ИмяName ОписаниеDescription
HomeAutomationHomeAutomation Приложение LUIS распознает намерение обращения к службе автоматизации и данные о сущностях.A LUIS app that recognizes a home automation intent with associated entity data.
WeatherWeather Приложение LUIS распознает намерения, связанные с погодой и данными о расположении.A LUIS app that recognizes weather-related intents with location data.
QnA MakerQnAMaker База данных QnA Maker предоставляет ответы на несколько простых вопросов о боте.A QnA Maker knowledge base that provides answers to simple questions about the bot.

Создание приложений LUISCreate the LUIS apps

  1. Создайте приложение LUIS из файла JSON службы "Домашняя страница " в каталоге "автоматизированные модели " примера.Create a LUIS app from the home automation JSON file in the cognitive models directory of the sample.
    1. Обучить и публикуйте приложение в рабочей среде.Train and publish the app to the production environment.
    2. Запишите идентификатор приложения, отображаемое имя, ключ создания и расположение.Record the application ID, display name, authoring key, and location.
  2. Повторите эти действия для файла " Погода " JSON.Repeat these steps for the weather JSON file.

Дополнительные сведения см. в статьях Создание приложения Luis на портале Luis и Получение значений для подключения к приложению Luis в разделе Добавление понимания естественного языка в программу Bot и документацию Luis о том, как обучить и публиковать приложение в рабочей среде.For more information, see how to Create a LUIS app in the LUIS portal and Obtain values to connect to your LUIS app in Add natural language understanding to your bot and the LUIS documentation on how to train and publish an app to the production environment.

Создание базы знаний QnA MakerCreate the QnA Maker knowledge base

Первым шагом при настройке базы знаний службы QnA Maker является настройка службы QnA Maker в Azure.The first step to setting up a QnA Maker knowledge base is to set up a QnA Maker service in Azure. Чтобы сделать это, см. пошаговые инструкции.To do that, follow the step-by-step instructions found here.

Создав в Azure службу QnA Maker, запишите ключ 1 Cognitive Services, который предоставлен для вашей службы QnA Maker.Once your QnA Maker Service has been created in Azure, you need to record the Cognitive Services Key 1 provided for your QnA Maker service. Он будет использоваться как <azure-qna-service-key1> при добавлении приложения QnA Maker в приложение диспетчеризации.This will be used as <azure-qna-service-key1> when adding the QnA Maker app to your dispatch application.

См. дополнительные сведения о двух типах ключей, используемых с QnA Maker.Learn more about the two different types of keys used with QnA Maker.

Чтобы получить этот ключ, сделайте следующее:The following steps provide you with this key:

Выбор Cognitive Services

  1. На портале Azure выберите службу QnA Maker из Cognitive Services.From within your Azure portal, select your QnA Maker cognitive service.

    Выбор ключей в Cognitive Services

  2. Выберите ключи, которые расположены в разделе управления ресурсами в меню слева.Select the Keys icon found under the Resource Management section on the left-hand menu.

    Выбор ключа 1 в Cognitive Services

  3. Скопируйте значение ключа 1 в буфер обмена и сохраните его на локальном компьютере.Copy the value of Key 1 to your clipboard and save this locally. Впоследствии это значение будет использоваться для значения ключа (-k) <azure-qna-service-key1> при добавлении приложения QnA Maker в приложение диспетчеризации.this will later be used for the (-k) key value <azure-qna-service-key1> when adding the QnA Maker app to your dispatch application.

  4. Теперь войдите на веб-портал QnA Maker.Now sign in to the QnAMaker web portal.

  5. На шаге 2 выберите следующие значения:At step 2, select the following:

    • Учетную запись Azure AD.Your Azure AD account.
    • Имя подписки Azure.Your Azure subscription name.
    • Имя, с которым вы создали службу QnA Maker.The name you created for your QnA Maker service. (Если нужная служба Azure QnA отсутствует в этом раскрывающемся списке, попробуйте обновить страницу.)(If your Azure QnA service does not initially appear in this pull down list, try refreshing the page.)

    Создание QnA, шаг 2

  6. На шаге 3 укажите имя для новой базы знаний QnA Maker.At step 3, provide a name for your QnA Maker knowledge base. В этом примере используйте имя sample-qna.For this example use the name 'sample-qna'.

    Создание QnA, шаг 3

  7. На шаге 4 нажмите кнопку + Add File (+ Добавить файл), перейдите к папке CognitiveModel с примером кода и выберите файл QnAMaker.tsv.At step 4, select the option + Add File, navigate to the CognitiveModel folder of your sample code, and select the file 'QnAMaker.tsv'. Здесь есть дополнительный параметр, позволяющий добавить в базу знаний личность Chit-chat (Беседа), но в нашем примере он не используется.There is an additional selection to add a Chit-chat personality to your knowledge base but our example does not include this option.

    Создание QnA, шаг 4

  8. На шаге 5 выберите Create your knowledge base (Создать базу знаний).At step 5, select Create your knowledge base.

  9. Когда база знаний будет создана из переданного файла, выберите действие Save and train (Сохранить и обучить), а когда оно будет выполнено, перейдите на вкладку PUBLISH (Публикация) и опубликуйте приложение.Once the knowledge base is created from your uploaded file, select Save and train and when finished, select the PUBLISH Tab and publish your app.

  10. После публикации приложения QnA Maker откройте вкладку SETTINGS (Параметры) и прокрутите эту страницу вниз до раздела Deployment Details (Сведения о развертывании).Once your QnA Maker app is published, select the SETTINGS Tab, and scroll down to 'Deployment details'. Запишите следующие значения из примера HTTP-запроса Postman.Record the following values from the Postman Sample HTTP request.

    POST /knowledge bases/<knowledge-base-id>/generateAnswer
    Host: <your-hostname>  // NOTE - this is a URL.
    Authorization: EndpointKey <qna-maker-resource-key>
    

    Полная строка URL-адреса для имени узла будет выглядеть так: https://<имя_узла>.azure.net/qnamaker.The full URL string for your hostname will look like "https://.azure.net/qnamaker". Эти значения будут потом использоваться в файле appsettings.json или .env.These values will later be used within your appsettings.json or .env file.

Приложению для отправки требуется доступ на чтение к имеющимся приложениямDispatch app needs read access to existing apps

Средству отправки требуется доступ для чтения имеющихся приложений LUIS и QnA Maker для создания родительского приложения LUIS, которое отправляется приложениям LUIS и QnA Maker.The dispatch tool needs authoring access to read the existing LUIS and QnA Maker apps in order to create a new parent LUIS app that dispatches to the LUIS and QnA Maker apps. Вместе с этим доступом предоставляются идентификаторы приложений и ключи разработки.This access is provided with the app IDs and authoring keys.

Ключи для создания службService authoring keys

Ключ разработки используется только для создания и редактирования моделей.The authoring key is only used for creating and editing the models. Вам нужен идентификатор и ключ для каждого приложения LUIS и приложения QnA Maker.You need an ID and key for each of the two LUIS apps and the QnA Maker app.

  • для LUISfor LUIS
    • Идентификатор приложения находится на портале Luis для каждого приложения, управляет параметрами > > параметры приложения.The App ID is found in the LUIS portal for each app, Manage > Settings > Application Settings
    • Ключ разработки находится на портале Luis, правом верхнем углу, выборе собственного пользователя, а затем параметры.The Authoring Key is found in the LUIS portal, top-right corner, select your own User, then Settings.
  • для QnA Makerfor Qna Maker
    • Идентификатор приложения находится на QnA Maker портале на странице параметры после публикации приложения.The App ID is found in the QnA Maker portal on the Settings page after you publish the app. Это идентификатор, расположенный в первой части команды POST после элемента knowledgebase.This is the ID found in first part of the POST command after the knowledgebase. Например, POST /knowledgebases/<APP-ID>/generateAnswer.An example of where to find the app ID is POST /knowledgebases/<APP-ID>/generateAnswer.
    • Ключ разработки находится в портал Azure для ресурса QnA Maker в разделе ключи.The Authoring Key is found in the Azure portal, for the QnA Maker resource, under the Keys. Вам потребуется только один ключ.You only need one of the keys.

Ключ разработки не используется для получения оценки прогнозирования или достоверности из опубликованного приложения.The authoring key is not used to get a prediction score or confidence score from the published application. Для этого действия нужны ключи конечных точек.You need the endpoint keys for this action. Мы найдем и применим ключи конечной точки далее в этом руководстве.The endpoint keys are found and used later in this tutorial.

См. дополнительные сведения о двух типах ключей, используемых с QnA Maker.Learn more about the two different types of keys used with QnA Maker.

Создание модели отправкиCreate the dispatch model

Интерфейс CLI для средства Dispatch создает модель для отправки в соответствующее приложение LUIS или QnA Maker.The CLI interface for the dispatch tool creates the model for dispatching to the correct LUIS or QnA Maker app.

  1. Откройте командную строку или окно терминала и измените каталоги на каталог CognitiveModels.Open a command prompt or terminal window, and change directories to the CognitiveModels directory

  2. Убедитесь, что у вас установлена текущая версия npm и средства Dispatch.Make sure you have the current version of npm and the Dispatch tool.

    npm i -g npm
    npm i -g botdispatch
    
  3. Используйте dispatch init для инициализации файла .dispatch для модели отправки.Use dispatch init to initialize create a .dispatch file for your dispatch model. Присвойте файлу понятное имя.Create this using a filename you will recognize.

    dispatch init -n <filename-to-create> --luisAuthoringKey "<your-luis-authoring-key>" --luisAuthoringRegion <your-region>
    
  4. Используйте dispatch add для добавления приложений LUIS и баз знаний QnA Maker в файл .dispatch.Use dispatch add to add your LUIS apps and QnA Maker knowledge bases to the .dispatch file.

    dispatch add -t luis -i "<app-id-for-weather-app>" -n "<name-of-weather-app>" -v <app-version-number> -k "<your-luis-authoring-key>" --intentName l_Weather
    dispatch add -t luis -i "<app-id-for-home-automation-app>" -n "<name-of-home-automation-app>" -v <app-version-number> -k "<your-luis-authoring-key>" --intentName l_HomeAutomation
    dispatch add -t qna -i "<knowledge-base-id>" -n "<knowledge-base-name>" -k "<azure-qna-service-key1>" --intentName q_sample-qna
    
  5. Используйте dispatch create для создания модели отправки из файла .dispatch.Use dispatch create to generate a dispatch model from the .dispatch file.

    dispatch create
    
  6. Опубликуйте созданное приложение LUIS для отправки.Publish the dispatch LUIS app, just created.

Использование приложения LUIS для отправкиUse the dispatch LUIS app

Созданное приложение LUIS определяет намерения для каждого дочернего приложения и каждой базы знаний, а также намерение none при несоответствии речевого фрагмента.The generated LUIS app defines intents for each of the child apps and the knowledge base, as well as a none intent for when the utterance doesn't have a good fit.

  • l_HomeAutomation
  • l_Weather
  • None
  • q_sample-qna

Эти службы нужно опубликовать с соответствующими именами, чтобы обеспечить правильную работу бота.These services need to be published under the correct names for the bot to run properly. Бот получает доступ к опубликованным службам на основе этих сведений.The bot needs information about the published services, so that it can access those services.

Ключи конечной точки службыService endpoint keys

Боту требуются конечные точки прогнозирования запросов для трех приложений LUIS (отправка, погода и домашняя автоматика) и единой базы знаний QnA Maker.The bot needs the query prediction endpoints for the three LUIS apps (dispatch, weather, and home automation) and the single QnA Maker knowledge base. Найдите ключи конечных точек на порталах LUIS и QnA Maker:Find the endpoint keys in the LUIS and QnA Maker portals:

  • Чтобы найти ключи, связанные с каждым приложением, перейдите на портал LUIS и для каждого приложения LUIS в разделе "Управление" выберите Keys and Endpoint settings (Параметры ключей и конечной точки).In the LUIS portal, for each LUIS app, in the Manage section, select Keys and Endpoint settings to find the keys associated with each app. Если вы в точности выполняете инструкции, приведенные в этом учебнике, ключом конечной точки является ключ <your-luis-authoring-key>.If you are following this tutorial, the endpoint key is the same key as the <your-luis-authoring-key>. Ключ разработки допускает 1000 попаданий конечной точки, а затем срок его действия истекает.The authoring key allows for 1000 endpoint hits then expires.
  • На портале QnA Maker для базы знаний перейдите в раздел "Управление настройками" и используйте значение ключа, отображаемое в параметрах Postman для заголовка Авторизация без текста EndpointKey.In the QnA Maker portal, for the knowledge base, in the Manage settings, use the key value shows in the Postman settings for the Authorization header, without the text of EndpointKey.

Эти значения используются в файле конфигурации образца: appsettings.jsв (C#), . env (JavaScript) или config.py (Python).These values are used in the sample's configuration file: appsettings.json (C#), .env (JavaScript), or config.py (Python).

Установка пакетовInstalling packages

Перед первым запуском приложения убедитесь, что установлены следующие пакеты NuGet:Prior to running this app for the first time ensure that several NuGet packages are installed:

  • Microsoft.Bot.BuilderMicrosoft.Bot.Builder
  • Microsoft.Bot.Builder.AI.LuisMicrosoft.Bot.Builder.AI.Luis
  • Microsoft.Bot.Builder.AI.QnAMicrosoft.Bot.Builder.AI.QnA

Обновление файла appsettings.json вручнуюManually update your appsettings.json file

После создания всех приложений службы вам нужно добавить сведения о них в файл appsettings.json.Once all of your service apps are created, the information for each needs to be added into your 'appsettings.json' file. Исходный пример кода C# содержит пустой файл appsettings.json:The initial C# Sample code contains an empty appsettings.json file:

appsettings.jsonappsettings.json

 "MicrosoftAppId": "",
 "MicrosoftAppPassword": "",

 "QnAKnowledgebaseId": "",
 "QnAEndpointKey": "",
 "QnAEndpointHostName": "",

 "LuisAppId": "",
 "LuisAPIKey": "",
 "LuisAPIHostName": "",

Для каждой сущности ниже добавьте значения, которые вы записали ранее при выполнении этих инструкций:For each of the entities shown below, add the values you recorded earlier in these instructions:

appsettings.jsonappsettings.json

"MicrosoftAppId": "",
"MicrosoftAppPassword": "",

"QnAKnowledgebaseId": "<knowledge-base-id>",
"QnAEndpointKey": "<qna-maker-resource-key>",
"QnAEndpointHostName": "<your-hostname>",

"LuisAppId": "<app-id-for-dispatch-app>",
"LuisAPIKey": "<your-luis-endpoint-key>",
"LuisAPIHostName": "<your-dispatch-app-region>",

Когда все изменения будут внесены, сохраните файл.When all changes are complete, save this file.

Подключение к службам из ботаConnect to the services from your bot

Чтобы подключиться к службам диспетчеризации, LUIS и QnA Maker, бот получает сведения из файла параметров.To connect to the Dispatch, LUIS, and QnA Maker services, your bot pulls information from the settings file.

В файле BotServices.cs сведения из файла конфигурации appsettings.json используются для подключения бота отправки к службам Dispatch и SampleQnA.In BotServices.cs, the information contained within configuration file appsettings.json is used to connect your dispatch bot to the Dispatch and SampleQnA services. Конструкторы используют предоставленные значения для подключения к этим службам.The constructors use the values you provided to connect to these services.

BotServices.csBotServices.cs

public class BotServices : IBotServices
{
    public BotServices(IConfiguration configuration)
    {
        // Read the setting for cognitive services (LUIS, QnA) from the appsettings.json
        // If includeApiResults is set to true, the full response from the LUIS api (LuisResult)
        // will be made available in the properties collection of the RecognizerResult

        var luisApplication = new LuisApplication(
            configuration["LuisAppId"],
            configuration["LuisAPIKey"],
           $"https://{configuration["LuisAPIHostName"]}.api.cognitive.microsoft.com");

        // Set the recognizer options depending on which endpoint version you want to use.
        // More details can be found in https://docs.microsoft.com/en-gb/azure/cognitive-services/luis/luis-migration-api-v3
        var recognizerOptions = new LuisRecognizerOptionsV2(luisApplication)
        {
            IncludeAPIResults = true,
            PredictionOptions = new LuisPredictionOptions()
            {
                IncludeAllIntents = true,
                IncludeInstanceData = true
            }
        };

        Dispatch = new LuisRecognizer(recognizerOptions);

        SampleQnA = new QnAMaker(new QnAMakerEndpoint
        {
            KnowledgeBaseId = configuration["QnAKnowledgebaseId"],
            EndpointKey = configuration["QnAEndpointKey"],
            Host = configuration["QnAEndpointHostName"]
        });
    }

    public LuisRecognizer Dispatch { get; private set; }
    public QnAMaker SampleQnA { get; private set; }
}

Примечание

По умолчанию параметру includeApiResults присваивается значение false, означающее, что распознаватель будет возвращать только основные сведения о сущностях и намерениях.By default the includeApiResults parameter is set to false, meaning the recognizer will only return basic information about entities / intents. Если требуется полный ответ от LUIS (например, ConnectedServiceResult, см. далее в этом руководстве), установите для этого параметра значение true.If you require the full response from LUIS (such as the ConnectedServiceResult used later in this tutorial), then set this parameter to true. После этого будет добавлен полный ответ от службы LUIS в коллекцию свойств для RecognizerResult.This will then add the full response from the LUIS service into the Properties collection on the RecognizerResult.

Вызов служб из ботаCall the services from your bot

Логика бота проверяет каждый блок вводимых пользователем данных с использованием объединенной модели отправки, находит первые возвращаемые намерения и использует эти сведения, чтобы вызвать соответствующую службу для входных данных.For each input from your user, the bot logic checks user input against the combined Dispatch model, finds the top returned intent, and uses that information to call the appropriate service for the input.

В файле DispatchBot.cs при вызове метода OnMessageActivityAsync мы проверяем входящее сообщение пользователя с использованием модели отправки.In the DispatchBot.cs file whenever the OnMessageActivityAsync method is called, we check the incoming user message against the Dispatch model. Затем мы передаем topIntent и recognizerResult модели отправки в соответствующий метод, чтобы вызвать службу и получить результат.We then pass the Dispatch Model's topIntent and recognizerResult on to the correct method to call the service and return the result.

bots\DispatchBot.csbots\DispatchBot.cs

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    // First, we use the dispatch model to determine which cognitive service (LUIS or QnA) to use.
    var recognizerResult = await _botServices.Dispatch.RecognizeAsync(turnContext, cancellationToken);
    
    // Top intent tell us which cognitive service to use.
    var topIntent = recognizerResult.GetTopScoringIntent();
    
    // Next, we call the dispatcher with the top intent.
    await DispatchToTopIntentAsync(turnContext, topIntent.intent, recognizerResult, cancellationToken);
}

Использование результатов распознаванияWork with the recognition results

Когда модель возвращает результат, он позволяет понять, какие службы лучше всего подходят для обработки этого высказывания.When the model produces a result, it indicates which service can most appropriately process the utterance. Код нашего бота направляет запрос в соответствующую службу и обрабатывает полученный от нее ответ.The code in this bot routes the request to the corresponding service, and then summarizes the response from the called service. Код использует намерение, которое возвращает средство Dispatch, чтобы выполнить перенаправление в соответствующую модель LUIS или службу QnA.Depending on the intent returned from Dispatch, this code uses the returned intent to route to the correct LUIS model or QnA service.

bots\DispatchBot.csbots\DispatchBot.cs

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":
            await ProcessSampleQnAAsync(turnContext, cancellationToken);
            break;
        default:
            _logger.LogInformation($"Dispatch unrecognized intent: {intent}.");
            await turnContext.SendActivityAsync(MessageFactory.Text($"Dispatch unrecognized intent: {intent}."), cancellationToken);
            break;
    }
}

Вызываемые методы ProcessHomeAutomationAsync или ProcessWeatherAsync передают результаты из модели отправки с использованием luisResult.ConnectedServiceResult.If method ProcessHomeAutomationAsync or ProcessWeatherAsync are invoked, they are passed the results from the dispatch model within luisResult.ConnectedServiceResult. Затем указанный метод предоставляет отзыв пользователя, отображая первое намерение модели отправки, а также ранжированный список всех намерений и сущностей, которые были обнаружены.The specified method then provides user feedback showing the dispatch model top intent, plus a ranked listing of all intents and entities that were detected.

Вызываемый метод q_sample-qna использует введенные пользователем данные, содержащиеся в turnContext, для создания ответа из базы знаний и отображения результата пользователю.If method q_sample-qna is invoked, it uses the user input contained within the turnContext to generate an answer from the knowledge base and display that result to the user.

Примечание

Если используется рабочее приложение, выбранные методы LUIS подключаются к соответствующей службе, передают введенные пользователем данные и обрабатывают возвращаемые LUIS данные о намерениях и сущностях.If this were a production application, this is where the selected LUIS methods would connect to their specified service, pass in the user input, and process the returned LUIS intent and entity data.

Тестирование ботаTest your bot

  1. В среде разработки откройте файл с пустым кодом.Using your development environment, start the sample code. Запишите адрес localhost из адресной строки окна браузера, открытого приложением: https://localhost:<Port_Number>.Note the localhost address shown in the address bar of the browser window opened by your App: "https://localhost:<Port_Number>".

  2. Откройте эмулятор Bot Framework, а затем выберите Create a new bot configuration .Open Bot Framework Emulator, then select Create a new bot configuration. .botФайл позволяет использовать инспектор в эмуляторе для просмотра JSON, возвращаемого из Luis и QnA Maker.A .bot file enables you to use the Inspector in the Emulator to see the JSON returned from LUIS and QnA Maker.

  3. В диалоговом окне New bot configuration (Новая конфигурация бота) введите имя своего бота и URL-адрес конечной точки, например http://localhost:3978/api/messages.In the New bot configuration dialog box, enter your bot name, and your endpoint URL, such as http://localhost:3978/api/messages. Сохраните файл в корневой папке своего проекта примера кода бота.Save the file at the root of your bot sample code project.

  4. Откройте файл бота и добавьте разделы для приложений LUIS и QnA Maker.Open the bot file and add sections for your LUIS and QnA Maker apps. Используйте этот пример файла в качестве шаблона для настроек.Use this example file as a template for settings. Сохраните изменения.Save the changes.

  5. Выберите имя бота в списке My Bots (Мои боты), чтобы получить доступ к запущенному боту.Select the bot name in the My Bots list to access your running bot. Ниже для справки приведены некоторые вопросы и команды, поддерживаемые в используемых для бота службах.For your reference, here are some of the questions and commands that are covered by the services built for your bot:

    • QnA MakerQnA Maker
      • hi, good morninghi, good morning
      • what are you, what do you dowhat are you, what do you do
    • LUIS (автоматизация дома)LUIS (home automation)
      • turn on bedroom light
      • turn off bedroom light
      • make some coffee
    • LUIS (погода)LUIS (weather)
      • whats the weather in redmond washington
      • what's the forecast for london
      • show me the forecast for nebraska

Отправка пользовательских речевых фрагментов в QnA MakerDispatch for user utterance to QnA Maker

  1. В эмуляторе Bot введите текст hi и отправьте utterance.In the bot Emulator, enter the text hi and submit the utterance. Бот отправляет этот запрос в приложение LUIS для отправки и возвращает ответ, указывающий дочернее приложение, которое должно получить этот речевой фрагмент для дальнейшей обработки.The bot submits this query to the dispatch LUIS app and gets back a response indicating which child app should get this utterance for further processing.

  2. Выбрав LUIS Trace строку в журнале, можно увидеть ответ Luis в эмуляторе Bot.By selecting the LUIS Trace line in the log, you can see the LUIS response in the bot Emulator . Результат LUIS, полученный от приложения LUIS для отправки отображается в инспекторе.The LUIS result from the dispatch LUIS app displays in the Inspector.

    {
      "luisResponse": {
        "entities": [],
        "intents": [
          {
            "intent": "q_sample-qna",
            "score": 0.9489713
          },
          {
            "intent": "l_HomeAutomation",
            "score": 0.0612499453
          },
          {
            "intent": "None",
            "score": 0.008567564
          },
          {
            "intent": "l_Weather",
            "score": 0.0025761195
          }
        ],
        "query": "Hi",
        "topScoringIntent": {
          "intent": "q_sample-qna",
          "score": 0.9489713
        }
      }
    }
    

    Так как речевой фрагмент hi является частью намерения q_sample-qna приложения LUIS для отправки и выбрано в качестве topScoringIntent, бот выполнит второй запрос с тем же речевым фрагментом, на этот раз к приложению QnA Maker.Because the utterance, hi, is part of the dispatch LUIS app's q_sample-qna intent, and is selected as the topScoringIntent, the bot will make a second request, this time to the QnA Maker app, with the same utterance.

  3. Выберите QnAMaker Trace строку в журнале эмулятора Bot.Select the QnAMaker Trace line in the bot Emulator log. Результат QnA Maker отображается в инспекторе.The QnA Maker result displays in the Inspector.

{
    "questions": [
        "hi",
        "greetings",
        "good morning",
        "good evening"
    ],
    "answer": "Hello!",
    "score": 1,
    "id": 96,
    "source": "QnAMaker.tsv",
    "metadata": [],
    "context": {
        "isContextOnly": false,
        "prompts": []
    }
}

Удаление неверного основного намерения из средства DispatchResolving incorrect top intent from Dispatch

Когда бот будет запущен, вы можете повысить его речевые фрагменты, удаляя похожие или перекрывающиеся высказывания в приложениях для отправки.Once your bot is running, it is possible to improve the bot's performance by removing similar or overlapping utterances between the dispatched apps.

Чтобы протестировать и оценить модель подготовки к отправке, можно использовать средство командной строки Dispatch.You can use the Dispatch command-line tool to test and evaluate your dispatch model.

Обновление или создание модели LUISTo update or create a new LUIS model

этот пример основан на предварительно настроенной модели LUIS.This sample is based on a preconfigured LUIS model. Сведения, которые вам потребуются для обновления этой модели или создания новой модели LUIS, вы найдете здесь.Additional information to help you update this model, or create a new LUIS model, can be found here.

После обновления базовых моделей (QnA или LUIS) запустите dispatch refresh, чтобы обновить приложение LUIS для отправки.After updating the underlying models (QnA or LUIS) run dispatch refresh to update your Dispatch LUIS app. По сути dispatch refresh отличается от dispatch create только тем, что не создает новый идентификатор приложения LUIS.dispatch refresh is basically the same command as dispatch create except no new LUIS app ID is created.

Обратите внимание, что добавленные непосредственно в LUIS речевые фрагменты не будут сохранены при выполнении dispatch refresh.Note that utterances that were added directly in LUIS will not be retained when running dispatch refresh. Чтобы сохранить эти дополнительные речевые фрагменты в приложении отправки, добавьте их в текстовый файл (по одному фрагменту в строке), а затем добавьте этот файл в приложение с помощью следующей команды:To keep those extra utterances in the Dispatch app add those utterances in a text file (one utterance per line), and then add the file to Dispatch by running the command:

dispatch add -t file -f <file path> --intentName <target intent name, ie l_General>

Когда вы добавите файл с дополнительными речевыми фрагментами в приложение отправки, фрагменты будут сохраняться нетронутыми после каждого обновления.Once the file with extra utterances is added to Dispatch the utterances will stay with every refresh.

Удаление ресурсовTo delete resources

С помощью этого примера создается ряд приложений и ресурсов, которые можно удалить с помощью описанных ниже действий. Следите при этом за тем, чтобы не удалить ресурсы, от которых зависят другие приложения или службы.This sample creates a number of applications and resources that you can delete using the steps listed below, but you should not delete resources that any other apps or services rely on.

Чтобы удалить ресурсы LUIS, сделайте следующее:To delete LUIS resources:

  1. Войдите на портал luis.ai.Sign in to the luis.ai portal.
  2. Перейдите к странице My Apps (Мои приложения).Go to the My Apps page.
  3. Выберите приложения, созданные этим примером.Select the apps created by this sample.
    • Home Automation
    • Weather
    • NLP-With-Dispatch-BotDispatch
  4. Щелкните Delete (Удалить), а затем ОК для подтверждения.Click Delete, and click Ok to confirm.

Чтобы удалить ресурсы QnA Maker, сделайте следующее:To delete QnA Maker resources:

  1. Войдите на портал qnamaker.ai.Sign in to the qnamaker.ai portal.
  2. Перейдите к странице Мои базы знаний.Go to the My knowledge bases page.
  3. Нажмите кнопку "Удалить" для базы знаний Sample QnA, затем щелкните Удалить для подтверждения.Click the delete button for the Sample QnA knowledge base, and click Delete to confirm.

РекомендацииBest practice

Чтобы улучшить описанные здесь службы, изучите рекомендации по LUIS и QnA Maker.To improve services used in this sample, refer to best practice for LUIS, and QnA Maker.