Usar vários modelos de LUIS e QnA com o Orchestrator
APLICA-SE A: SDK v4
Observação
O QnA Maker da IA do Azure será desativada em 31 de março de 2025. A partir de 1° de outubro de 2022, não será mais possível criar recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente da funcionalidade de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.
Respostas às perguntas personalizadas, um recurso de Linguagem de IA do Azure, é a versão atualizada do serviço QnA Maker. Para obter mais informações sobre o suporte a perguntas e respostas no SDK do Bot Framework, confira reconhecimento de linguagem natural.
Observação
O reconhecimento de linguagem (LUIS) será desativado em 1º de outubro de 2025. A partir de 1º de abril de 2023, você não poderá criar recursos do LUIS. Uma versão mais recente do reconhecimento de linguagem já está disponível como parte da Linguagem de IA do Azure.
A compreensão da linguagem coloquial (CLU), um recurso da Linguagem de IA do Azure, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte ao reconhecimento de linguagem no SDK do Bot Framework, confira Reconhecimento de linguagem natural.
Se um bot usar vários modelos de LUIS (Reconhecimento vocal) e bases de dados de conhecimento do QnA Maker, você poderá usar o Bot Framework Orchestrator para determinar qual modelo do LUIS ou a base de dados de conhecimento do QnA Maker corresponde melhor à entrada do usuário. Você pode usar o bf orchestrator
comando CLI para criar um arquivo de instantâneo do Orchestrator e, em seguida, usar o arquivo de instantâneo para rotear a entrada do usuário para o modelo correto em tempo de execução.
Este artigo descreve como usar uma base de dados de conhecimento existente do QnA Maker com o Orchestrator.
- Para novos bots, considere usar os recursos de fluxo de trabalho de resposta a perguntas e orquestração da Linguagem de IA do Azure.
- Para obter mais informações sobre o Orchestrator, consulte Reconhecimento de intenção com o Orchestrator no Composer.
- Para obter mais informações sobre o
bf orchestrator
comando, consulte o README da CLI do Bot Framework.
Pré-requisitos
- Uma conta luis.ai para criar aplicativos LUIS.
- Uma conta do QnA Maker e uma base de informações existente do QnA Maker.
- Uma cópia do exemplo de NLP com Orchestrator em C# (arquivado) ou JavaScript (arquivado).
- Conhecimento de noções básicas de bot, LUIS e QnA Maker.
- Instale a CLI BF da linha de comandos.
Sobre este exemplo
Este exemplo se baseia em um conjunto predefinido de projetos do LUIS e do QnA Maker. No entanto, para usar o QnA Maker em seu bot, você precisa de uma base de dados de conhecimento existente no portal do QnA Maker . Em seguida, o bot pode usar a base de informações para responder às perguntas do usuário.
Para o desenvolvimento de novos bots, considere usar o Copilot Studio. Caso você precise criar uma nova base de informações para um bot do SDK do Bot Framework, confira os seguintes artigos dos Serviços de IA do Azure:
- O que é o recurso de respostas às perguntas?
- Criar um bot de perguntas frequentes
- Biblioteca de clientes de respostas às perguntas dos Serviços de Linguagem Cognitiva do Azure para .NET
OnMessageActivityAsync
é chamado em cada entrada de usuário recebida. Esse módulo localiza a intenção do usuário com a maior pontuação e transmite o resultado a DispatchToTopIntentAsync
. DispatchToTopIntentAsync, por sua vez, chama o manipulador de aplicativo apropriado.
ProcessSampleQnAAsync
- para perguntas frequentes sobre bots.ProcessWeatherAsync
: para consultas de previsão do tempo.ProcessHomeAutomationAsync
: para comandos de iluminação doméstica.
O manipulador chama o serviço LUIS ou QnA Maker e retorna o resultado gerado para o usuário.
Criar aplicativos LUIS
Antes de criar um arquivo de instantâneo do Orchestrator, você precisa de aplicativos LUIS e bases de dados de conhecimento QnA criados e publicados. O bot de exemplo referenciado neste artigo usa os seguintes modelos, incluídos no exemplo de NLP com Orchestrator \CognitiveModels
na pasta:
Nome | Descrição |
---|---|
HomeAutomation | Um aplicativo LUIS que reconhece uma intenção de automação residencial com dados de entidade associados. |
Clima | Um aplicativo LUIS que reconhece intenções relacionadas ao clima com os dados de localização. |
QnAMaker | Uma base de dados de conhecimento do QnA Maker que fornece respostas a perguntas simples sobre o bot. |
Crie o LUIS aplicativos
Crie aplicativos LUIS dos arquivos .lu HomeAutomation e Weather no diretório de modelos cognitivos do exemplo.
Execute o comando a seguir para importar, treinar e publicar o aplicativo no ambiente de produção.
bf luis:build --in CognitiveModels --authoringKey <YOUR-KEY> --botName <YOUR-BOT-NAME>
Registre as IDs do aplicativo, os nomes de exibição, a chave de criação e o local.
Para obter mais informações, consulte como criar um aplicativo LUIS no portal do LUIS e Obter valores para se conectar ao seu aplicativo LUIS em Adicionar reconhecimento vocal natural ao bot e a documentação do LUIS sobre como treinar e publicar um aplicativo no ambiente de produção.
Obtenha os valores para conectar seu bot à base de conhecimento
Observação
O QnA Maker da IA do Azure será desativada em 31 de março de 2025. A partir de 1° de outubro de 2022, não será mais possível criar recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente da funcionalidade de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.
Respostas às perguntas personalizadas, um recurso de Linguagem de IA do Azure, é a versão atualizada do serviço QnA Maker. Para obter mais informações sobre o suporte a perguntas e respostas no SDK do Bot Framework, confira reconhecimento de linguagem natural.
Você precisa de uma base de dados de conhecimento existente e do nome do host e da chave de ponto de extremidade do QnA Maker.
Dica
A documentação do QnA Maker contém instruções sobre como criar, treinar e publicar sua base de informações.
Criar o arquivo de instantâneo do Orchestrator
A interface CLI da ferramenta Orchestrator cria o arquivo de instantâneo do Orchestrator para roteamento para o aplicativo LUIS ou QnA Maker correto em tempo de execução.
Instalar a versão mais recente com suporte do pacote redistribuível do Visual C++
Abra um prompt de comando ou janela de terminal e altere os diretórios para o diretório de exemplo
Verifique se você tem a versão atual do npm e a CLI do Bot Framework.
npm i -g npm npm i -g @microsoft/botframework-cli
Baixar o arquivo do modelo básico do Orchestrator
mkdir model bf orchestrator:basemodel:get --out ./model
Criar o arquivo de instantâneo do Orchestrator
mkdir generated bf orchestrator:create --hierarchical --in ./CognitiveModels --out ./generated --model ./model
Instalar pacotes
Antes de executar esse aplicativo pela primeira vez, verifique se vários pacotes NuGet estão instalados:
- Microsoft.Bot.Builder
- Microsoft.Bot.Builder.AI.Luis
- Microsoft.Bot.Builder.AI.QnA
- Microsoft.Bot.Builder.AI.Orchestrator
Atualizar manualmente o arquivo appsettings.json
Depois que todos os aplicativos de serviço forem criados, as informações para cada um precisarão ser adicionadas ao arquivo “appsettings.json”. O exemplo inicial do código C# (arquivado) contém um arquivo appsettings.json vazio:
appsettings.json
Para cada uma das entidades mostradas abaixo, adicione os valores que você registrou anteriormente nas instruções:
"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>",
Quando todas as alterações tiverem sido concluídas, salve esse arquivo.
Conectar-se aos serviços do seu bot
Para se conectar aos serviços do LUIS e do QnA Maker, o bot extrai informações do arquivo de configurações.
No BotServices.cs, as informações contidas no arquivo de configuração appsettings.json são usadas para conectar o bot do Orchestrator aos serviços e Weather
SampleQnA
.HomeAutomation
Os construtores usam os valores fornecidos para se conectarem a esses serviços.
BotServices.cs
Chamar os serviços do seu bot
Para cada entrada do usuário, a lógica do bot passa a entrada do usuário para o Orchestrator Recognizer, localiza a intenção retornada principal e usa essas informações para chamar o serviço apropriado para a entrada.
No arquivo DispatchBot.cs, sempre que o OnMessageActivityAsync
método é chamado, verificamos a mensagem do usuário de entrada e obtemos a intenção principal do Orchestrator Recognizer. Em seguida, passamos o topIntent
e recognizerResult
para o método correto para chamar o serviço e retornar o resultado.
bots\DispatchBot.cs
Trabalhar com os resultados de reconhecimento
Quando o reconhecedor do Orchestrator produz um resultado, ele indica qual serviço pode processar o enunciado de forma mais adequada. O código neste bot encaminha a solicitação para o serviço correspondente e, então, resume a resposta do serviço chamado. Dependendo da intenção retornada do Orchestrator, esse código usa a intenção retornada para rotear para o modelo correto do LUIS ou serviço de QnA.
bots\DispatchBot.cs
Os ProcessHomeAutomationAsync
métodos and ProcessWeatherAsync
usam a entrada do usuário contida no contexto de turno para obter a intenção e as entidades principais do modelo LUIS correto.
O ProcessSampleQnAAsync
método usa a entrada do usuário contida no contexto de turno para gerar uma resposta da base de dados de conhecimento e exibir esse resultado para o usuário.
Observação
Se fosse um aplicativo de produção, aqui é onde os métodos LUIS selecionados se conectariam ao serviço especificado, transmitiriam a entrada do usuário e processariam a intenção do LUIS e os dados de entidade retornados.
Testar seu bot
Usando o ambiente de desenvolvimento, inicie o código de exemplo. Observe o endereço do host local mostrado na barra de endereços da janela do navegador aberta pelo seu aplicativo:
https://localhost:<Port_Number>
.Abra o Bot Framework Emulator, clique no botão Abrir Bot .
Na caixa de diálogo Abrir um bot, insira a URL do ponto de extremidade do bot, como
http://localhost:3978/api/messages
. Clique em Conectar.Para sua referência, aqui estão algumas das perguntas e dos comandos cobertos pelos serviços criados para o bot:
- QnA Maker
hi
,good morning
what are you
,what do you do
- LUIS (automação residencial)
turn on bedroom light
turn off bedroom light
make some coffee
- LUIS (tempo)
whats the weather in redmond washington
what's the forecast for london
show me the forecast for nebraska
- QnA Maker
Encaminhar o enunciado do usuário para o QnA Maker
No Emulador, insira o texto
hi
e envie o enunciado. O bot envia essa consulta ao Orchestrator e recebe uma resposta indicando qual aplicativo filho deve obter esse enunciado para processamento adicional.Ao selecionar a
Orchestrator Recognition Trace
linha no log, você pode ver a resposta JSON no emulador. O resultado do Orchestrator é apresentado no Inspetor.{ "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" }
Como o enunciado,
hi
, faz parte da intenção do QnAMaker do Orchestrator e é selecionado como otopScoringIntent
, o bot fará uma segunda solicitação, desta vez para o aplicativo QnA Maker, com o mesmo enunciado.Selecione a
QnAMaker Trace
linha no log do emulador. O resultado do QnA Maker é exibido no Inspetor.{ "questions": [ "hi", "greetings", "good morning", "good evening" ], "answer": "Hello!", "score": 1, "id": 96, "source": "QnAMaker.tsv", "metadata": [], "context": { "isContextOnly": false, "prompts": [] } }
[Python (arquivado)]: (https://github.com/microsoft/BotBuilder-Samples/tree/main/archive/samples/python/14.nlp-with-orchestrator