Bagikan melalui


Mulai cepat: jawaban atas pertanyaan kustom

Catatan

Apakah Anda ingin memigrasikan beban kerja Anda dari QnA Maker? Lihat panduan migrasi kami untuk informasi tentang perbandingan fitur dan langkah-langkah migrasi.

Mulailah dengan pustaka klien penjawab pertanyaan kustom. Ikuti langkah-langkah berikut untuk memasang paket dan mencoba contoh kode untuk tugas-tugas dasar.

Anda dapat membuat proyek jawaban atas pertanyaan kustom dari konten Anda sendiri, seperti FAQ atau manual produk. Artikel ini menyertakan contoh pembuatan proyek jawaban atas pertanyaan kustom dari manual produk, untuk menjawab pertanyaan.

Prasyarat

  • Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
  • Sumber daya bahasa pemrogram dengan fitur jawaban atas pertanyaan kustom diaktifkan. Ingat ID Microsoft Entra, Langganan, nama sumber daya bahasa yang Anda pilih saat membuat sumber daya.

Membuat proyek jawaban atas pertanyaan kustom pertama Anda

  1. Masuk ke Language Studio dengan mandat Azure Anda.

  2. Gulir ke bawah ke bagian Tanya Jawab dan pilih Buka jawaban atas pertanyaan kustom.

    Buka jawaban atas pertanyaan kustom

  3. Jika sumber daya Anda belum tersambung ke Azure Search, pilih Sambungkan ke Azure Search. Tindakan ini akan membuka tab browser baru ke panel Fitur sumber daya Anda di portal Microsoft Azure.

    Menyambungkan ke Azure Search

  4. Pilih Aktifkan jawaban atas pertanyaan kustom, pilih sumber daya Azure Search untuk ditautkan, lalu pilih Terapkan.

    Mengaktifkan jawaban atas pertanyaan kustom

  5. Kembali ke tab Language Studio. Anda mungkin perlu me-refresh halaman ini untuk mendaftarkan perubahan ke sumber daya Anda. Pilih Buat proyek baru.

  6. Pilih opsi Saya ingin mengatur bahasa untuk semua proyek yang dibuat dalam sumber daya ini> pilih Inggris> Pilih Berikutnya.

  7. Masukkan nama proyek dari Sampel-proyek, deskripsi Proyek jawaban atas pertanyaan pertama saya, dan biarkan jawaban default dengan pengaturan Jawbaan tidak ditemukan.

  8. Tinjau pilihan Anda, lalu pilih Buat proyek

  9. Dari halaman Kelola sumber pilih Tambahkan sumber>URL.

  10. Pilih Tambahkan url masukkan nilai berikut lalu pilih Tambahkan semua:

    Nama URL Nilai URL
    Panduan Pengguna Surface Book https://download.microsoft.com/download/7/B/1/7B10C82E-F520-4080-8516-5CF0D803EEE0/surface-book-user-guide-EN.pdf

    Proses ekstraksi membutuhkan beberapa saat untuk membaca dokumen dan mengidentifikasi pertanyaan dan jawaban.

    Setelah berhasil menambahkan sumber, Anda kemudian dapat mengedit konten sumber untuk menambahkan lebih banyak set tanya jawab kustom.

Menguji proyek Anda

  1. Pilih tautan ke sumber Anda, ini akan membuka halaman edit proyek.

  2. Pilih Uji dari bilah menu > Masukkan pertanyaan Bagaimana cara menyiapkan Surface Book saya?. Jawaban akan dihasilkan berdasarkan pasangan tanya jawab yang secara otomatis diidentifikasi dan diekstraksi dari URL sumber Anda:

    Menguji antarmuka obrolan pertanyaan

    Jika Anda mencentang kotak untuk menyertakan respons jawaban singkat, Anda juga akan melihat jawaban yang tepat, jika tersedia, bersama dengan halaman jawaban di panel uji saat Anda mengajukan pertanyaan.

  3. Pilih Inspeksi untuk memeriksa respons secara lebih rinci. Jendela pengujian digunakan untuk menguji perubahan pada proyek Anda sebelum proyek disebarkan.

    Melihat interval keyakinan

    Dari antarmuka Periksa, Anda dapat melihat tingkat keyakinan bahwa respons ini akan menjawab pertanyaan dan langsung mengedit pasangan respons pertanyaan dan jawaban yang diberikan.

Menyebarkan proyek Anda

  1. Pilih ikon Sebarkan proyek untuk memasukkan menu sebarkan proyek.

    Menyebarkan proyek

    Saat Anda menyebarkan proyek, konten proyek Anda berpindah dari indeks test ke indeks prod di Azure Search.

  2. Pilih Sebarkan>, lalu pilih Sebarkan lagi jika diminta.

    Penyebaran berhasil

    Proyek Anda sekarang berhasil disebarkan. Anda dapat menggunakan titik akhir untuk menjawab pertanyaan di aplikasi kustom Anda sendiri untuk menjawab atau di bot.

Prasyarat

  • Versi cURL saat ini. Beberapa sakelar baris perintah digunakan dalam mulai cepat, yang tercatat 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 Anda disebarkan, pilih Buka sumber daya. Anda akan memerlukan kunci dan titik akhir sumber daya yang Anda buat untuk tersambung ke API. Tempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
  • Untuk membuat sumber daya Bahasa dengan Azure CLI , berikan properti tambahan 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 belum menyiapkan proyek, Anda dapat mengikuti instruksi di mulai cepat Language Studio. Atau tambahkan proyek yang menggunakan URL Panduan Pengguna Surface ini sebagai sumber data.

Menyiapkan

Membuat variabel lingkungan

Aplikasi Anda harus diautentikasi untuk mengirim permintaan API. Untuk produksi, gunakan cara yang aman dalam menyimpan dan mengakses info masuk 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

Jika Anda menggunakan kunci API, simpan dengan aman di tempat lain, seperti di Azure Key Vault. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik.

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, hidupkan ulang Visual Studio sebelum menjalankan contoh.

Mengkueri proyek

Membuat jawaban dari proyek

Untuk mengkueri proyek jawaban atas pertanyaan kustom 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 jawaban pertanyaan Language Studio>,>Terapkan proyek>Dapatkan URL prediksi. Contoh titik akhir adalah: https://southcentralus.api.cognitive.microsoft.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 jawaban pertanyaan Language Studio>,>Terapkan 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 telah menyebarkan proyek Anda dari proyek Penyebaran> jawaban pertanyaan Language Studio.>

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.api.cognitive.microsoft.com/language/:query-knowledgebases?projectName={YOUR_PROJECT_NAME}&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'

Saat Anda menjalankan kode di atas, jika Anda menggunakan sumber data prasyarat, Anda akan mendapatkan jawaban seperti 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. Anda dapat menganggap ini seperti persentase dan mengalikan dengan 100 sehingga skor keyakinan 0,9185 berarti jawaban atas pertanyaan kustom adalah 91,85% yakin ini adalah jawaban yang benar untuk pertanyaan berdasarkan 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.api.cognitive.microsoft.com//language/:query-knowledgebases?projectName=Sample-project&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'

Sejak kami mengetahui skor keyakinan kami di eksekusi kode sebelumnya, kami tahu bahwa jika: .9185 mengatur ambang ke .95, maka akan 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 jawaban atas pertanyaan dengan pertanyaan dan catatan teks terkait yang ingin Anda cari 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.api.cognitive.microsoft.com/language/:query-text?&api-version=2021-10-01'

Contoh ini akan 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 mulai cepat ini untuk pustaka klien jawaban atas pertanyaan kustom untuk .NET untuk:

  • Dapatkan jawaban dari proyek.
  • Mendapatkan jawaban dari isi teks yang Anda kirim bersama dengan pertanyaan Anda.
  • Mendapatkan skor keyakinan jawaban atas pertanyaan Anda.

Dokumentasi referensi | Paket (NuGet) | Sampel tambahan | 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 Anda disebarkan, pilih Buka sumber daya. Anda akan memerlukan kunci dan titik akhir sumber daya yang Anda buat untuk tersambung ke API. Tempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
  • Untuk membuat sumber daya Bahasa dengan Azure CLI , berikan properti tambahan 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 belum menyiapkan proyek, Anda dapat mengikuti instruksi di mulai cepat Language Studio. Atau tambahkan proyek yang menggunakan URL Panduan Pengguna Surface ini sebagai sumber data.

Menyiapkan

Membuat variabel lingkungan

Aplikasi Anda harus diautentikasi untuk mengirim permintaan API. Untuk produksi, gunakan cara yang aman dalam menyimpan dan mengakses info masuk 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

Jika Anda menggunakan kunci API, simpan dengan aman di tempat lain, seperti di Azure Key Vault. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik.

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, hidupkan ulang 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 tidak boleh berisi 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 di bawah ini akan memungkinkan Anda untuk mengkueri proyek menggunakan GetAnswers untuk mendapatkan jawaban atas pertanyaan Anda.

Anda perlu memperbarui kode di bawah ini 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 jawaban pertanyaan Language Studio>,>Terapkan proyek>Dapatkan URL prediksi. Contoh titik akhir adalah: https://southcentralus.api.cognitive.microsoft.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 jawaban pertanyaan Language Studio>,>Terapkan 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 telah menyebarkan proyek Anda dari proyek Penyebaran> jawaban pertanyaan Language Studio.>

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. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.

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}");
            }
        }
    }
}

Sementara kami melakukan pengkodean secara permanen terhadap variabel contoh kami. 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 dengan kode di atas dan mengganti nilai variabel yang benar. Menjalankan aplikasi dengan perintah dotnet run dari direktori aplikasi Anda.

dotnet run

Responsnya akan 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 seberapa yakin jawaban atas pertanyaan kustom adalah bahwa ini adalah respons yang benar menambahkan pernyataan cetak tambahan 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 akan 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)

Skor keyakinan mengembalikan nilai antara 0 dan 1. Anda dapat menganggap ini seperti persentase dan mengalikan dengan 100 sehingga skor keyakinan 0,9185 berarti jawaban atas pertanyaan kustom adalah 91,85% yakin ini adalah jawaban yang benar untuk pertanyaan berdasarkan 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

Sejak kami mengetahui skor keyakinan kami di eksekusi kode sebelumnya, kami tahu bahwa jika: .9185 mengatur ambang ke .95, maka akan 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}.api.cognitive.microsoft.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 di atas, ganti Program.cs dengan konten blok skrip di atas dan ubah variabel endpoint 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 mulai cepat ini untuk pustaka klien jawaban atas pertanyaan kustom untuk Python untuk:

  • Dapatkan jawaban dari proyek.
  • Mendapatkan jawaban dari isi teks yang Anda kirim bersama dengan pertanyaan Anda.
  • Mendapatkan skor keyakinan jawaban atas pertanyaan Anda.

Dokumentasi referensi | Paket (PyPI) | Sampel tambahan | 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 Anda disebarkan, 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 ke dalam kode di bawah ini nanti di mulai cepat.
  • Untuk membuat sumber daya Bahasa dengan Azure CLI , berikan properti lain berikut ini: --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 belum menyiapkan proyek, Anda dapat mengikuti instruksi di mulai cepat Language Studio. Atau tambahkan proyek yang menggunakan URL Panduan Pengguna Surface ini sebagai sumber data.

Menyiapkan

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 di bawah ini akan 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 di bawah ini 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 jawaban pertanyaan Language Studio>,>Terapkan proyek>Dapatkan URL prediksi. Contoh titik akhir adalah: https://southcentralus.api.cognitive.microsoft.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 jawaban pertanyaan Language Studio>,>Terapkan 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. productionbergantung pada Anda telah menyebarkan proyek Anda dari proyek Penyebaran> jawaban pertanyaan Language Studio.>

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 layanan Azure AI.

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

endpoint = "https://{YOUR-ENDPOINT}.api.cognitive.microsoft.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()

Sementara kita hard coding 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 Anda menjalankan kode di atas, 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 seberapa yakin jawaban atas pertanyaan kustom adalah bahwa ini adalah respons yang benar menambahkan pernyataan cetak lain di bawah pernyataan cetak yang ada:

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

Anda sekarang akan 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

Skor keyakinan mengembalikan nilai antara 0 dan 1. Anda dapat menganggap ini seperti persentase dan mengalikan dengan 100 sehingga skor keyakinan 0,9185 berarti jawaban atas pertanyaan kustom adalah 91,85% yakin ini adalah jawaban yang benar untuk pertanyaan berdasarkan proyek.

Jika Anda ingin mengecualikan jawaban yang skor keyakinannya berada di bawah ambang tertentu, Anda dapat mengubah AnswerOptions untuk menambahkan parameter confidence_threshold.

        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}.api.cognitive.microsoft.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 lebih lanjut tentang opsi yang tersedia dengan get_answers_from_text, tinjau parameter AnswersFromTextOptions.

Membersihkan sumber daya

Jika Anda ingin membersihkan dan menghapus langganan layanan Azure AI, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya.

Mempelajari REST API

Untuk mempelajari tentang mengotomatiskan alur jawaban atas pertanyaan kustom Anda, lihat dokumentasi REST API. Saat ini fungsi penulisan hanya tersedia melalui REST API:

Langkah berikutnya