Использование нескольких моделей LUIS и QnA с Orchestrator
ПРИМЕНИМО К: Пакет SDK версии 4
Примечание
Поддержка Azure AI QnA Maker будет прекращена 31 марта 2025 г. Начиная с 1 октября 2022 г. вы не сможете создавать новые ресурсы или базы знаний QnA Maker. Новая версия возможности вопросов и ответов теперь доступна в составе языка ИИ Azure.
Настраиваемые ответы на вопросы , функция языка ИИ Azure, — это обновленная версия службы QnA Maker. Дополнительные сведения о поддержке вопросов и ответов в пакете SDK Bot Framework см. в разделе Распознавание естественной речи.
Примечание
Распознавание речи (LUIS) будет прекращена 1 октября 2025 г. Начиная с 1 апреля 2023 г. вы не сможете создавать новые ресурсы LUIS. В составе языка ИИ Azure теперь доступна новая версия распознавания речи.
Распознавание устной речи (CLU), функция языка ИИ Azure, — это обновленная версия LUIS. Дополнительные сведения о поддержке распознавания речи в пакете SDK Bot Framework см. в разделе Распознавание естественной речи.
Если бот использует несколько моделей Распознавание речи (LUIS) и базы знаний QnA Maker, вы можете использовать Bot Framework Orchestrator, чтобы определить, какая модель LUIS или QnA Maker база знаний лучше всего соответствует входным данным пользователя. Вы можете использовать bf orchestrator
команду CLI, чтобы создать файл Orchestrator snapshot, а затем использовать файл snapshot для маршрутизации пользовательских входных данных в правильную модель во время выполнения.
В этой статье описывается использование существующего база знаний QnA Maker с Orchestrator.
- Для новых ботов рассмотрите возможность использования функций рабочих процессов ответов на вопросы и оркестрации языка ИИ Azure.
- Дополнительные сведения о Orchestrator см. в разделе Распознавание намерений с помощью Orchestrator в Composer.
- Дополнительные сведения о команде
bf orchestrator
см. в файле сведений интерфейса командной строки Bot Framework.
Предварительные требования
- Учетная запись luis.ai для создания приложений LUIS.
- Учетная запись QnA Maker и существующая база знаний QnA Maker.
- Копия примера NLP с Orchestrator на C# (архивированное) или JavaScript (архивированное).
- Базовые знания о ботах, LUIS и QnA Maker.
- Установите интерфейс командной строки BF CLI.
Об этом примере
Этот пример основан на предопределенном наборе проектов LUIS и QnA Maker. Однако для использования QnA Maker в боте вам потребуется существующая база знаний на портале QnA Maker. После этого бот сможет использовать базу знаний, чтобы отвечать на вопросы пользователя.
Для разработки новых ботов рекомендуется использовать Power Virtual Agents. Если вам нужно создать новую база знаний для бота пакета SDK Bot Framework, ознакомьтесь со следующими статьями о службах ИИ Azure:
- Что такое ответы на вопросы?
- Создание бота с вопросами и ответами
- Клиентская библиотека ответов на вопросы в Cognitive Language Services для .NET
OnMessageActivityAsync
вызывается для каждого полученного блока данных, введенных пользователем. Этот модуль обнаруживает намерения пользователя с наивысшими оценками и передает результат в DispatchToTopIntentAsync
. DispatchToTopIntentAsync, в свою очередь, вызывает соответствующий обработчик приложения.
ProcessSampleQnAAsync
— для вопросов с часто задаваемыми вопросами о ботах.ProcessWeatherAsync
—для запросов о погоде.ProcessHomeAutomationAsync
— для команд домашнего освещения.
Обработчик вызывает службу LUIS или QnA Maker и возвращает полученный результат пользователю.
Создание приложений LUIS
Перед созданием файла Orchestrator snapshot необходимо создать и опубликовать приложения LUIS и базы знаний QnA. Пример бота, упоминаемого в этой статье, использует следующие модели, включенные в пример NLP With Orchestrator в папке \CognitiveModels
:
Имя | Описание |
---|---|
HomeAutomation | Приложение LUIS распознает намерение обращения к службе автоматизации и данные о сущностях. |
Weather | Приложение LUIS распознает намерения, связанные с погодой и данными о расположении. |
QnA Maker | База данных QnA Maker предоставляет ответы на несколько простых вопросов о боте. |
Создание приложений LUIS
Создайте приложения LUIS из LU-файлов HomeAutomation и Weather в каталоге cognitive models примера.
Выполните следующую команду, чтобы импортировать, обучить и опубликовать приложение в рабочей среде.
bf luis:build --in CognitiveModels --authoringKey <YOUR-KEY> --botName <YOUR-BOT-NAME>
Запишите идентификаторы приложений, отображаемые имена, ключ разработки и расположение.
Дополнительные сведения см. в статьях Создание приложения LUIS на портале LUIS и Получение значений для подключения к приложению LUIS в статье Добавление распознавания естественного языка в бот , а также в документации LUIS по обучению и публикации приложения в рабочей среде.
Получение значений для подключения бота к базе знаний
Примечание
Поддержка Azure AI QnA Maker будет прекращена 31 марта 2025 г. Начиная с 1 октября 2022 г. вы не сможете создавать новые ресурсы или базы знаний QnA Maker. Новая версия возможности вопросов и ответов теперь доступна в составе языка ИИ Azure.
Настраиваемые ответы на вопросы , функция языка ИИ Azure, — это обновленная версия службы QnA Maker. Дополнительные сведения о поддержке вопросов и ответов в пакете SDK Bot Framework см. в разделе Распознавание естественной речи.
Вам потребуется существующая база знаний, а также имя узла И ключ конечной точки QnA Maker.
Совет
В документации по QnA Maker содержатся инструкции по созданию, обучению и публикации база знаний.
Создание файла snapshot Orchestrator
Интерфейс CLI для средства Orchestrator создает файл snapshot Orchestrator для маршрутизации в правильное приложение LUIS или QnA Maker во время выполнения.
Установка последней поддерживаемой версии пакета Распространяемый компонент Visual C++
Откройте командную строку или окно терминала и измените каталоги на пример каталога.
Убедитесь, что у вас установлена текущая версия npm и интерфейс командной строки Bot Framework.
npm i -g npm npm i -g @microsoft/botframework-cli
Скачивание файла базовой модели Orchestrator
mkdir model bf orchestrator:basemodel:get --out ./model
Создание файла snapshot Orchestrator
mkdir generated bf orchestrator:create --hierarchical --in ./CognitiveModels --out ./generated --model ./model
Установка пакетов
Перед первым запуском приложения убедитесь, что установлены следующие пакеты NuGet:
- Microsoft.Bot.Builder
- Microsoft.Bot.Builder.AI.Luis
- Microsoft.Bot.Builder.AI.QnA
- Microsoft.Bot.Builder.AI.Orchestrator
Обновление файла appsettings.json вручную
После создания всех приложений службы вам нужно добавить сведения о них в файл appsettings.json. Исходный пример кода C# (архивный) содержит пустой файл appsettings.json:
appsettings.json
Для каждой сущности ниже добавьте значения, которые вы записали ранее при выполнении этих инструкций:
"QnAKnowledgebaseId": "<knowledge-base-id>",
"QnAEndpointKey": "<qna-maker-resource-key>",
"QnAEndpointHostName": "<your-hostname>",
"LuisHomeAutomationAppId": "<app-id-for-home-automation-app>",
"LuisWeatherAppId": "<app-id-for-weather-app>",
"LuisAPIKey": "<your-luis-endpoint-key>",
"LuisAPIHostName": "<your-dispatch-app-region>",
Когда все изменения будут внесены, сохраните файл.
Подключение к службам из бота
Чтобы подключиться к службам LUIS и QnA Maker, бот извлекает сведения из файла параметров.
В BotServices.cs сведения, содержащиеся в файле конфигурации appsettings.json , используются для подключения бота Orchestrator к службам HomeAutomation
, Weather
и SampleQnA
. Конструкторы используют предоставленные значения для подключения к этим службам.
BotServices.cs
Вызов служб из бота
Для каждого ввода от пользователя логика бота передает пользовательский ввод в Распознаватель Orchestrator, находит первое возвращенное намерение и использует эти сведения для вызова соответствующей службы для ввода.
В файле DispatchBot.cs при каждом OnMessageActivityAsync
вызове метода мы проверка входящее сообщение пользователя и получаем основное намерение от Распознавателя Orchestrator. Затем мы передаем topIntent
и в recognizerResult
правильный метод, чтобы вызвать службу и вернуть результат.
bots\DispatchBot.cs
Использование результатов распознавания
Когда распознаватель Orchestrator выдает результат, он указывает, какая служба может наиболее правильно обработать речевой фрагмент. Код нашего бота направляет запрос в соответствующую службу и обрабатывает полученный от нее ответ. В зависимости от намерения , возвращенного из Orchestrator, этот код использует возвращенное намерение для маршрутизации в правильную модель LUIS или службу QnA.
bots\DispatchBot.cs
Методы ProcessHomeAutomationAsync
и ProcessWeatherAsync
используют входные данные пользователя, содержащиеся в контексте шага, для получения основных намерений и сущностей из правильной модели LUIS.
Метод ProcessSampleQnAAsync
использует входные данные пользователя, содержащиеся в контексте шага, для создания ответа на основе база знаний и отображения этого результата пользователю.
Примечание
Если используется рабочее приложение, выбранные методы LUIS подключаются к соответствующей службе, передают введенные пользователем данные и обрабатывают возвращаемые LUIS данные о намерениях и сущностях.
Тестирование бота
В среде разработки откройте файл с пустым кодом. Запишите адрес localhost , отображаемый в адресной строке окна браузера, открытого приложением:
https://localhost:<Port_Number>
.Откройте Bot Framework Emulator, нажмите кнопку Открыть бот.
В диалоговом окне Открытие бота введите URL-адрес конечной точки бота, например
http://localhost:3978/api/messages
. Нажмите кнопку Соединить.Ниже для справки приведены некоторые вопросы и команды, поддерживаемые в используемых для бота службах.
- QnA Maker
hi
,good morning
what are you
,what do you do
- LUIS (автоматизация дома)
turn on bedroom light
turn off bedroom light
make some coffee
- LUIS (погода)
whats the weather in redmond washington
what's the forecast for london
show me the forecast for nebraska
- QnA Maker
Маршрутизация высказывания пользователя в QnA Maker
В эмуляторе введите текст
hi
и отправьте речевой фрагмент. Бот отправляет этот запрос в Orchestrator и возвращает ответ, указывающий, какое дочернее приложение должно получить этот речевой фрагмент для дальнейшей обработки.Orchestrator Recognition Trace
Выбрав строку в журнале, вы увидите ответ JSON в эмуляторе. Результат Orchestrator отображается в инспекторе.{ "type": "trace", "timestamp": "2021-05-01T06:26:04.067Z", "serviceUrl": "http://localhost:58895", "channelId": "emulator", "from": { "id": "36b2a460-aa43-11eb-920f-7da472b36492", "name": "Bot", "role": "bot" }, "conversation": { "id": "17ef3f40-aa46-11eb-920f-7da472b36492|livechat" }, "recipient": { "id": "5f8c6123-2596-45df-928c-566d44426556", "role": "user" }, "locale": "en-US", "replyToId": "1a3f70d0-aa46-11eb-8b97-2b2a779de581", "label": "Orchestrator Recognition", "valueType": "OrchestratorRecognizer", "value": { "text": "hi", "alteredText": null, "intents": { "QnAMaker": { "score": 0.9987310956576168 }, "HomeAutomation": { "score": 0.3402091165577196 }, "Weather": { "score": 0.24092200496795158 } }, "entities": {}, "result": [ { "Label": { "Type": 1, "Name": "QnAMaker", "Span": { "Offset": 0, "Length": 2 } }, "Score": 0.9987310956576168, "ClosestText": "hi" }, { "Label": { "Type": 1, "Name": "HomeAutomation", "Span": { "Offset": 0, "Length": 2 } }, "Score": 0.3402091165577196, "ClosestText": "make some coffee" }, { "Label": { "Type": 1, "Name": "Weather", "Span": { "Offset": 0, "Length": 2 } }, "Score": 0.24092200496795158, "ClosestText": "soliciting today's weather" } ] }, "name": "OrchestratorRecognizerResult", "id": "1ae65f30-aa46-11eb-8b97-2b2a779de581", "localTimestamp": "2021-04-30T23:26:04-07:00" }
Так как речевой фрагмент
hi
, является частью намерения Orchestrator QnAMaker и выбран в качествеtopScoringIntent
, бот выполнит второй запрос, на этот раз к приложению QnA Maker, с тем же речевым фрагментом.QnAMaker Trace
Выберите строку в журнале эмулятора. Результат QnA Maker отображается в инспекторе.{ "questions": [ "hi", "greetings", "good morning", "good evening" ], "answer": "Hello!", "score": 1, "id": 96, "source": "QnAMaker.tsv", "metadata": [], "context": { "isContextOnly": false, "prompts": [] } }
[Python (архив)]: (https://github.com/microsoft/BotBuilder-Samples/tree/main/archive/samples/python/14.nlp-with-orchestrator