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 usługi QnA Maker ani baz wiedzy. 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 sztucznej inteligencji platformy Azure, 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

Language Understanding (LUIS) zostanie wycofany 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.

Konwersacyjna interpretacja języka (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 używa wielu modeli Language Understanding (LUIS) i baz 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 właściwego modelu w czasie wykonywania.

W tym artykule opisano sposób używania istniejącej usługi QnA Maker baza wiedzy z programem Orchestrator.

Wymagania wstępne

Informacje o tym przykładzie

Ten przykład jest oparty na wstępnie zdefiniowanym zestawie projektów usługi LUIS i usługi QnA Maker. Jednak do korzystania z usługi QnA Maker w bocie 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 agentów usługi Power Virtual Agents. Jeśli musisz utworzyć nowy baza wiedzy dla bota zestawu BOT Framework SDK, zobacz następujące artykuły dotyczące usług Azure AI:

Diagram klas języka C#.

OnMessageActivityAsync parametr jest wywoływany dla każdego odebranych danych wejściowych użytkownika. Ten moduł znajduje intencję użytkownika oceniania najwyższego poziomu i przekazuje ten wynik do elementu DispatchToTopIntentAsync. DispatchToTopIntentAsync z kolei wywołuje 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

Aby można było utworzyć plik migawki programu Orchestrator, potrzebne są aplikacje usługi LUIS i bazy wiedzy pytań i pytań i pytań i oceny jakości. 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 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.

  1. 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>
    
  2. 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 oraz dokumentację usługi LUIS dotyczącą sposobu 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 usługi QnA Maker ani baz wiedzy. 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 sztucznej inteligencji platformy Azure, 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 oraz nazwy hosta usługi QnA Maker i klucza punktu końcowego.

Porada

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 prawidłowej aplikacji LUIS lub QnA Maker w czasie wykonywania.

  1. Zainstaluj najnowszą obsługiwaną wersję pakietu pakiet redystrybucyjny programu Visual C++

  2. Otwórz wiersz polecenia lub okno terminalu i zmień katalogi na przykładowy katalog

  3. 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
    
  4. Pobieranie pliku modelu podstawowego programu Orchestrator

    mkdir model
    bf orchestrator:basemodel:get --out ./model
    
  5. 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 dotyczące poszczególnych aplikacji należy dodać do pliku "appsettings.json". Początkowy przykład kodu w języku C# (zarchiwizowany) zawiera pusty plik appsettings.json:

appsettings.json

C# (zarchiwizowane)

Dla każdej z jednostek pokazanych poniżej 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 pliku BotServices.cs informacje zawarte w pliku konfiguracji appsettings.json są używane do łączenia bota programu Orchestrator z usługami HomeAutomationWeather i SampleQnA . Konstruktory używają podanych wartości w celu nawiązania połączenia z tymi usługami.

BotServices.cs

C# (zarchiwizowane)

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 do poprawnej metody w celu wywołania usługi i zwrócenia wyniku.

bots\DispatchBot.cs

C# (zarchiwizowane)

Praca z wynikami rozpoznawania

Gdy aparat rozpoznawania programu Orchestrator generuje wynik, wskazuje, która usługa może najodpowiedniej przetworzyć wypowiedź. Kod w tym bocie 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 prawidłowego modelu usługi LUIS lub usługi QnA.

bots\DispatchBot.cs

C# (zarchiwizowane)

Metody ProcessHomeAutomationAsync i ProcessWeatherAsync używają danych wejściowych użytkownika zawartych w kontekście kolei, aby uzyskać najważniejsze intencje i jednostki z właściwego modelu usługi LUIS.

Metoda ProcessSampleQnAAsync używa danych wejściowych użytkownika zawartych w kontekście kolei, aby wygenerować odpowiedź na podstawie baza wiedzy i wyświetlić ten wynik użytkownikowi.

Uwaga

Jeśli jest 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

  1. 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>.

  2. Otwórz Bot Framework Emulator, kliknij przycisk Otwórz bota.

  3. W oknie dialogowym Otwieranie bota wprowadź adres URL punktu końcowego bota, na przykład http://localhost:3978/api/messages. Kliknij przycisk Połącz.

  4. 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

Kierowanie wypowiedzi użytkownika do usługi QnA Maker

  1. 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.

  2. Po wybraniu Orchestrator Recognition Trace wiersza 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 jako topScoringIntent, bot wyśle drugie żądanie, tym razem do aplikacji QnA Maker, z tą samą wypowiedzią.

  3. 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 (zarchiwizowane)]: (https://github.com/microsoft/BotBuilder-Samples/tree/main/archive/samples/python/14.nlp-with-orchestrator