Bagikan melalui


Mulai cepat: jawaban atas pertanyaan kustom (CQA)

Mulai cepat ini memandu Anda melalui langkah-langkah penting yang diperlukan untuk membuat, menguji, dan menyebarkan proyek jawaban atas pertanyaan kustom (CQA) di Microsoft Foundry. Baik Anda beralih dari Language Studio atau mulai dari awal, mulai cepat ini adalah untuk Anda. Ini memberikan instruksi yang jelas dan dapat ditindaklanjuti untuk mencapai penyebaran proyek CQA yang cepat dan sukses.

Catatan

  • Jika Anda sudah memiliki Bahasa Azure di Foundry Tools atau sumber daya multi-layanan—baik digunakan sendiri maupun melalui Language Studio—Anda dapat terus menggunakan sumber daya Bahasa yang ada dalam portal Foundry. Untuk informasi selengkapnya, lihat Cara menggunakan Foundry Tools di portal Foundry.
  • Kami sangat menyarankan Anda menggunakan sumber daya Foundry di Foundry; namun, Anda juga dapat mengikuti instruksi ini menggunakan sumber daya Bahasa.

Prasyarat

Sebelum memulai, Anda memerlukan sumber daya dan izin berikut:

Get started

  1. Navigasi ke Foundry.

  2. Jika Anda belum masuk, portal akan meminta Anda untuk melakukannya dengan kredensial Azure Anda.

  3. Setelah masuk, Anda dapat membuat atau mengakses proyek yang ada dalam Foundry.

  4. Jika Anda belum berada di proyek Anda untuk tugas ini, pilih proyek tersebut.

Membuat tugas penyempurnaan CQA Anda

Di Foundry, tugas penyempurnaan berfungsi sebagai ruang kerja untuk solusi CQA Anda. Sebelumnya, tugas penyempurnaan disebut sebagai proyek CQA. Anda mungkin menemukan kedua istilah yang digunakan secara bergantian dalam dokumentasi CQA yang lebih lama.

  1. Setelah Anda memilih proyek Foundry yang akan digunakan untuk tutorial memulai cepat ini, pilih penyetelan dari menu navigasi kiri.

    Cuplikan layar pilihan menu penyempurnaan di Foundry.

  2. Dari jendela utama, pilih tab penyempurnaan Layanan AI lalu tombol + Sesuaikan.

    Cuplikan layar tombol penyesuaian di Foundry.

  3. Dari jendela Buat penyempurnaan layanan , pilih tab Jawaban atas pertanyaan kustom lalu pilih Berikutnya.

    Cuplikan layar tab jawaban atas pertanyaan kustom di Foundry.

  4. Pilih sumber daya Pencarian Azure AI yang Tersambung dari jendela tugas Buat penyempurnaan CQA . Untuk informasi selengkapnya, lihatMengonfigurasi koneksi sumber daya Azure.

  5. Selanjutnya, lengkapi bidang Nama dan Bahasa . Untuk proyek ini, Anda dapat meninggalkan jawaban Default ketika tidak ada jawaban yang dikembalikan bidang apa adanya (Tidak ada jawaban yang ditemukan).

  6. Pilih tombol Create.

Menambahkan sumber pangkalan pengetahuan CQA

Pangkalan pengetahuan CQA adalah sekumpulan pasangan tanya jawab terstruktur yang dioptimalkan untuk AI percakapan. Pangkalan pengetahuan menggunakan pemrosesan bahasa alami untuk menginterpretasikan kueri pengguna dan mengembalikan jawaban yang sadar konteks dan akurat dari himpunan data tertentu.

  1. Dari menu Memulai , pilih Kelola sumber.

    Cuplikan layar pilihan kelola sumber di Foundry.

  2. Dari jendela utama, pilih menu drop-down + Tambahkan sumber .

  3. Dari menu drop-down, Anda dapat memilih Tambahkan obrolan, Tambahkan URL, atau Tambahkan File.

    Cuplikan layar menu drop-down tambahkan sumber di Foundry.

  4. Untuk proyek ini, mari kita pilih Tambahkan obrolan.

  5. Dari jendela Tambahkan sumber baru , mari kita pilih Ramah.

    Cuplikan layar pilih pilihan sumber dan tambahkan tombol di Foundry.

  6. Terakhir, pilih Tambahkan. Mungkin perlu waktu beberapa menit agar sumber dibuat.

  7. Setelah dibuat, sumber tercantum di jendela Kelola sumber .

    Cuplikan layar daftar kelola sumber di Foundry.

Menguji pangkalan pengetahuan Anda

  1. Pilih Uji pangkalan pengetahuan dari menu Memulai .

  2. Ketik yang berikut ini di bidang Ketik pertanyaan Anda lalu pilih Jalankan.

      Hello! How are you doing today?
    
    
  3. Di antarmuka inspeksi, Anda dapat meninjau tingkat keyakinan respons dan memilih jawaban yang paling cocok.

    Cuplikan layar antarmuka inspeksi di Foundry.

Menyebarkan pangkalan pengetahuan Anda

Menyebarkan pangkalan pengetahuan CQA berarti menerbitkan konten tanya jawab yang dikumpulkan sebagai titik akhir langsung yang dapat dicari. Proses ini memindahkan proyek Anda dari fase pengujian ke lingkungan produksi yang memungkinkan aplikasi klien menggunakannya untuk berbagai proyek dan solusi, termasuk chatbot.

  1. Setelah inspeksi Anda selesai, pilih bagian Sebarkan pangkalan pengetahuan dari menu Memulai .

  2. Pilih tombol Sebarkan terlebih dahulu dari jendela utama Sebarkan pangkalan pengetahuan lalu dari jendela pop-up Sebarkan proyek ini . Dibutuhkan beberapa menit untuk menyebarkan.

  3. Setelah penyebaran selesai, proyek yang Anda sebarkan tercantum di jendela Sebarkan pangkalan pengetahuan .

Itu saja! Pangkalan pengetahuan Jawaban Atas Pertanyaan Kustom (CQA) Anda menyediakan antarmuka bahasa alami untuk data Anda, memungkinkan pengguna berinteraksi dengan informasi secara percakapan. Dengan menyebarkan solusi ini, Anda dapat membuat chatbot tingkat lanjut dan agen interaktif yang memahami pertanyaan pengguna, memberikan jawaban yang tepat, dan menyesuaikan dengan mengubah persyaratan informasi.

Prasyarat

  • Versi cURL saat ini. Beberapa sakelar baris perintah digunakan dalam panduan cepat, yang dicatat dalam dokumentasi cURL.
  • Langganan Azure - Buat langganan secara gratis
  • Jawaban atas pertanyaan kustom memerlukan sumber daya Bahasa dengan fitur jawaban atas pertanyaan kustom yang diaktifkan untuk menghasilkan kunci API dan titik akhir.
    • Setelah sumber daya Bahasa Anda disampaikan, pilih Buka sumber daya. Anda memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menyambungkan ke API. Tempelkan kunci dan titik akhir Anda ke dalam kode nanti di mulai cepat.
  • Buat sumber daya Bahasa dengan Azure CLI dan berikan properti berikut: --api-properties qnaAzureSearchEndpointId=/subscriptions/<azure-subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Search/searchServices/<azure-search-service-name> qnaAzureSearchEndpointKey=<azure-search-service-auth-key>
  • Proyek yang sudah ada untuk dikueri. Jika Anda belum mengatur proyek, Anda dapat mengikuti petunjuk di Panduan Cepat Language Studio. Atau tambahkan proyek yang menggunakan URL Panduan Pengguna Surface ini sebagai sumber data.

Persiapan

Membuat variabel lingkungan

Aplikasi Anda harus diautentikasi untuk mengirim permintaan API. Untuk produksi, gunakan cara yang aman dalam menyimpan dan mengakses kredensial Anda. Dalam contoh ini, Anda akan menulis kredensial Anda ke variabel lingkungan pada komputer lokal yang menjalankan aplikasi.

Untuk mengatur variabel lingkungan untuk kunci sumber daya Bahasa Anda, buka jendela konsol, dan ikuti instruksi untuk sistem operasi dan lingkungan pengembangan Anda.

  • Untuk mengatur LANGUAGE_KEY variabel lingkungan, ganti your-key dengan salah satu kunci untuk sumber daya Anda.
  • Untuk mengatur LANGUAGE_ENDPOINT variabel lingkungan, ganti your-endpoint dengan titik akhir untuk sumber daya Anda.

Penting

Kami merekomendasikan autentikasi ID Microsoft Entra dengan identitas terkelola untuk sumber daya Azure untuk menghindari penyimpanan kredensial dengan aplikasi Anda yang berjalan di cloud.

Gunakan kunci API dengan hati-hati. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik. Jika menggunakan kunci API, simpan dengan aman di Azure Key Vault, putar kunci secara teratur, dan batasi akses ke Azure Key Vault menggunakan kontrol akses berbasis peran dan pembatasan akses jaringan. Untuk informasi selengkapnya tentang menggunakan kunci API dengan aman di aplikasi Anda, lihat Kunci API dengan Azure Key Vault.

Untuk informasi selengkapnya tentang keamanan layanan AI, lihat Mengautentikasi permintaan ke layanan Azure AI.

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Catatan

Jika Anda hanya perlu mengakses variabel lingkungan di konsol yang sedang berjalan saat ini, Anda dapat mengatur variabel lingkungan dengan set alih-alih setx.

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang perlu membaca variabel lingkungan, termasuk jendela konsol. Misalnya, jika Anda menggunakan Visual Studio sebagai editor Anda, restart Visual Studio sebelum menjalankan contoh.

Mengkueri proyek

Membuat jawaban dari proyek

Untuk menjalankan kueri pada proyek pertanyaan khusus dengan REST API dan cURL, Anda memerlukan informasi berikut:

Nama variabel Nilai
Endpoint Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Atau Anda dapat menemukan nilai dalam Language Studio>jawaban pertanyaan>Terapan proyek>Dapatkan URL prediksi. Contoh titik akhir adalah: https://southcentralus.cognitiveservices.azure.com/
API-Key Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Anda dapat menggunakan Key1 atau Key2. Selalu memiliki dua kunci yang valid untuk rotasi kunci yang selalu aman dengan waktu henti nol. Atau Anda dapat menemukan nilai dalam Language Studio>jawaban pertanyaan>Terapan proyek>Dapatkan URL prediksi. Nilai kunci adalah bagian dari permintaan sampel.
Project Nama proyek jawaban atas pertanyaan kustom Anda.
Deployment Ada dua kemungkinan nilai: test, dan production. productionbergantung pada Anda menyebarkan proyek Anda darijawaban atas pertanyaan>> proyek.

Perintah cURL dijalankan dari shell BASH. Edit perintah ini dengan nama sumber daya, kunci sumber daya, dan nilai JSON dan ukuran JSON Anda sendiri.

curl -X POST -H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" -H "Content-Type: application/json" -d '{
  "question": "How much battery life do I have left?"
  }'  '$LANGUAGE_ENDPOINT.cognitiveservices.azure.com/language/:query-knowledgebases?projectName={YOUR_PROJECT_NAME}&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'

Saat Menjalankan kode, jika Anda menggunakan sumber data dari prasyarat, Anda mendapatkan jawaban yang terlihat sebagai berikut:

{
"answers": [
    {
      "questions": [
        "Check battery level"
      ],
      "answer": "If you want to see how much battery you have left, go to **Start  **> **Settings  **> **Devices  **> **Bluetooth & other devices  **, then find your pen. The current battery level will appear under the battery icon.",
      "confidenceScore": 0.9185,
      "id": 101,
      "source": "https://support.microsoft.com/en-us/surface/how-to-use-your-surface-pen-8a403519-cd1f-15b2-c9df-faa5aa924e98",
      "metadata": {},
      "dialog": {
        "isContextOnly": false,
        "prompts": []
      }
    }
  ]
}

confidenceScore menampilkan nilai antara 0 dan 1. Pertimbangkan skor keyakinan sebagai persentase dengan mengalikannya dengan 100. Misalnya, skor keyakinan 0,9185 menunjukkan bahwa sistem jawaban atas pertanyaan kustom adalah 91,85% yakin bahwa responsnya benar berdasarkan informasi proyek.

Jika ingin mengecualikan jawaban yang skor keyakinannya berada di bawah ambang, Anda dapat menambahkan parameter confidenceScoreThreshold.

curl -X POST -H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" -H "Content-Type: application/json" -d '{
  "question": "How much battery life do I have left?",
  "confidenceScoreThreshold": "0.95",
  }'  '$LANGUAGE_ENDPOINT.cognitiveservices.azure.com//language/:query-knowledgebases?projectName=Sample-project&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'

Karena kita tahu dari eksekusi kode sebelumnya bahwa skor keyakinan kita adalah: .9185 mengatur ambang batas untuk .95 menghasilkan jawaban default yang dikembalikan.

{
  "answers": [
    {
      "questions": [],
      "answer": "No good match found in KB",
      "confidenceScore": 0.0,
      "id": -1,
      "metadata": {}
    }
  ]
}

Teks kueri tanpa proyek

Anda juga dapat menggunakan jawaban atas pertanyaan kustom tanpa proyek dengan REST API jawaban atas pertanyaan kustom bawaan, yang dipanggil melalui query-text. Dalam hal ini, Anda memberikan tanya jawab dengan menyertakan pertanyaan dan catatan teks terkait yang ingin Anda telusuri jawabannya pada saat permintaan dikirim.

Untuk contoh ini, Anda hanya perlu mengubah variabel API KEY dan ENDPOINT.

curl -X POST -H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" -H "Content-Type: application/json" -d '{
"question":"How long does it takes to charge a surface?",
"records":[
{"id":"doc1","text":"Power and charging.It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. It can take longer if you\u0027re using your Surface for power-intensive activities like gaming or video streaming while you\u0027re charging it"},
{"id":"doc2","text":"You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface."}],
"language":"en",
"stringIndexType":"Utf16CodeUnit"
}'  '$LANGUAGE_ENDPOINT.cognitiveservices.azure.com/language/:query-text?&api-version=2021-10-01'

Contoh ini mengembalikan hasil dari:

{  
"answers": [
    {
      "answer": "Power and charging.It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it",
      "confidenceScore": 0.9118788838386536,
      "id": "doc1",
      "answerSpan": {
        "text": "two to four hours",
        "confidenceScore": 0.9850527,
        "offset": 27,
        "length": 18
      },
      "offset": 0,
      "length": 243
    },
    {
      "answer": "It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it",
      "confidenceScore": 0.052793052047491074,
      "id": "doc1",
      "answerSpan": {
        "text": "longer",
        "confidenceScore": 0.6694634,
        "offset": 11,
        "length": 7
      },
      "offset": 109,
      "length": 134
    },
    {
      "answer": "You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface.",
      "confidenceScore": 0.017600709572434425,
      "id": "doc2",
      "answerSpan": {
        "text": "USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. The USB port on the power supply is only for charging",
        "confidenceScore": 0.1544854,
        "offset": 15,
        "length": 165
      },
      "offset": 0,
      "length": 280
    }
  ]
}

Gunakan panduan mulai cepat ini untuk pustaka klien menjawab pertanyaan kustom di .NET:

  • Dapatkan jawaban dari proyek.
  • Mendapatkan jawaban dari isi teks yang Anda kirim bersama dengan pertanyaan Anda.
  • Dapatkan tingkat kepercayaan untuk jawaban atas pertanyaan Anda.

Dokumentasi referensi | Paket (NuGet) | Sampel | Kode sumber pustaka

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • IDE Visual Studio atau versi .NET Core saat ini.
  • Jawaban atas pertanyaan kustom memerlukan sumber daya Bahasa dengan fitur jawaban atas pertanyaan kustom yang diaktifkan untuk menghasilkan kunci API dan titik akhir.
    • Setelah sumber daya Bahasa Anda disampaikan, pilih Buka sumber daya. Anda memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menyambungkan ke API. Tempelkan kunci dan titik akhir Anda ke dalam kode nanti di mulai cepat.
  • Buat sumber daya Bahasa dengan Azure CLI dan berikan properti berikut: --api-properties qnaAzureSearchEndpointId=/subscriptions/<azure-subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Search/searchServices/<azure-search-service-name> qnaAzureSearchEndpointKey=<azure-search-service-auth-key>
  • Proyek yang sudah ada untuk dikueri. Jika Anda tidak memiliki proyek, Anda dapat mengikuti instruksi di mulai cepat Language Studio. Atau tambahkan proyek yang menggunakan URL Panduan Pengguna Surface ini sebagai sumber data.

Persiapan

Membuat variabel lingkungan

Aplikasi Anda harus diautentikasi untuk mengirim permintaan API. Untuk produksi, gunakan cara yang aman dalam menyimpan dan mengakses kredensial Anda. Dalam contoh ini, Anda akan menulis kredensial Anda ke variabel lingkungan pada komputer lokal yang menjalankan aplikasi.

Untuk mengatur variabel lingkungan untuk kunci sumber daya Bahasa Anda, buka jendela konsol, dan ikuti instruksi untuk sistem operasi dan lingkungan pengembangan Anda.

  • Untuk mengatur LANGUAGE_KEY variabel lingkungan, ganti your-key dengan salah satu kunci untuk sumber daya Anda.
  • Untuk mengatur LANGUAGE_ENDPOINT variabel lingkungan, ganti your-endpoint dengan titik akhir untuk sumber daya Anda.

Penting

Kami merekomendasikan autentikasi ID Microsoft Entra dengan identitas terkelola untuk sumber daya Azure untuk menghindari penyimpanan kredensial dengan aplikasi Anda yang berjalan di cloud.

Gunakan kunci API dengan hati-hati. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik. Jika menggunakan kunci API, simpan dengan aman di Azure Key Vault, putar kunci secara teratur, dan batasi akses ke Azure Key Vault menggunakan kontrol akses berbasis peran dan pembatasan akses jaringan. Untuk informasi selengkapnya tentang menggunakan kunci API dengan aman di aplikasi Anda, lihat Kunci API dengan Azure Key Vault.

Untuk informasi selengkapnya tentang keamanan layanan AI, lihat Mengautentikasi permintaan ke layanan Azure AI.

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Catatan

Jika Anda hanya perlu mengakses variabel lingkungan di konsol yang sedang berjalan saat ini, Anda dapat mengatur variabel lingkungan dengan set alih-alih setx.

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang perlu membaca variabel lingkungan, termasuk jendela konsol. Misalnya, jika Anda menggunakan Visual Studio sebagai editor Anda, restart Visual Studio sebelum menjalankan contoh.

CLI

Di jendela konsol (seperti cmd, PowerShell, atau Bash), gunakan perintah dotnet new untuk membuat aplikasi konsol baru dengan nama question-answering-quickstart. Perintah ini membuat proyek C# "Halo Dunia" sederhana dengan satu file sumber: program.cs.

dotnet new console -n question-answering-quickstart

Ubah direktori Anda ke folder aplikasi yang baru dibuat. Anda dapat membangun aplikasi dengan:

dotnet build

Output build harus bebas dari peringatan atau kesalahan.

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

Di dalam direktori aplikasi, instal pustaka klien penjawab pertanyaan kustom untuk .NET dengan perintah berikut:

dotnet add package Azure.AI.Language.QuestionAnswering

Mengkueri proyek

Membuat jawaban dari proyek

Contoh berikut memungkinkan Anda mengkueri proyek menggunakan GetAnswers untuk mendapatkan jawaban atas pertanyaan Anda.

Anda perlu memperbarui kode dan memberikan nilai Anda sendiri untuk variabel berikut:

Nama variabel Nilai
endpoint Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Atau Anda dapat menemukan nilai dalam Language Studio>jawaban pertanyaan>Terapan proyek>Dapatkan URL prediksi. Contoh titik akhir adalah: https://southcentralus.cognitiveservices.azure.com/
credential Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Anda dapat menggunakan Key1 atau Key2. Selalu memiliki dua kunci yang valid untuk rotasi kunci yang selalu aman dengan waktu henti nol. Atau Anda dapat menemukan nilai dalam Language Studio>jawaban pertanyaan>Terapan proyek>Dapatkan URL prediksi. Nilai kunci adalah bagian dari permintaan sampel.
projectName Nama proyek jawaban atas pertanyaan kustom Anda.
deploymentName Ada dua kemungkinan nilai: test, dan production. productionbergantung pada Anda menyebarkan proyek Anda dariproyek Penyebaran>jawaban pertanyaan>.

Penting

Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Untuk informasi selengkapnya, lihat Keamanan Foundry Tools.

Dari direktori proyek, buka file program.cs dan ganti dengan kode berikut:

using Azure;
using Azure.AI.Language.QuestionAnswering;
using System;

namespace question_answering
{
    class Program
    {
        static void Main(string[] args)
        {

            // This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
            Uri endpoint = new Uri("LANGUAGE_ENDPOINT");
            AzureKeyCredential credential = new AzureKeyCredential("LANGUAGE_KEY");
            string projectName = "{YOUR-PROJECT-NAME}";
            string deploymentName = "production";

            string question = "How long should my Surface battery last?";

            QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);
            QuestionAnsweringProject project = new QuestionAnsweringProject(projectName, deploymentName);

            Response<AnswersResult> response = client.GetAnswers(question, project);

            foreach (KnowledgeBaseAnswer answer in response.Value.Answers)
            {
                Console.WriteLine($"Q:{question}");
                Console.WriteLine($"A:{answer.Answer}");
            }
        }
    }
}

Sambil mengkode secara langsung variabel untuk contoh kita. Untuk produksi, pertimbangkan penggunaan cara aman untuk menyimpan dan mengakses informasi masuk Anda. Misalnya, brankas kunci Azure menyediakan penyimpanan kunci yang aman.

Setelah memperbarui Program.cs dan mengganti nilai variabel yang benar. Menjalankan aplikasi dengan perintah dotnet run dari direktori aplikasi Anda.

dotnet run

Responsnya terlihat sebagai berikut:

Q: How much battery life do I have left?
A: If you want to see how much battery you have left, go to **Start  **> **Settings  **> **Devices  **> **Bluetooth & other devices  **, then find your pen. The current battery level will appear under the battery icon.

Untuk informasi tentang skor keyakinan, tambahkan pernyataan cetak berikut di bawah pernyataan cetak yang ada:

Console.WriteLine($"Q:{question}");
Console.WriteLine($"A:{answer.Answer}");
Console.WriteLine($"({answer.Confidence})"); // add this line

Jika Anda menjalankan dotnet run lagi, Anda sekarang menerima hasil dengan skor keyakinan:

Q:How much battery life do I have left?
A:If you want to see how much battery you have left, go to **Start  **> **Settings  **> **Devices  **> **Bluetooth & other devices  **, then find your pen. The current battery level will appear under the battery icon.
(0.9185)

Pertimbangkan skor keyakinan sebagai persentase dengan mengalikannya dengan 100. Misalnya, skor keyakinan 0,9185 menunjukkan bahwa sistem jawaban atas pertanyaan kustom adalah 91,85% yakin bahwa responsnya benar berdasarkan informasi proyek.

Jika Anda ingin mengecualikan jawaban yang skor keyakinannya berada di bawah ambang tertentu, gunakan AnswerOptions untuk menambahkan properti ConfidenceScoreThreshold.

QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);
QuestionAnsweringProject project = new QuestionAnsweringProject(projectName, deploymentName);
AnswersOptions options = new AnswersOptions(); //Add this line
options.ConfidenceThreshold = 0.95; //Add this line

Response<AnswersResult> response = client.GetAnswers(question, project, options); //Add the additional options parameter

Karena kita tahu dari eksekusi kode sebelumnya bahwa skor keyakinan kita adalah: .9185 mengatur ambang batas untuk .95 menghasilkan jawaban default yang dikembalikan.

Q:How much battery life do I have left?
A:No good match found in KB
(0)

Teks kueri tanpa proyek

Anda juga dapat menggunakan jawaban atas pertanyaan kustom tanpa proyek dengan GetAnswersFromText. Dalam hal ini, Anda memberikan jawaban atas pertanyaan kustom dengan pertanyaan dan rekaman teks terkait yang ingin Anda cari jawabannya pada saat permintaan dikirim.

Untuk contoh ini, Anda hanya perlu mengubah variabel endpoint dan credential.

using Azure;
using Azure.AI.Language.QuestionAnswering;
using System;
using System.Collections.Generic;


namespace questionansweringcsharp
{
    class Program
    {
        static void Main(string[] args)
        {

            Uri endpoint = new Uri("https://{YOUR-ENDPOINT}.cognitiveservices.azure.com/");
            AzureKeyCredential credential = new AzureKeyCredential("YOUR-LANGUAGE-RESOURCE-KEY");
            QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);

            IEnumerable<TextDocument> records = new[]
            {
                new TextDocument("doc1", "Power and charging.It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. " +
                         "It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it"),
                new TextDocument("doc2", "You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. " +
                         "The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface."),
            };

            AnswersFromTextOptions options = new AnswersFromTextOptions("How long does it takes to charge a surface?", records);
            Response<AnswersFromTextResult> response = client.GetAnswersFromText(options);

           foreach (TextAnswer answer in response.Value.Answers)
            {
                if (answer.Confidence > .9)
                {
                    string BestAnswer = response.Value.Answers[0].Answer;

                    Console.WriteLine($"Q:{options.Question}");
                    Console.WriteLine($"A:{BestAnswer}");
                    Console.WriteLine($"Confidence Score: ({response.Value.Answers[0].Confidence:P2})"); //:P2 converts the result to a percentage with 2 decimals of accuracy. 
                    break;
                }
                else
                {
                    Console.WriteLine($"Q:{options.Question}");
                    Console.WriteLine("No answers met the requested confidence score.");
                    break;
                }
            }

        }
    }
}

Untuk menjalankan kode, ganti Program.cs dengan konten blok skrip dan ubah endpoint variabel dan credential agar sesuai dengan sumber daya bahasa yang Anda buat sebagai bagian dari prasyarat.

Dalam hal ini, kami mengulangi semua respons dan hanya mengembalikan respons dengan skor kepercayaan tertinggi yang melebihi 0,9. Untuk memahami lebih lanjut tentang opsi yang tersedia dengan GetAnswersFromText.

Gunakan panduan memulai cepat ini untuk pustaka klien penjawab pertanyaan khusus untuk Python:

  • Dapatkan jawaban dari proyek.
  • Mendapatkan jawaban dari isi teks yang Anda kirim bersama dengan pertanyaan Anda.
  • Dapatkan tingkat kepercayaan untuk jawaban atas pertanyaan Anda.

Paket (PyPI) | Sampel | Kode sumber pustaka

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Python 3.x
  • Jawaban atas pertanyaan kustom memerlukan sumber daya Bahasa dengan fitur jawaban atas pertanyaan kustom yang diaktifkan untuk menghasilkan kunci API dan titik akhir.
    • Setelah sumber daya Bahasa Anda disampaikan, pilih Buka sumber daya. Anda memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menyambungkan ke API. Tempelkan kunci dan titik akhir Anda ke dalam kode nanti di mulai cepat.
  • Buat sumber daya Bahasa dengan Azure CLI dan berikan properti berikut: --api-properties qnaAzureSearchEndpointId=/subscriptions/<azure-subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Search/searchServices/<azure-search-service-name> qnaAzureSearchEndpointKey=<azure-search-service-auth-key>
  • Proyek yang sudah ada untuk dikueri. Jika Anda tidak memiliki proyek, Anda dapat mengikuti instruksi di mulai cepat Language Studio. Atau tambahkan proyek yang menggunakan URL Panduan Pengguna Surface ini sebagai sumber data.

Persiapan

Memasang pustaka klien

Setelah memasang Python, Anda dapat memasang pustaka klien dengan:

pip install azure-ai-language-questionanswering

Mengkueri proyek

Membuat jawaban dari proyek

Contoh ini memungkinkan Anda mengkueri proyek menggunakan get_answers untuk mendapatkan jawaban atas pertanyaan Anda. Anda dapat menyalin kode ini ke file .py khusus atau ke dalam sel di Jupyter Notebook/Lab.

Anda perlu memperbarui kode dan memberikan nilai Anda sendiri untuk variabel berikut.

Nama variabel Nilai
endpoint Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Atau Anda dapat menemukan nilai dalam Language Studio>jawaban pertanyaan>Terapan proyek>Dapatkan URL prediksi. Contoh titik akhir adalah: https://southcentralus.cognitiveservices.azure.com/
credential Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Anda dapat menggunakan Key1 atau Key2. Selalu memiliki dua kunci yang valid untuk rotasi kunci yang selalu aman dengan waktu henti nol. Atau Anda dapat menemukan nilai dalam Language Studio>jawaban pertanyaan>Terapan proyek>Dapatkan URL prediksi. Nilai kunci adalah bagian dari permintaan sampel.
knowledge_base_project Nama proyek jawaban atas pertanyaan Anda.
deployment Ada dua kemungkinan nilai: test, dan production. production.

Penting

Jangan lupa menghapus kunci dari kode setelah Anda selesai, dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Untuk informasi selengkapnya, lihat artikel keamanan Foundry Tools.

from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient

endpoint = "https://{YOUR-ENDPOINT}.cognitiveservices.azure.com/"
credential = AzureKeyCredential("{YOUR-LANGUAGE-RESOURCE-KEY}")
knowledge_base_project = "{YOUR-PROJECT-NAME}"
deployment = "production"

def main():
    client = QuestionAnsweringClient(endpoint, credential)
    with client:
        question="How much battery life do I have left?"
        output = client.get_answers(
            question = question,
            project_name=knowledge_base_project,
            deployment_name=deployment
        )
    print("Q: {}".format(question))
    print("A: {}".format(output.answers[0].answer))

if __name__ == '__main__':
    main()

Sambil mengkode secara langsung variabel untuk contoh kita. Untuk produksi, pertimbangkan penggunaan cara aman untuk menyimpan dan mengakses informasi masuk Anda. Misalnya, brankas kunci Azure menyediakan penyimpanan kunci yang aman.

Saat Menjalankan kode, jika Anda menggunakan sumber data dari prasyarat, Anda mendapatkan jawaban yang terlihat sebagai berikut:

Q: How much battery life do I have left?
A: If you want to see how much battery you have left, go to **Start  **> **Settings  **> **Devices  **> **Bluetooth & other devices  **, then find your pen. The current battery level will appear under the battery icon.

Untuk informasi tentang skor rahasia, tambahkan pernyataan cetak berikut:

print("Q: {}".format(question))
print("A: {}".format(output.answers[0].answer))
print("Confidence Score: {}".format(output.answers[0].confidence)) # add this line 

Anda menerima hasil dengan skor keyakinan:

Q: How much battery life do I have left?
A: If you want to see how much battery you have left, go to **Start  **> **Settings  **> **Devices  **> **Bluetooth & other devices  **, then find your pen. The current battery level will appear under the battery icon.
Confidence Score: 0.9185

Pertimbangkan skor keyakinan sebagai persentase dengan mengalikannya dengan 100. Misalnya, skor keyakinan 0,9185 menunjukkan bahwa sistem jawaban atas pertanyaan kustom adalah 91,85% yakin bahwa responsnya benar berdasarkan informasi proyek.

Jika Anda ingin mengecualikan jawaban di mana skor keyakinan berada di bawah ambang batas tertentu, Anda dapat memodifikasi AnswerOptions untuk menambahkan confidence_threshold parameter.

        output = client.get_answers(
            confidence_threshold = 0.95, #add this line
            question = question,
            project_name=knowledge_base_project,
            deployment_name=deployment
        )

Karena kita tahu dari eksekusi kode sebelumnya bahwa skor keyakinan kita adalah: .9185 mengatur ambang batas untuk .95 menghasilkan jawaban default yang dikembalikan.

Q: How much battery life do I have left?
A: No good match found in KB
Confidence Score: 0.0

Teks kueri tanpa proyek

Anda juga dapat menggunakan jawaban atas pertanyaan kustom tanpa proyek dengan get_answers_from_text. Dalam hal ini, Anda memberikan jawaban atas pertanyaan kustom dengan pertanyaan dan rekaman teks terkait yang ingin Anda cari jawabannya pada saat permintaan dikirim.

Untuk contoh ini, Anda hanya perlu mengubah variabel endpoint dan credential.

import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient
from azure.ai.language.questionanswering import models as qna

endpoint = "https://{YOUR-ENDPOINT}.cognitiveservices.azure.com/"
credential = AzureKeyCredential("YOUR-LANGUAGE-RESOURCE-KEY")

def main():
    client = QuestionAnsweringClient(endpoint, credential)
    with client:
        question="How long does it takes to charge a surface?"
        input = qna.AnswersFromTextOptions(
            question=question,
            text_documents=[
                "Power and charging. It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. " +
                "It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it.",
                "You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. " +
                "The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface.",
            ]
        )


        output = client.get_answers_from_text(input)

    best_answer = [a for a in output.answers if a.confidence > 0.9][0]
    print(u"Q: {}".format(input.question))
    print(u"A: {}".format(best_answer.answer))
    print("Confidence Score: {}".format(output.answers[0].confidence))

if __name__ == '__main__':
    main()

Anda dapat menyalin kode ini ke file .py khusus atau ke sel baru di Jupyter Notebook/Lab. Contoh ini mengembalikan hasil dari:

Q: How long does it takes to charge surface?
A: Power and charging. It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it.
Confidence Score: 0.9254655838012695

Dalam hal ini, kami mengulangi semua respons dan hanya mengembalikan respons dengan skor kepercayaan tertinggi yang melebihi 0,9. Untuk memahami selengkapnya tentang opsi yang tersedia dengan get_answers_from_text, tinjau parameter AnswersFromTextOptions.

Membersihkan sumber daya

Untuk membersihkan dan menghapus sumber daya Azure AI, Anda dapat menghapus sumber daya individual atau seluruh grup sumber daya. Jika Anda menghapus grup sumber daya, semua sumber daya yang terkandung di dalamnya juga akan dihapus.

Mempelajari REST API

Langkah berikutnya