Bagikan melalui


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.

Prasyarat

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:

Diagram kelas C#.

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.

  1. Jalankan perintah berikut untuk mengimpor, melatih, dan menerbitkan aplikasi ke lingkungan produksi.

    bf luis:build --in CognitiveModels --authoringKey <YOUR-KEY> --botName <YOUR-BOT-NAME>
    
  2. 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.

  1. Instal versi terbaru yang didukung dari paket Visual C++ Redistributable

  2. Buka prompt perintah atau jendela terminal, dan ubah direktori ke direktori sampel

  3. Pastikan Anda memiliki versi npm saat ini dan Bot Framework CLI.

    npm i -g npm
    npm i -g @microsoft/botframework-cli
    
  4. Unduh file model dasar Orchestrator

    mkdir model
    bf orchestrator:basemodel:get --out ./model
    
  5. 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

C# (diarsipkan)

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 HomeAutomationlayanan , , Weather dan SampleQnA . Konstruktor menggunakan nilai yang Anda berikan untuk terhubung ke layanan ini.

BotServices.cs

C# (diarsipkan)

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

C# (diarsipkan)

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

C# (diarsipkan)

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

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

  2. Buka Emulator Kerangka Kerja Bot, klik tombol Buka Bot .

  3. Dalam kotak dialog Buka bot , masukkan URL titik akhir bot Anda, seperti http://localhost:3978/api/messages. Klik Sambungkan.

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

Merutekan ucapan pengguna ke QnA Maker

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

  2. 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 sebagai topScoringIntent, bot akan membuat permintaan kedua, kali ini ke aplikasi QnA Maker, dengan ucapan yang sama.

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