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.
- 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 nástroji Orchestrator naleznete v tématu Rozpoznávání záměru pomocí nástroje Orchestrator v nástroji Composer.
- Další informace o
bf orchestrator
příkazu 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 nástroje Orchestrator v jazyce C# (archivováno) nebo JavaScriptu (archivováno)
- Znalost základů robotů, 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 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:
- Co je odpověď na otázky?
- Vytvoření robota s nejčastějšími dotazy
- Klientská knihovna pro odpovědi na otázky ve službě Azure Cognitive Language Services pro .NET
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.
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í 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.
Instalace nejnovější podporované verze distribuovatelného balíčku Visual C++
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 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 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
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
HomeAutomation
Weather
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 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
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
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
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>
.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
. Klepněte na tlačítko Připojit.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
- QnA Maker
Směrování promluvy 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á indikuje, která podřízená aplikace by měla tuto promluvu získat pro další zpracování.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 jakotopScoringIntent
, robot provede druhý požadavek, 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