Menggunakan beberapa model LUIS dan QnA dengan Orchestrator
BERLAKU UNTUK: SDK v4
Catatan
Azure AI QnA Maker akan dihentikan pada 31 Maret 2025. Mulai 1 Oktober 2022, Anda tidak akan dapat membuat sumber daya atau pangkalan pengetahuan QnA Maker baru. Versi yang lebih baru dari kemampuan pertanyaan dan jawaban sekarang tersedia sebagai bagian dari Bahasa Azure AI.
Jawaban atas pertanyaan kustom, fitur Bahasa Azure AI, adalah versi terbaru dari layanan QnA Maker. Untuk informasi selengkapnya tentang dukungan tanya jawab di Bot Framework SDK, lihat Pemahaman bahasa alami.
Catatan
Pemahaman Bahasa (LUIS) akan dihentikan pada 1 Oktober 2025. Mulai 1 April 2023, Anda tidak akan dapat membuat sumber daya LUIS baru. Versi pemahaman bahasa yang lebih baru sekarang tersedia sebagai bagian dari Bahasa Azure AI.
Pemahaman bahasa percakapan (CLU), fitur Bahasa Azure AI, adalah versi LUIS yang diperbarui. Untuk informasi selengkapnya tentang dukungan pemahaman bahasa di Bot Framework SDK, lihat Pemahaman bahasa alami.
Jika bot menggunakan beberapa model Pemahaman Bahasa (LUIS) dan pangkalan pengetahuan QnA Maker, Anda dapat menggunakan Bot Framework Orchestrator untuk menentukan model LUIS atau Pangkalan Pengetahuan QnA Maker mana yang paling cocok dengan input pengguna. Anda dapat menggunakan bf orchestrator
perintah CLI untuk membuat file rekam jepret Orchestrator, lalu menggunakan file rekam jepret untuk merutekan input pengguna ke model yang benar pada durasi.
Artikel ini menjelaskan cara menggunakan Pangkalan Pengetahuan QnA Maker yang ada dengan Orchestrator.
- Untuk bot baru, pertimbangkan untuk menggunakan fitur jawaban atas pertanyaan dan alur kerja orkestrasi Bahasa Azure AI.
- Untuk informasi selengkapnya tentang Orchestrator, lihat Pengenalan niat dengan Orchestrator di Composer.
- Untuk informasi selengkapnya tentang
bf orchestrator
perintah, lihat Bot Framework CLI README.
Prasyarat
- Akun luis.ai untuk menulis aplikasi LUIS.
- Akun QnA Maker dan Pangkalan Pengetahuan QnA Maker yang ada.
- Salinan NLP dengan sampel Orchestrator di C# (diarsipkan) atau JavaScript (diarsipkan).
- Pengetahuan tentang dasar-dasar bot, LUIS, dan QnA Maker.
- Instal CLI BF baris perintah.
Tentang sampel ini
Sampel ini didasarkan pada serangkaian proyek LUIS dan QnA Maker yang telah ditentukan sebelumnya. Namun, untuk menggunakan QnA Maker di bot, Anda memerlukan Pangkalan Pengetahuan yang ada di portal QnA Maker. Bot Anda kemudian dapat menggunakan Pangkalan Pengetahuan untuk menjawab pertanyaan pengguna.
Untuk pengembangan bot baru, pertimbangkan untuk menggunakan Power Virtual Agents. Jika Anda perlu membuat Pangkalan Pengetahuan baru untuk bot Bot Framework SDK, lihat artikel layanan Azure AI berikut ini:
- Apa yang dimaksud dengan jawaban atas pertanyaan?
- Membuat bot FAQ
- Pustaka klien Jawaban Atas Pertanyaan Azure Cognitive Language Services untuk .NET
OnMessageActivityAsync
dipanggil untuk setiap input pengguna yang diterima. Modul ini menemukan niat pengguna penilaian teratas dan meneruskan hasilnya ke DispatchToTopIntentAsync
. DispatchToTopIntentAsync, pada gilirannya, memanggil handler aplikasi yang sesuai.
ProcessSampleQnAAsync
- untuk pertanyaan faq bot.ProcessWeatherAsync
- untuk kueri cuaca.ProcessHomeAutomationAsync
- untuk perintah pencahayaan rumah.
Handler memanggil layanan LUIS atau QnA Maker dan mengembalikan hasil yang dihasilkan kembali kepada pengguna.
Membuat aplikasi LUIS
Sebelum Anda dapat membuat file rekam jepret Orchestrator, Anda memerlukan aplikasi LUIS dan pangkalan pengetahuan QnA yang dibuat dan diterbitkan. Contoh bot yang direferensikan dalam artikel ini menggunakan model berikut, disertakan dengan sampel NLP With Orchestrator di \CognitiveModels
folder :
Nama | Deskripsi |
---|---|
HomeAutomation | Aplikasi LUIS yang mengenali niat otomatisasi rumah dengan data entitas terkait. |
Cuaca | Aplikasi LUIS yang mengenali niat terkait cuaca dengan data lokasi. |
QnAMaker | Pangkalan Pengetahuan QnA Maker yang memberikan jawaban atas pertanyaan sederhana tentang bot. |
Membuat aplikasi LUIS
Buat aplikasi LUIS dari file HomeAutomation dan Weather .lu di direktori model kognitif sampel.
Jalankan perintah berikut untuk mengimpor, melatih, dan menerbitkan aplikasi ke lingkungan produksi.
bf luis:build --in CognitiveModels --authoringKey <YOUR-KEY> --botName <YOUR-BOT-NAME>
Rekam ID aplikasi, nama tampilan, kunci penulisan, dan lokasi.
Untuk informasi selengkapnya, lihat cara Membuat aplikasi LUIS di portal LUIS dan Mendapatkan nilai untuk menyambungkan ke aplikasi LUIS Anda di Menambahkan pemahaman bahasa alami ke bot Anda dan dokumentasi LUIS tentang cara melatih dan menerbitkan aplikasi ke lingkungan produksi.
Mendapatkan nilai untuk menyambungkan bot Anda ke Pangkalan Pengetahuan
Catatan
Azure AI QnA Maker akan dihentikan pada 31 Maret 2025. Mulai 1 Oktober 2022, Anda tidak akan dapat membuat sumber daya atau pangkalan pengetahuan QnA Maker baru. Versi yang lebih baru dari kemampuan pertanyaan dan jawaban sekarang tersedia sebagai bagian dari Bahasa Azure AI.
Jawaban atas pertanyaan kustom, fitur Bahasa Azure AI, adalah versi terbaru dari layanan QnA Maker. Untuk informasi selengkapnya tentang dukungan tanya jawab di Bot Framework SDK, lihat Pemahaman bahasa alami.
Anda memerlukan Pangkalan Pengetahuan yang ada dan nama host dan kunci titik akhir QnA Maker Anda.
Tip
Dokumentasi QnA Maker memiliki instruksi tentang cara membuat, melatih, dan menerbitkan Pangkalan Pengetahuan Anda.
Membuat file rekam jepret Orchestrator
Antarmuka CLI untuk alat Orchestrator membuat file rekam jepret Orchestrator untuk perutean ke aplikasi LUIS atau QnA Maker yang benar pada durasi.
Instal versi terbaru yang didukung dari paket Visual C++ Redistributable
Buka prompt perintah atau jendela terminal, dan ubah direktori ke direktori sampel
Pastikan Anda memiliki versi npm saat ini dan Bot Framework CLI.
npm i -g npm npm i -g @microsoft/botframework-cli
Unduh file model dasar Orchestrator
mkdir model bf orchestrator:basemodel:get --out ./model
Membuat file rekam jepret Orchestrator
mkdir generated bf orchestrator:create --hierarchical --in ./CognitiveModels --out ./generated --model ./model
Menginstal paket
Sebelum menjalankan aplikasi ini untuk pertama kalinya pastikan bahwa beberapa paket NuGet diinstal:
- Microsoft.Bot.Builder
- Microsoft.Bot.Builder.AI.Luis
- Microsoft.Bot.Builder.AI.QnA
- Microsoft.Bot.Builder.AI.Orchestrator
Memperbarui file appsettings.json Anda secara manual
Setelah semua aplikasi layanan Anda dibuat, informasi untuk masing-masing aplikasi perlu ditambahkan ke dalam file 'appsettings.json'. Sampel awal untuk kode C# (diarsipkan) berisi file appsettings.json kosong:
appsettings.json
Untuk setiap entitas yang ditunjukkan di bawah ini, tambahkan nilai yang Anda rekam sebelumnya dalam instruksi ini:
"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>",
Ketika semua perubahan selesai, simpan file ini.
Menyambungkan ke layanan dari bot Anda
Untuk menyambungkan ke layanan LUIS, dan QnA Maker, bot Anda menarik informasi dari file pengaturan.
Di BotServices.cs, informasi yang terkandung dalam file konfigurasi appsettings.json digunakan untuk menghubungkan bot Orchestrator Anda ke HomeAutomation
layanan , , Weather
dan SampleQnA
. Konstruktor menggunakan nilai yang Anda berikan untuk terhubung ke layanan ini.
BotServices.cs
Memanggil layanan dari bot Anda
Untuk setiap input dari pengguna Anda, logika bot meneruskan input pengguna ke Orchestrator Recognizer, menemukan niat yang dikembalikan teratas, dan menggunakan informasi tersebut untuk memanggil layanan yang sesuai untuk input.
Dalam file DispatchBot.cs setiap kali OnMessageActivityAsync
metode dipanggil, kami memeriksa pesan pengguna masuk dan mendapatkan niat teratas dari Orchestrator Recognizer. Kami kemudian meneruskan topIntent
dan recognizerResult
ke metode yang benar untuk memanggil layanan dan mengembalikan hasilnya.
bots\DispatchBot.cs
Bekerja dengan hasil pengenalan
Ketika pengenal Orchestrator menghasilkan hasil, itu menunjukkan layanan mana yang paling tepat dapat memproses ucapan. Kode dalam bot ini merutekan permintaan ke layanan yang sesuai, lalu meringkas respons dari layanan yang disebut. Bergantung pada niat yang dikembalikan dari Orchestrator, kode ini menggunakan niat yang dikembalikan untuk merutekan ke model LUIS atau layanan QnA yang benar.
bots\DispatchBot.cs
Metode ProcessHomeAutomationAsync
dan ProcessWeatherAsync
menggunakan input pengguna yang terkandung dalam konteks giliran untuk mendapatkan niat dan entitas teratas dari model LUIS yang benar.
Metode ini ProcessSampleQnAAsync
menggunakan input pengguna yang terkandung dalam konteks giliran untuk menghasilkan jawaban dari Pangkalan Pengetahuan dan menampilkan hasilnya kepada pengguna.
Catatan
Jika ini adalah aplikasi produksi, di sinilah metode LUIS yang dipilih akan terhubung ke layanan yang ditentukan, meneruskan input pengguna, dan memproses niat LUIS dan data entitas yang dikembalikan.
Uji aplikasi Anda
Dengan menggunakan lingkungan pengembangan Anda, mulai kode sampel. Perhatikan alamat localhost yang ditampilkan di bilah alamat jendela browser yang dibuka oleh Aplikasi Anda:
https://localhost:<Port_Number>
.Buka Emulator Kerangka Kerja Bot, klik tombol Buka Bot .
Dalam kotak dialog Buka bot , masukkan URL titik akhir bot Anda, seperti
http://localhost:3978/api/messages
. Klik Sambungkan.Untuk referensi Anda, berikut adalah beberapa pertanyaan dan perintah yang dicakup oleh layanan yang dibangun untuk bot Anda:
- QnA Maker
hi
,good morning
what are you
,what do you do
- LUIS (otomatisasi rumah)
turn on bedroom light
turn off bedroom light
make some coffee
- LUIS (cuaca)
whats the weather in redmond washington
what's the forecast for london
show me the forecast for nebraska
- QnA Maker
Merutekan ucapan pengguna ke QnA Maker
Di Emulator, masukkan teks
hi
dan kirimkan ucapan. Bot mengirimkan kueri ini ke Orchestrator dan mendapatkan kembali respons yang menunjukkan aplikasi anak mana yang harus mendapatkan ucapan ini untuk pemrosesan lebih lanjut.Dengan memilih
Orchestrator Recognition Trace
baris di log, Anda dapat melihat respons JSON di Emulator. Hasil Orkestrator ditampilkan di Inspektur.{ "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" }
Karena ucapan,
hi
, adalah bagian dari niat QnAMaker Orchestrator, dan dipilih sebagaitopScoringIntent
, bot akan membuat permintaan kedua, kali ini ke aplikasi QnA Maker, dengan ucapan yang sama.QnAMaker Trace
Pilih baris di log Emulator. Hasil QnA Maker ditampilkan di Inspektur.{ "questions": [ "hi", "greetings", "good morning", "good evening" ], "answer": "Hello!", "score": 1, "id": 96, "source": "QnAMaker.tsv", "metadata": [], "context": { "isContextOnly": false, "prompts": [] } }
[Python (diarsipkan)]: (https://github.com/microsoft/BotBuilder-Samples/tree/main/archive/samples/python/14.nlp-with-orchestrator