Použití více modelů LUIS a QnA s nástrojem Orchestrator
PLATÍ PRO: SDK v4
Poznámka
Azure AI QnA Maker bude vyřazen 31. března 2025. Od 1. října 2022 nebudete moct vytvářet nové prostředky nebo znalostní báze služby QnA Maker. V rámci jazyka Azure AI je teď k dispozici novější verze funkce otázek a odpovědí.
Vlastní odpovídání 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 Porozumění přirozenému jazyku.
Poznámka
Language Understanding (LUIS) bude 1. října 2025 vyřazena. Od 1. dubna 2023 nebudete moct vytvářet nové prostředky služby LUIS. V rámci azure AI Language je teď k dispozici novější verze služby Language Understanding.
Porozumění konverzačnímu jazyku (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ů Language Understanding (LUIS) a znalostních bází služby QnA Maker, můžete pomocí orchestratoru služby Bot Framework určit, který model LUIS nebo služba QnA Maker znalostní báze nejlépe odpovídá vstupu uživatele. Pomocí příkazu CLI můžete bf orchestrator
vytvořit soubor snímku orchestratoru a pak ho použít ke směrování uživatelského vstupu 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 nástrojem Orchestrator.
- U nových robotů zvažte použití funkcí pracovních postupů pro odpovědi na otázky a orchestraci jazyka Azure AI.
- Další informace o orchestratoru najdete v tématu Rozpoznávání záměru pomocí orchestratoru v composeru.
- Další informace o příkazu
bf orchestrator
najdete v souboru README rozhraní příkazového řádku služby Bot Framework.
Požadavky
- Účet luis.ai pro vytváření aplikací LUIS.
- Účet služby QnA Maker a existující znalostní báze služby QnA Maker.
- Kopie NLP s ukázkou orchestratoru v C# (archivované) nebo JavaScriptu (archivované)
- Znalost základů robotů, služby LUIS a služby QnA Maker
- Nainstalujte rozhraní příkazového řádku BF CLI.
O této ukázce
Tato ukázka je založená na předdefinované sadě projektů LUIS a QnA Maker. Pokud ale chcete qnA Maker ve svém robotovi používat, potřebujete existující znalostní báze na portálu služby QnA Maker. Robot pak může pomocí znalostní báze odpovídat na otázky uživatele.
Pro vývoj nových robotů zvažte použití Power Virtual Agents. Pokud potřebujete vytvořit nový znalostní báze pro robota sady Bot Framework SDK, projděte si následující články o službách Azure AI:
- Co je odpovídání na otázky?
- Vytvoření robota s nejčastějšími dotazy
- Klientská knihovna azure Cognitive Language Services Pro odpovědi na otázky pro .NET
OnMessageActivityAsync
se volá pro každý přijatý uživatelský vstup. Tento modul vyhledá záměr uživatele s nejvyšším skóre a předá tento výsledek do DispatchToTopIntentAsync
. DispatchToTopIntentAsync zase volá příslušnou obslužnou rutinu aplikace.
ProcessSampleQnAAsync
– pro nejčastější dotazy k robotovi.ProcessWeatherAsync
- pro dotazy na počasí.ProcessHomeAutomationAsync
- pro příkazy domácího osvětlení.
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 orchestratoru, musíte vytvořit a publikovat aplikace LUIS a znalostní báze QnA. Ukázkový robot, na který odkazuje tento článek, používá následující modely, které jsou součástí ukázky NLP With Orchestrator ve \CognitiveModels
složce :
Název | Description |
---|---|
HomeAutomation | Aplikace LUIS, která rozpozná záměr domácí automatizace s daty přidružených entit. |
Počasí | Aplikace LUIS, která rozpoznává záměry související s počasím pomocí dat o poloze. |
QnAMaker | 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ů .lu HomeAutomation a Weather v adresáři kognitivních modelů ukázky.
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>
Poznamenejte si ID aplikací, zobrazované názvy, klíč pro vytváření a umístění.
Další informace najdete v tématech 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 do robota a v dokumentaci služby LUIS o tom, jak vytrénovat a publikovat aplikaci 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 moct vytvářet nové prostředky nebo znalostní báze služby QnA Maker. V rámci jazyka Azure AI je teď k dispozici novější verze funkce otázek a odpovědí.
Vlastní odpovídání 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 Porozumění přirozenému jazyku.
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 vytvořit, vytrénovat a publikovat znalostní báze.
Vytvoření souboru snímku orchestratoru
Rozhraní 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 QnA Maker za běhu.
Nainstalujte nejnovější podporovanou verzi balíčku Visual C++ Redistributable.
Otevřete příkazový řádek nebo okno terminálu a změňte adresáře na ukázkový adresář.
Ujistěte se, že máte aktuální verzi npm a rozhraní příkazového řádku služby Bot Framework.
npm i -g npm npm i -g @microsoft/botframework-cli
Stažení souboru základního modelu nástroje Orchestrator
mkdir model bf orchestrator:basemodel:get --out ./model
Vytvoření souboru snímku orchestratoru
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 nainstalovaných 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 informace o každé z nich přidat do souboru appsettings.json. Počáteční ukázka (archivovaného) kódu C# obsahuje prázdný soubor appsettings.json:
appsettings.json
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 tento soubor uložte.
Připojení ke službám z robota
Pokud se robot chce připojit ke službám LUIS a QnA Maker, načítá informace ze souboru nastavení.
V souboru BotServices.cs se informace obsažené v konfiguračním souboru appsettings.json používají k připojení robota Orchestratoru ke službám HomeAutomation
, Weather
a SampleQnA
. Konstruktory používají hodnoty, které jste zadali pro připojení k těmto službám.
BotServices.cs
Volání služeb z robota
Pro každý vstup od uživatele předá logika robota uživatelský vstup službě Orchestrator Recognizer, najde první vrácený záměr a použije tyto informace k volání příslušné služby pro daný vstup.
V souboru DispatchBot.cs při každém OnMessageActivityAsync
volá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
správné metodě, která zavolá službu a vrátí výsledek.
bots\DispatchBot.cs
Práce s výsledky rozpoznávání
Když rozpoznávání Orchestratoru vytvoří výsledek, označuje, která služba může promluvu zpracovat nejvhodnějším způsobem. Kód v tomto robotovi směruje požadavek do odpovídající služby a pak sumarizuje odpověď z volané služby. V závislosti na záměru vráceného nástrojem Orchestrator tento kód použije vrácený záměr ke směrování do správného modelu LUIS nebo služby QnA.
bots\DispatchBot.cs
ProcessHomeAutomationAsync
Metody a ProcessWeatherAsync
používají uživatelský vstup obsažený v kontextu turn k získání nejvyšší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 by se jednalo o produkční aplikaci, vybrané metody LUIS by se připojily ke své zadané službě, předaly uživatelský vstup a zpracovaly vrácený záměr luis a data entity.
Testování robota
Pomocí vývojového prostředí spusťte ukázkový kód. Poznamenejte si adresu místního hostitele , která se zobrazuje na panelu Adresa okna prohlížeče otevřeného vaší aplikací:
https://localhost:<Port_Number>
.Otevřete Bot Framework Emulator a klikněte na tlačítko Otevřít robota.
V dialogovém okně Otevřít robota zadejte adresu URL koncového bodu robota, například
http://localhost:3978/api/messages
. Klikněte na Připojit.Tady jsou některé otázky a příkazy, kterým se týkají služby vytvořené pro vašeho 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
- QnA Maker
Směrování promluv uživatele do služby QnA Maker
V emulátoru zadejte text
hi
a odešlete promluvu. Robot odešle tento dotaz do nástroje Orchestrator a vrátí odpověď, která podřízená aplikace by měla tuto promluvu získat k dalšímu zpracování.Orchestrator Recognition Trace
Výběrem řádku v protokolu zobrazí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 orchestratoru a je vybraná jakotopScoringIntent
, robot odešle druhou žádost, tentokrát do aplikace QnA Maker, se stejnou promluvou.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