Menggunakan QnA Maker untuk menjawab pertanyaan
BERLAKU UNTUK: SDK v4
QnA Maker menyediakan lapisan pertanyaan dan jawaban percakapan atas data Anda. Ini memungkinkan bot Anda untuk mengirim pertanyaan ke QnA Maker dan menerima jawaban tanpa perlu mengurai dan menafsirkan maksud pertanyaan.
Salah satu persyaratan dasar dalam membuat layanan QnA Maker Anda sendiri adalah mengisinya dengan pertanyaan dan jawaban. Dalam banyak kasus, pertanyaan dan jawaban sudah ada dalam konten seperti Tanya Jawab Umum (FAQ) atau dokumentasi lainnya; di lain waktu, Anda mungkin ingin menyesuaikan jawaban Anda atas pertanyaan dengan cara percakapan yang lebih alami.
Prasyarat
- Akun QnA Maker
- Pengetahuan tentang dasar-dasar bot dan QnA Maker.
- Salinan sampel QnA Maker (sederhana) di C#, JavaScript, Java, atau Python.
Tentang sampel ini
Untuk menggunakan QnA Maker di bot, Anda perlu membuat Pangkalan Pengetahuan di portal QnA Maker, seperti yang ditunjukkan di bagian berikutnya. Bot Anda kemudian dapat menggunakan Pangkalan Pengetahuan untuk menjawab pertanyaan pengguna.

OnMessageActivityAsync dipanggil untuk setiap input pengguna yang diterima. Saat dipanggil, ia mengakses informasi yang _configuration disimpan dalam file appsetting.json kode sampel untuk menemukan nilai untuk terhubung ke Pangkalan Pengetahuan QnA Maker yang telah dikonfigurasi sebelumnya.
Input pengguna dikirim ke Pangkalan Pengetahuan Anda dan jawaban terbaik yang dikembalikan ditampilkan kembali kepada pengguna Anda.
Membuat layanan QnA Maker dan menerbitkan Pangkalan Pengetahuan
- Membuat layanan QnA Maker.
- Buat Pangkalan Pengetahuan menggunakan file smartLightFAQ.tsv yang terletak di folder CognitiveModels dari proyek sampel. Beri nama Pangkalan Pengetahuan qna Anda, dan gunakan file smartLightFAQ.tsv untuk mengisinya.
Anda juga dapat menggunakan langkah-langkah ini untuk mengakses pangkalan pengetahuan QnA Maker Anda sendiri.
Catatan
Dokumentasi QnA Maker memiliki instruksi tentang cara membuat layanan di Azure dan untuk membuat, melatih, dan menerbitkan Pangkalan Pengetahuan Anda.
Mendapatkan nilai untuk menyambungkan bot Anda ke Pangkalan Pengetahuan
- Di situs QnA Maker, pilih Pangkalan Pengetahuan Anda.
- Dengan Pangkalan Pengetahuan Terbuka, pilih tab PENGATURAN. Catat nilai yang ditampilkan untuk nama layanan. Nilai ini berguna untuk menemukan Pangkalan Pengetahuan minat Anda saat menggunakan antarmuka portal QnA Maker. Ini tidak digunakan untuk menghubungkan aplikasi bot Anda ke Pangkalan Pengetahuan ini.
- Gulir ke bawah untuk menemukan detail Penyebaran dan rekam nilai berikut dari contoh permintaan HTTP Postman:
- POST /knowledgebases/<knowledge-base-id>/generateAnswer
- Host: <your-host-url>
- Otorisasi: EndpointKey <your-endpoint-key>
URL host Anda akan dimulai dengan https:// dan diakhbungi dengan /qnamaker, seperti https://<hostname>.azure.net/qnamaker. Bot Anda akan memerlukan ID Pangkalan Pengetahuan, URL host, dan kunci titik akhir untuk terhubung ke Pangkalan Pengetahuan QnA Maker Anda.
Memperbarui file pengaturan
Pertama, tambahkan informasi yang diperlukan untuk mengakses Pangkalan Pengetahuan Anda termasuk nama host, kunci titik akhir, dan ID Pangkalan Pengetahuan (kbId) ke dalam file pengaturan. Ini adalah nilai yang Anda simpan dari tab PENGATURAN Pangkalan Pengetahuan Anda di QnA Maker.
Jika Anda tidak menyebarkan ini untuk produksi, ID aplikasi dan bidang kata sandi bot Anda dapat dibiarkan kosong.
Catatan
Untuk menambahkan Pangkalan Pengetahuan QnA Maker ke dalam aplikasi bot yang ada, pastikan untuk menambahkan judul informatif untuk entri QnA Anda. Nilai "nama" dalam bagian ini menyediakan kunci yang diperlukan untuk mengakses informasi ini dari dalam aplikasi Anda.
appsettings.json
{
"MicrosoftAppType": "",
"MicrosoftAppId": "",
"MicrosoftAppPassword": "",
"MicrosoftAppTenantId": "",
"QnAKnowledgebaseId": "",
"QnAEndpointKey": "",
"QnAEndpointHostName": ""
}
Menyiapkan instans QnA Maker
Pertama, kami membuat objek untuk mengakses Pangkalan Pengetahuan QnA Maker kami.
Pastikan bahwa paket NuGet Microsoft.Bot.Builder.AI.QnA diinstal untuk proyek Anda.
Di QnABot.cs, dalam OnMessageActivityAsync metode , buat instans QnAMaker. Kelas QnABot ini juga merupakan tempat nama informasi koneksi, disimpan dalam appsettings.json di atas, ditarik masuk. Jika Anda telah memilih nama yang berbeda untuk informasi koneksi Pangkalan Pengetahuan dalam file pengaturan Anda, pastikan untuk memperbarui nama di sini untuk mencerminkan nama yang Anda pilih.
Bot/QnABot.cs
var qnaMaker = new QnAMaker(new QnAMakerEndpoint
{
KnowledgeBaseId = _configuration["QnAKnowledgebaseId"],
EndpointKey = _configuration["QnAEndpointKey"],
Host = _configuration["QnAEndpointHostName"]
},
null,
httpClient);
Memanggil QnA Maker dari bot Anda
Saat bot Anda memerlukan jawaban dari QnAMaker, panggil GetAnswersAsync metode dari kode bot Anda untuk mendapatkan jawaban yang sesuai berdasarkan konteks saat ini. Jika Anda mengakses Pangkalan Pengetahuan Anda sendiri, ubah pesan tidak ada jawaban yang ditemukan di bawah ini untuk memberikan instruksi yang berguna bagi pengguna Anda.
Bot/QnABot.cs
var options = new QnAMakerOptions { Top = 1 };
// The actual call to the QnA Maker service.
var response = await qnaMaker.GetAnswersAsync(turnContext, options);
if (response != null && response.Length > 0)
{
await turnContext.SendActivityAsync(MessageFactory.Text(response[0].Answer), cancellationToken);
}
else
{
await turnContext.SendActivityAsync(MessageFactory.Text("No QnA Maker answers were found."), cancellationToken);
}
Menguji bot
Jalankan sampel secara lokal di komputer Anda. Jika Anda belum melakukannya, instal Bot Framework Emulator. Untuk petunjuk lebih lanjut, lihat sampel README (C#, JavaScript, Python).
Mulai Emulator, sambungkan ke bot Anda, dan kirim pesan seperti yang ditunjukkan di bawah ini.

Informasi Tambahan
Sampel multi-giliran QnA Maker (C#, JavaScript, Java, Python) menunjukkan cara menggunakan dialog QnA Maker untuk mendukung perintah tindak lanjut QnA Maker dan fitur pembelajaran aktif.
QnA Maker mendukung petunjuk tindak lanjut, juga dikenal sebagai perintah multi-giliran. Jika QnA Maker Pangkalan Pengetahuan memerlukan respons tambahan dari pengguna, QnA Maker mengirimkan informasi konteks yang dapat Anda gunakan untuk meminta pengguna. Informasi ini juga digunakan untuk melakukan panggilan tindak lanjut ke layanan QnA Maker. Di versi 4.6, Bot Framework SDK menambahkan dukungan untuk fitur ini.
Untuk membuat Pangkalan Pengetahuan seperti itu, lihat dokumentasi QnA Maker tentang cara Menggunakan perintah tindak lanjut untuk membuat beberapa giliran percakapan.
QnA Maker juga mendukung saran pembelajaran aktif, memungkinkan Pangkalan Pengetahuan meningkat dari waktu ke waktu. Dialog QnA Maker mendukung umpan balik eksplisit untuk fitur pembelajaran aktif.
Untuk mengaktifkan fitur ini pada Pangkalan Pengetahuan, lihat dokumentasi QnA Maker tentang Saran pembelajaran aktif.
Langkah berikutnya
QnA Maker dapat dikombinasikan dengan Cognitive Services lainnya, untuk membuat bot Anda lebih kuat. Alat Pengiriman menyediakan cara untuk menggabungkan QnA dengan Pemahaman Bahasa (LUIS) di bot Anda.


