Używanie wielu modeli luis i QnA z programem Orchestrator
DOTYCZY: ZESTAW SDK w wersji 4
Uwaga
Usługa Azure AI QnA Maker zostanie wycofana 31 marca 2025 r. Od 1 października 2022 r. nie będzie można tworzyć nowych zasobów ani baz wiedzy w programie QnA Maker. Nowsza wersja funkcji pytań i odpowiedzi jest teraz dostępna w ramach języka sztucznej inteligencji platformy Azure.
Niestandardowe odpowiadanie na pytania, funkcja języka azure AI, to zaktualizowana wersja usługi QnA Maker. Aby uzyskać więcej informacji na temat obsługi pytań i odpowiedzi w zestawie SDK platformy Bot Framework, zobacz Opis języka naturalnego.
Uwaga
Usługa Language Understanding (LUIS) zostanie wycofana 1 października 2025 r. Od 1 kwietnia 2023 r. nie będzie można tworzyć nowych zasobów usługi LUIS. Nowsza wersja interpretacji języka jest teraz dostępna w ramach języka sztucznej inteligencji platformy Azure.
Język konwersacyjny (CLU), funkcja języka AI platformy Azure, to zaktualizowana wersja usługi LUIS. Aby uzyskać więcej informacji na temat obsługi języka w zestawie SDK platformy Bot Framework, zobacz Opis języka naturalnego.
Jeśli bot korzysta z wielu modeli usługi Language Understanding (LUIS) i baza wiedzy usługi QnA Maker, możesz użyć programu Bot Framework Orchestrator, aby określić, który model usługi LUIS lub usługa QnA Maker baza wiedzy najlepiej pasuje do danych wejściowych użytkownika. Możesz użyć polecenia interfejsu bf orchestrator
wiersza polecenia, aby utworzyć plik migawki programu Orchestrator, a następnie użyć pliku migawki, aby skierować dane wejściowe użytkownika do odpowiedniego modelu w czasie wykonywania.
W tym artykule opisano sposób używania istniejącej usługi QnA Maker baza wiedzy z programem Orchestrator.
- W przypadku nowych botów rozważ użycie funkcji przepływu pracy odpowiadania na pytania i orkiestracji języka azure AI Language.
- Aby uzyskać więcej informacji na temat programu Orchestrator, zobacz Rozpoznawanie intencji za pomocą programu Orchestrator w programie Composer.
- Aby uzyskać więcej informacji na temat polecenia, zobacz Artykuł README interfejsu
bf orchestrator
wiersza polecenia platformy Bot Framework.
Wymagania wstępne
- Konto luis.ai do tworzenia aplikacji usługi LUIS.
- Konto usługi QnA Maker i istniejąca baza wiedzy usługi QnA Maker.
- Kopia narzędzia NLP z przykładem programu Orchestrator w języku C# (zarchiwizowanym) lub JavaScript (zarchiwizowanym).
- Znajomość podstaw bota, usługi LUIS i usługi QnA Maker.
- Zainstaluj interfejs wiersza polecenia BF.
Informacje o tym przykładzie
Ten przykład jest oparty na wstępnie zdefiniowanym zestawie projektów luis i QnA Maker. Jednak do korzystania z usługi QnA Maker w botze potrzebna jest istniejąca baza wiedzy w portalu usługi QnA Maker. Bot może następnie użyć baza wiedzy, aby odpowiedzieć na pytania użytkownika.
W przypadku tworzenia nowych botów rozważ użycie narzędzia Copilot Studio. Jeśli musisz utworzyć nową baza wiedzy dla bota zestawu BOT Framework SDK, zobacz następujące artykuły dotyczące usług Azure AI:
- Co to jest odpowiadanie na pytania?
- Tworzenie bota z często zadawanymi pytaniami
- Biblioteka klienta odpowiedzi na pytania usług Azure Cognitive Language Services dla platformy .NET
OnMessageActivityAsync
parametr jest wywoływany dla każdego odebranych danych wejściowych użytkownika. W tym module znajduje się intencja użytkownika oceniania i przekazuje ten wynik do elementu DispatchToTopIntentAsync
. Funkcja DispatchToTopIntentAsync wywołuje z kolei odpowiednią procedurę obsługi aplikacji.
ProcessSampleQnAAsync
— pytania dotyczące bota — często zadawane pytania.ProcessWeatherAsync
- dla zapytań pogodowych.ProcessHomeAutomationAsync
- dla poleceń oświetlenia domowego.
Procedura obsługi wywołuje usługę LUIS lub QnA Maker i zwraca wygenerowany wynik z powrotem do użytkownika.
Tworzenie aplikacji usługi LUIS
Przed utworzeniem pliku migawki programu Orchestrator potrzebne są aplikacje usługi LUIS i baza wiedzy usługi LUIS utworzone i opublikowane. Przykładowy bot, do którego odwołuje się ten artykuł, korzysta z następujących modeli dołączonych do przykładu NLP With Orchestrator w folderze \CognitiveModels
:
Nazwa/nazwisko | opis |
---|---|
HomeAutomation | Aplikacja usługi LUIS, która rozpoznaje intencję automatyzacji domu ze skojarzonymi danymi jednostki. |
Pogoda | Aplikacja usługi LUIS, która rozpoznaje intencje związane z pogodą z danymi lokalizacji. |
QnAMaker | Usługa QnA Maker baza wiedzy, która zapewnia odpowiedzi na proste pytania dotyczące bota. |
Tworzenie aplikacji usługi LUIS
Utwórz aplikacje usługi LUIS na podstawie plików HomeAutomation i Weather .lu w katalogu modeli poznawczych przykładu.
Uruchom następujące polecenie, aby zaimportować, wytrenować i opublikować aplikację w środowisku produkcyjnym.
bf luis:build --in CognitiveModels --authoringKey <YOUR-KEY> --botName <YOUR-BOT-NAME>
Rejestruj identyfikatory aplikacji, nazwy wyświetlane, klucz tworzenia i lokalizację.
Aby uzyskać więcej informacji, zobacz jak utworzyć aplikację usługi LUIS w portalu usługi LUIS i uzyskać wartości w celu nawiązania połączenia z aplikacją usługi LUIS w temacie Dodawanie interpretacji języka naturalnego do bota i dokumentacji usługi LUIS na temat trenowania i publikowania aplikacji w środowisku produkcyjnym.
Uzyskiwanie wartości w celu połączenia bota z baza wiedzy
Uwaga
Usługa Azure AI QnA Maker zostanie wycofana 31 marca 2025 r. Od 1 października 2022 r. nie będzie można tworzyć nowych zasobów ani baz wiedzy w programie QnA Maker. Nowsza wersja funkcji pytań i odpowiedzi jest teraz dostępna w ramach języka sztucznej inteligencji platformy Azure.
Niestandardowe odpowiadanie na pytania, funkcja języka azure AI, to zaktualizowana wersja usługi QnA Maker. Aby uzyskać więcej informacji na temat obsługi pytań i odpowiedzi w zestawie SDK platformy Bot Framework, zobacz Opis języka naturalnego.
Potrzebujesz istniejącej baza wiedzy i nazwy hosta usługi QnA Maker oraz klucza punktu końcowego.
Napiwek
Dokumentacja usługi QnA Maker zawiera instrukcje dotyczące tworzenia, trenowania i publikowania baza wiedzy.
Tworzenie pliku migawki programu Orchestrator
Interfejs wiersza polecenia narzędzia Orchestrator tworzy plik migawki programu Orchestrator na potrzeby routingu do poprawnej aplikacji LUIS lub QnA Maker w czasie wykonywania.
Instalowanie najnowszej obsługiwanej wersji pakietu pakiet redystrybucyjny programu Visual C++
Otwórz wiersz polecenia lub okno terminalu i zmień katalogi na przykładowy katalog
Upewnij się, że masz bieżącą wersję narzędzia npm i interfejsu wiersza polecenia platformy Bot Framework.
npm i -g npm npm i -g @microsoft/botframework-cli
Pobieranie pliku modelu podstawowego programu Orchestrator
mkdir model bf orchestrator:basemodel:get --out ./model
Tworzenie pliku migawki programu Orchestrator
mkdir generated bf orchestrator:create --hierarchical --in ./CognitiveModels --out ./generated --model ./model
Instalowanie pakietów
Przed uruchomieniem tej aplikacji po raz pierwszy upewnij się, że zainstalowano kilka pakietów NuGet:
- Microsoft.Bot.Builder
- Microsoft.Bot.Builder.AI.Luis
- Microsoft.Bot.Builder.AI.QnA
- Microsoft.Bot.Builder.AI.Orchestrator
Ręczne aktualizowanie pliku appsettings.json
Po utworzeniu wszystkich aplikacji usługi informacje dla każdego z nich należy dodać do pliku "appsettings.json". Początkowy przykład kodu C# (zarchiwizowany) zawiera pusty plik appsettings.json:
appsettings.json
Dla każdej z poniższych jednostek dodaj wartości zarejestrowane wcześniej w poniższych instrukcjach:
"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>",
Po zakończeniu wszystkich zmian zapisz ten plik.
Nawiązywanie połączenia z usługami z bota
Aby nawiązać połączenie z usługami LUIS i QnA Maker, bot pobiera informacje z pliku ustawień.
W BotServices.cs informacje zawarte w pliku konfiguracji appsettings.json służą do łączenia bota programu Orchestrator z HomeAutomation
Weather
usługami i SampleQnA
. Konstruktory używają podanych wartości w celu nawiązania połączenia z tymi usługami.
BotServices.cs
Wywoływanie usług z bota
Dla każdego danych wejściowych użytkownika logika bota przekazuje dane wejściowe użytkownika do usługi Orchestrator Recognizer, znajduje zwracaną intencję i używa tych informacji do wywołania odpowiedniej usługi dla danych wejściowych.
W pliku DispatchBot.cs za każdym razem, gdy OnMessageActivityAsync
metoda jest wywoływana, sprawdzamy przychodzący komunikat użytkownika i uzyskujemy najwyższą intencję z narzędzia Orchestrator Recognizer. Następnie przekazujemy metodę topIntent
i recognizerResult
na prawidłową metodę, aby wywołać usługę i zwrócić wynik.
boty\DispatchBot.cs
Praca z wynikami rozpoznawania
Gdy aparat rozpoznawania programu Orchestrator generuje wynik, wskazuje, która usługa może najwłaściwsze przetworzyć wypowiedź. Kod w tym botze kieruje żądanie do odpowiedniej usługi, a następnie podsumowuje odpowiedź z wywołanej usługi. W zależności od intencji zwróconej z programu Orchestrator ten kod używa zwróconej intencji do kierowania do poprawnego modelu usługi LUIS lub usługi QnA.
boty\DispatchBot.cs
Metody ProcessHomeAutomationAsync
i ProcessWeatherAsync
używają danych wejściowych użytkownika zawartych w kontekście kolei, aby uzyskać najwyższą intencję i jednostki z prawidłowego modelu usługi LUIS.
Metoda ProcessSampleQnAAsync
używa danych wejściowych użytkownika zawartych w kontekście kolei, aby wygenerować odpowiedź z baza wiedzy i wyświetlić ten wynik użytkownikowi.
Uwaga
Jeśli była to aplikacja produkcyjna, w tym miejscu wybrane metody usługi LUIS będą łączyć się z określoną usługą, przekazywać dane wejściowe użytkownika i przetwarzać zwrócone dane intencji i jednostki usługi LUIS.
Testowanie bota
Korzystając ze środowiska deweloperskiego, uruchom przykładowy kod. Zanotuj adres localhost wyświetlany na pasku adresu okna przeglądarki otwartego przez aplikację:
https://localhost:<Port_Number>
.Otwórz program Bot Framework Emulator, kliknij przycisk Otwórz bota .
W oknie dialogowym Otwieranie bota wprowadź adres URL punktu końcowego bota, taki jak
http://localhost:3978/api/messages
. Kliknij Połącz.Poniżej przedstawiono niektóre pytania i polecenia, które są objęte usługami utworzonymi dla bota:
- QnA Maker
hi
,good morning
what are you
,what do you do
- LUIS (automatyzacja domowa)
turn on bedroom light
turn off bedroom light
make some coffee
- LUIS (pogoda)
whats the weather in redmond washington
what's the forecast for london
show me the forecast for nebraska
- QnA Maker
Kierowanie wypowiedzi użytkownika do usługi QnA Maker
W emulatorze wprowadź tekst
hi
i prześlij wypowiedź. Bot przesyła to zapytanie do programu Orchestrator i otrzymuje odpowiedź wskazującą, która aplikacja podrzędna powinna uzyskać tę wypowiedź w celu dalszego przetwarzania.Wybierając
Orchestrator Recognition Trace
wiersz w dzienniku, możesz zobaczyć odpowiedź JSON w emulatorze. Wynik programu Orchestrator jest wyświetlany w inspektorze.{ "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" }
Ponieważ wypowiedź ,
hi
jest częścią intencji QnAMaker programu Orchestrator i jest wybrana jakotopScoringIntent
, bot wyśle drugie żądanie, tym razem do aplikacji QnA Maker, z tą samą wypowiedzią.QnAMaker Trace
Wybierz wiersz w dzienniku emulatora. Wynik usługi QnA Maker jest wyświetlany w inspektorze.{ "questions": [ "hi", "greetings", "good morning", "good evening" ], "answer": "Hello!", "score": 1, "id": 96, "source": "QnAMaker.tsv", "metadata": [], "context": { "isContextOnly": false, "prompts": [] } }
[Python (zarchiwizowany)]: (https://github.com/microsoft/BotBuilder-Samples/tree/main/archive/samples/python/14.nlp-with-orchestrator