Sdílet prostřednictvím


Použití více modelů LUIS a QnA s Orchestratorem

PLATÍ PRO: SDK v4

Poznámka:

Azure AI QnA Maker bude vyřazený 31. března 2025. Od 1. října 2022 nebudete moci vytvářet nové zdroje ani znalostní báze QnA Maker. Novější verze funkce pro otázky a odpovědi je teď dostupná jako součást jazyka Azure AI.

Vlastní odpověď na otázky, funkce jazyka Azure AI, je aktualizovaná verze služby QnA Maker. Další informace o podpoře otázek a odpovědí v sadě SDK služby Bot Framework najdete v tématu Principy přirozeného jazyka.

Poznámka:

Služba Language Understanding (LUIS) bude vyřazena 1. října 2025. Od 1. dubna 2023 nebudete moct vytvářet nové prostředky LUIS. Novější verze language understanding je teď dostupná jako součást jazyka Azure AI.

Konverzační jazyk understanding (CLU), funkce jazyka Azure AI, je aktualizovaná verze služby LUIS. Další informace o podpoře porozumění jazyku v sadě SDK služby Bot Framework najdete v tématu Principy přirozeného jazyka.

Pokud robot používá více modelů SLUŽBY LUIS (Language Understanding) a znalostní báze služby QnA Maker, můžete pomocí nástroje Bot Framework Orchestrator určit, který model LUIS nebo QnA Maker znalostní báze nejlépe odpovídá vstupu uživatele. Pomocí příkazu ROZHRANÍ příkazového bf orchestrator řádku můžete vytvořit soubor snímku nástroje Orchestrator a pak pomocí souboru snímku směrovat uživatelský vstup do správného modelu za běhu.

Tento článek popisuje, jak používat existující znalostní báze služby QnA Maker s orchestratorem.

Požadavky

O této ukázce

Tato ukázka je založená na předdefinované sadě projektů LUIS a QnA Maker. Pokud ale chcete ve svém robotovi používat QnA Maker, potřebujete existující znalostní báze na portálu QnA Maker. Robot pak může pomocí znalostní báze odpovědět na otázky uživatele.

Pro vývoj nových robotů zvažte použití nástroje Copilot Studio. Pokud potřebujete vytvořit nový znalostní báze pro robota sady SDK služby Bot Framework, projděte si následující články o službách Azure AI:

Diagram tříd jazyka C#.

OnMessageActivityAsync je volána pro každý přijatý uživatelský vstup. Tento modul najde záměr uživatele s nejvyšším skóre a předá tento výsledek DispatchToTopIntentAsync. DispatchToTopIntentAsync zase volá příslušnou obslužnou rutinu aplikace.

  • ProcessSampleQnAAsync – dotazy k nejčastějším dotazům robota.
  • ProcessWeatherAsync - pro dotazy na počasí.
  • ProcessHomeAutomationAsync - pro domácí osvětlení příkazů.

Obslužná rutina volá službu LUIS nebo QnA Maker a vrátí vygenerovaný výsledek zpět uživateli.

Vytváření aplikací LUIS

Než budete moct vytvořit soubor snímku nástroje Orchestrator, potřebujete aplikace LUIS a QnA znalostní báze vytvořené a publikované. Ukázkový robot odkazovaný v tomto článku používá následující modely, které jsou součástí ukázky nástroje NLP With Orchestrator ve \CognitiveModels složce:

Název Popis
HomeAutomation Aplikace LUIS, která rozpozná záměr domácí automatizace s přidruženými daty entit.
Počasí Aplikace LUIS, která rozpozná záměry související s počasím s daty o poloze
QnAMaker Služba QnA Maker znalostní báze, která poskytuje odpovědi na jednoduché otázky týkající se robota.

Vytvoření aplikací LUIS

Vytvořte aplikace LUIS ze souborů HomeAutomation a Weather .lu v adresáři kognitivních modelů ukázky.

  1. Spuštěním následujícího příkazu naimportujte, vytrénujte a publikujte aplikaci do produkčního prostředí.

    bf luis:build --in CognitiveModels --authoringKey <YOUR-KEY> --botName <YOUR-BOT-NAME>
    
  2. Poznamenejte si ID aplikací, zobrazované názvy, klíč pro vytváření obsahu a umístění.

Další informace najdete v tématu vytvoření aplikace LUIS na portálu LUIS a získání hodnot pro připojení k aplikaci LUIS v tématu Přidání porozumění přirozenému jazyku robotovi a dokumentaci ke službě LUIS o trénování a publikování aplikace do produkčního prostředí.

Získání hodnot pro připojení robota k znalostní báze

Poznámka:

Azure AI QnA Maker bude vyřazený 31. března 2025. Od 1. října 2022 nebudete moci vytvářet nové zdroje ani znalostní báze QnA Maker. Novější verze funkce pro otázky a odpovědi je teď dostupná jako součást jazyka Azure AI.

Vlastní odpověď na otázky, funkce jazyka Azure AI, je aktualizovaná verze služby QnA Maker. Další informace o podpoře otázek a odpovědí v sadě SDK služby Bot Framework najdete v tématu Principy přirozeného jazyka.

Potřebujete existující znalostní báze a název hostitele služby QnA Maker a klíč koncového bodu.

Tip

Dokumentace ke službě QnA Maker obsahuje pokyny, jak vytvářet, trénovat a publikovat znalostní báze.

Vytvoření souboru snímku nástroje Orchestrator

Rozhraní příkazového řádku pro nástroj Orchestrator vytvoří soubor snímku nástroje Orchestrator pro směrování do správné aplikace LUIS nebo služby QnA Maker za běhu.

  1. Instalace nejnovější podporované verze distribuovatelného balíčku Visual C++

  2. Otevřete příkazový řádek nebo okno terminálu a změňte adresáře na ukázkový adresář.

  3. Ujistěte se, že máte aktuální verzi npm a rozhraní příkazového řádku bot Framework.

    npm i -g npm
    npm i -g @microsoft/botframework-cli
    
  4. Stažení souboru základního modelu nástroje Orchestrator

    mkdir model
    bf orchestrator:basemodel:get --out ./model
    
  5. Vytvoření souboru snímku nástroje Orchestrator

    mkdir generated
    bf orchestrator:create --hierarchical --in ./CognitiveModels --out ./generated --model ./model
    

Instalace balíčků

Před prvním spuštěním této aplikace se ujistěte, že je nainstalováno několik balíčků NuGet:

  • Microsoft.Bot.Builder
  • Microsoft.Bot.Builder.AI.Luis
  • Microsoft.Bot.Builder.AI.QnA
  • Microsoft.Bot.Builder.AI.Orchestrator

Ruční aktualizace souboru appsettings.json

Po vytvoření všech aplikací služeb je potřeba do souboru appsettings.json přidat informace pro každou z nich. Počáteční ukázka kódu jazyka C# (archivovaná) obsahuje prázdný soubor appsettings.json:

appsettings.json

C# (archivováno)

Pro každou z níže uvedených entit přidejte hodnoty, které jste si poznamenali dříve v těchto pokynech:

"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 dokončení všech změn uložte tento soubor.

Připojení ke službám z robota

Aby se robot mohl připojit ke službám LUIS a QnA Maker, načítá informace ze souboru nastavení.

V BotServices.cs se informace obsažené v konfiguračním souboru appsettings.json používají k připojení robota Orchestratoru k a službám.SampleQnA HomeAutomationWeather Konstruktory používají hodnoty, které jste zadali pro připojení k těmto službám.

BotServices.cs

C# (archivováno)

Volání služeb z robota

Pro každý vstup od uživatele logika robota předává vstup uživatele do nástroje Orchestrator Recognizer, vyhledá vrácený záměr a použije tyto informace k volání příslušné služby pro vstup.

V souboru DispatchBot.cs při každém OnMessageActivityAsync zavolání metody zkontrolujeme příchozí zprávu uživatele a získáme hlavní záměr z nástroje Orchestrator Recognizer. Pak předáme topIntent a recognizerResult zpět správnou metodu volání služby a vrátíme výsledek.

roboti\DispatchBot.cs

C# (archivováno)

Práce s výsledky rozpoznávání

Když rozpoznávání orchestrátoru vytvoří výsledek, indikuje, která služba dokáže promluvu nejlépe zpracovat. Kód v tomto robotovi směruje požadavek do odpovídající služby a pak shrnuje odpověď z volané služby. V závislosti na záměru vráceného z orchestratoru tento kód používá vrácený záměr směrovat na správný model LUIS nebo službu QnA.

roboti\DispatchBot.cs

C# (archivováno)

Tyto ProcessHomeAutomationAsync a ProcessWeatherAsync metody používají uživatelský vstup obsažený v kontextu otáčení k získání hlavního záměru a entit ze správného modelu LUIS.

Metoda ProcessSampleQnAAsync používá uživatelský vstup obsažený v kontextu turn k vygenerování odpovědi z znalostní báze a zobrazení tohoto výsledku uživateli.

Poznámka:

Pokud se jedná o produkční aplikaci, jedná se o místo, kde se vybrané metody LUIS připojují ke své zadané službě, předávají vstup uživatele a zpracovávají vrácený záměr LUIS a data entit.

Otestovat robota

  1. Pomocí vývojového prostředí spusťte ukázkový kód. Poznamenejte si adresu localhost zobrazenou v adresním řádku okna prohlížeče otevřeného vaší aplikací: https://localhost:<Port_Number>.

  2. Otevřete Bot Framework Emulator a klikněte na tlačítko Otevřít robota .

  3. V dialogovém okně Otevřít robota zadejte adresu URL koncového bodu robota, například http://localhost:3978/api/messages. Klepněte na tlačítko Připojit.

  4. Tady jsou některé otázky a příkazy, na které se vztahují služby vytvořené pro robota:

    • QnA Maker
      • hi, good morning
      • what are you, what do you do
    • LUIS (domácí automatizace)
      • turn on bedroom light
      • turn off bedroom light
      • make some coffee
    • LUIS (počasí)
      • whats the weather in redmond washington
      • what's the forecast for london
      • show me the forecast for nebraska

Směrování promluvy uživatele do služby QnA Maker

  1. V emulátoru zadejte text hi a odešlete promluvu. Robot odešle tento dotaz do nástroje Orchestrator a vrátí odpověď, která indikuje, která podřízená aplikace by měla tuto promluvu získat pro další zpracování.

  2. Výběrem Orchestrator Recognition Trace řádku v protokolu uvidíte odpověď JSON v emulátoru. Výsledek orchestratoru se zobrazí v inspektoru.

    {
    "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"
    }
    

    Vzhledem k tomu, hiže promluva je součástí záměru QnAMaker orchestrátoru a je vybrána jako topScoringIntent, robot provede druhý požadavek, tentokrát do aplikace QnA Maker se stejnou promluvou.

  3. QnAMaker Trace Vyberte řádek v protokolu emulátoru. Výsledek služby QnA Maker se zobrazí v inspektoru.

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

[Python (archivováno)]: (https://github.com/microsoft/BotBuilder-Samples/tree/main/archive/samples/python/14.nlp-with-orchestrator