Aracılığıyla paylaş


bilgi bankası etkin öğrenme ile ilgili önerilen soruları kabul etme

Not

Soru-Cevap Oluşturma hizmeti 31 Mart 2025'te kullanımdan kaldırılıyor. Soru ve yanıtlama özelliğinin daha yeni bir sürümü artık Azure AI Dili'nin bir parçası olarak kullanılabilir. Dil Hizmeti'nin içindeki soru yanıtlama özellikleri için bkz . soru yanıtlama. 1 Ekim 2022'den itibaren yeni Soru-Cevap Oluşturma kaynakları oluşturamayacaksınız. Mevcut Soru-Cevap Oluşturma bilgi bankası soru yanıtlamaya geçirme hakkında bilgi için geçiş kılavuzuna bakın.

Etkin Öğrenme, öneriyi onayladıktan sonra Bilgi Bankası veya Arama Hizmeti'ni değiştirir, ardından kaydedip eğitebilirsiniz. Öneriyi onaylarsanız alternatif bir soru olarak eklenir.

Etkin öğrenmeyi açma

Önerilen soruları görmek için Soru-Cevap Oluşturma kaynağınız için etkin öğrenmeyi açmanız gerekir.

Önerilen soruları görüntüleme

  1. Önerilen soruları görmek için Bilgi bankası Düzenle sayfasında Görünüm Seçenekleri'ni ve ardından Etkin öğrenme önerilerini göster'i seçin. Soru ve yanıt çiftlerinden herhangi biri için öneri yoksa bu seçenek devre dışı bırakılır.

    Etkin öğrenmenin yeni soru alternatiflerini görmek için portalın Düzenle bölümünde Önerileri Göster'i seçin.

  2. Önerilere Göre Filtrele'yi seçerek yalnızca önerileri göstermek için bilgi bankası soru ve yanıt çiftleriyle filtreleyin.

    Yalnızca etkin öğrenmenin önerilen soru alternatiflerini görüntülemek için Önerilere göre filtrele iki durumlu düğmesini kullanın.

  3. Her Soru-Cevap çifti, soruyu kabul etmek için onay işareti olan yeni soru alternatiflerini veya önerileri reddetmek için bir x öneride bulunur. Soruyu eklemek için onay işaretini seçin.

    Yeşil onay işaretini veya kırmızı silme işaretini seçerek etkin öğrenmenin önerilen soru alternatiflerini seçin veya reddedin.

    Bağlam araç çubuğunda Tümünü ekle veya Tümünü reddet'i seçerek tüm önerileri ekleyebilir veya silebilirsiniz.

  4. Değişiklikleri bilgi bankası kaydetmek için Kaydet ve Eğit'i seçin.

  5. Değişikliklerin GenerateAnswer API'sinden kullanılabilir olmasını sağlamak için Yayımla'yı seçin.

    Her 30 dakikada bir 5 veya daha fazla benzer sorgu kümelendiğinde Soru-Cevap Oluşturma, kabul etmek veya reddetmek için alternatif sorular önerir.

Etkin öğrenme önerileri dışarı aktarılan bilgi bankası kaydedilir

Uygulamanızda etkin öğrenme etkinleştirildiğinde ve uygulamayı dışarı aktardığınızda, SuggestedQuestions tsv dosyasındaki sütun etkin öğrenme verilerini korur.

SuggestedQuestions sütunu örtük, autosuggestedve açık usersuggested geri bildirim bilgilerinin JSON nesnesidir. Kullanıcı tarafından gönderilen tek bir soru için bu JSON nesnesine help örnek olarak şu verilebilir:

[
    {
        "clusterHead": "help",
        "totalAutoSuggestedCount": 1,
        "totalUserSuggestedCount": 0,
        "alternateQuestionList": [
            {
                "question": "help",
                "autoSuggestedCount": 1,
                "userSuggestedCount": 0
            }
        ]
    }
]

Bu uygulamayı yeniden aktardığınızda, etkin öğrenme bilgi bankası için bilgi toplamaya ve öneriler önermeye devam eder.

Bottan GenerateAnswer ve Train API'lerini kullanmaya yönelik mimari akış

Bot veya başka bir istemci uygulaması, etkin öğrenmeyi kullanmak için aşağıdaki mimari akışı kullanmalıdır:

  1. Bot, generateAnswer API'siyle bilgi bankası yanıtını alır ve bir dizi yanıt almak için özelliğini kullanırtop.

  2. Bot, açık geri bildirimleri belirler:

    • Kendi özel iş mantığınızı kullanarak düşük puanları filtreleyin.
    • Botta veya istemci uygulamasında, kullanıcıya verilen olası yanıtların listesini görüntüleyin ve kullanıcının seçili yanıtını alın.
  3. Bot, Eğitim API'siyle seçili yanıtı Soru-Cevap Oluşturma'ya geri gönderir.

Birkaç eşleşen yanıt almak için GenerateAnswer isteğindeki en üstteki özelliği kullanın

Soru-Cevap Oluşturma'ya yanıt için soru gönderirken, top JSON gövdesinin özelliği döndürülecek yanıt sayısını ayarlar.

{
    "question": "wi-fi",
    "isTest": false,
    "top": 3
}

Kullanıcıya gösterilecek yanıtların listesini almak için score özelliğini iş mantığıyla birlikte kullanın

İstemci uygulaması (sohbet botu gibi) yanıtı aldığında, ilk 3 soru döndürülür. Puanlar score arasındaki yakınlığı analiz etmek için özelliğini kullanın. Bu yakınlık aralığı kendi iş mantığınıza göre belirlenir.

{
    "answers": [
        {
            "questions": [
                "Wi-Fi Direct Status Indicator"
            ],
            "answer": "**Wi-Fi Direct Status Indicator**\n\nStatus bar icons indicate your current Wi-Fi Direct connection status:  \n\nWhen your device is connected to another device using Wi-Fi Direct, '$  \n\n+ *+ ' Wi-Fi Direct is displayed in the Status bar.",
            "score": 74.21,
            "id": 607,
            "source": "Bugbash KB.pdf",
            "metadata": []
        },
        {
            "questions": [
                "Wi-Fi - Connections"
            ],
            "answer": "**Wi-Fi**\n\nWi-Fi is a term used for certain types of Wireless Local Area Networks (WLAN). Wi-Fi communication requires access to a wireless Access Point (AP).",
            "score": 74.15,
            "id": 599,
            "source": "Bugbash KB.pdf",
            "metadata": []
        },
        {
            "questions": [
                "Turn Wi-Fi On or Off"
            ],
            "answer": "**Turn Wi-Fi On or Off**\n\nTurning Wi-Fi on makes your device able to discover and connect to compatible in-range wireless APs.  \n\n1.  From a Home screen, tap ::: Apps > e Settings .\n2.  Tap Connections > Wi-Fi , and then tap On/Off to turn Wi-Fi on or off.",
            "score": 69.99,
            "id": 600,
            "source": "Bugbash KB.pdf",
            "metadata": []
        }
    ]
}

Benzer puanlara sahip sorular olduğunda istemci uygulaması izlemesi

İstemci uygulamanız, kullanıcının amacını en çok temsil eden tek soruyu seçmesi için soruları bir seçenekle birlikte görüntüler.

Kullanıcı mevcut sorulardan birini seçtikten sonra istemci uygulaması Soru-Cevap Oluşturma Eğitim API'sini kullanarak kullanıcının seçimini geri bildirim olarak gönderir. Bu geri bildirim, etkin öğrenme geri bildirimi döngüsünü tamamlar.

API eğitme

Etkin öğrenme geri bildirimi Soru-Cevap Oluşturma'ya EĞITIM API'sinin POST isteğiyle gönderilir. API imzası:

POST https://<QnA-Maker-resource-name>.azurewebsites.net/qnamaker/knowledgebases/<knowledge-base-ID>/train
Authorization: EndpointKey <endpoint-key>
Content-Type: application/json
{"feedbackRecords": [{"userId": "1","userQuestion": "<question-text>","qnaId": 1}]}
HTTP isteği özelliği Adı Tip Amaç
URL yol parametresi Bilgi bankası kimliği Dize bilgi bankası için GUID.
Özel alt etki alanı QnAMaker kaynak adı Dize Kaynak adı, Soru-Cevap Oluşturma için özel alt etki alanı olarak kullanılır. Bu, bilgi bankası yayımladıktan sonra Ayarlar sayfasında kullanılabilir. olarak hostlistelenir.
Üst bilgi İçerik Türü Dize API'ye gönderilen gövdenin medya türü. Varsayılan değer: application/json
Üst bilgi Yetkilendirme Dize Uç nokta anahtarınız (EndpointKey xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx) .
Gövde Sonrası JSON nesnesi JSON Eğitim geri bildirimi

JSON gövdesinin çeşitli ayarları vardır:

JSON gövde özelliği Tür Amaç
feedbackRecords dizi Geri bildirim listesi.
userId Dize Önerilen soruları kabul eden kişinin kullanıcı kimliği. Kullanıcı kimliği biçimi size aittir. Örneğin, bir e-posta adresi mimarinizde geçerli bir kullanıcı kimliği olabilir. isteğe bağlı.
userQuestion Dize Kullanıcının sorgusunun tam metni. Gerekli.
qnaID Numara GenerateAnswer yanıtında bulunan sorunun kimliği.

Örnek bir JSON gövdesi şöyle görünür:

{
    "feedbackRecords": [
        {
            "userId": "1",
            "userQuestion": "<question-text>",
            "qnaId": 1
        }
    ]
}

Başarılı bir yanıt 204 durumunu döndürür ve JSON yanıt gövdesi döndürmez.

Birçok geri bildirim kaydını tek bir çağrıda toplu iş

Bot gibi istemci tarafı uygulamasında verileri depolayabilir ve ardından dizideki tek bir JSON gövdesinde feedbackRecords birçok kayıt gönderebilirsiniz.

Örnek bir JSON gövdesi şöyle görünür:

{
    "feedbackRecords": [
        {
            "userId": "1",
            "userQuestion": "How do I ...",
            "qnaId": 1
        },
        {
            "userId": "2",
            "userQuestion": "Where is ...",
            "qnaId": 40
        },
        {
            "userId": "3",
            "userQuestion": "When do I ...",
            "qnaId": 33
        }
    ]
}

Bot framework örnek kodu

Kullanıcının sorgusunun etkin öğrenme için kullanılması gerekiyorsa bot çerçeve kodunuzun Train API'sini çağırması gerekir. Yazacak iki kod parçası vardır:

  • Etkin öğrenme için sorgu kullanılması gerekip gerekmediğini belirleme
  • Etkin öğrenme için sorguyu Soru-Cevap Oluşturma Eğitim API'sine geri gönderme

Azure Bot örneğinde bu etkinliklerin her ikisi de programlanmıştır.

Bot Framework 4.x ile API Eğitma için örnek C# kodu

Aşağıdaki kod, Eğitim API'siyle Soru-Cevap Oluşturma'ya bilgi göndermeyi göstermektedir.

public class FeedbackRecords
{
    // <summary>
    /// List of feedback records
    /// </summary>
    [JsonProperty("feedbackRecords")]
    public FeedbackRecord[] Records { get; set; }
}

/// <summary>
/// Active learning feedback record
/// </summary>
public class FeedbackRecord
{
    /// <summary>
    /// User id
    /// </summary>
    public string UserId { get; set; }

    /// <summary>
    /// User question
    /// </summary>
    public string UserQuestion { get; set; }

    /// <summary>
    /// QnA Id
    /// </summary>
    public int QnaId { get; set; }
}

/// <summary>
/// Method to call REST-based QnAMaker Train API for Active Learning
/// </summary>
/// <param name="endpoint">Endpoint URI of the runtime</param>
/// <param name="FeedbackRecords">Feedback records train API</param>
/// <param name="kbId">Knowledgebase Id</param>
/// <param name="key">Endpoint key</param>
/// <param name="cancellationToken"> Cancellation token</param>
public async static void CallTrain(string endpoint, FeedbackRecords feedbackRecords, string kbId, string key, CancellationToken cancellationToken)
{
    var uri = endpoint + "/knowledgebases/" + kbId + "/train/";

    using (var client = new HttpClient())
    {
        using (var request = new HttpRequestMessage())
        {
            request.Method = HttpMethod.Post;
            request.RequestUri = new Uri(uri);
            request.Content = new StringContent(JsonConvert.SerializeObject(feedbackRecords), Encoding.UTF8, "application/json");
            request.Headers.Add("Authorization", "EndpointKey " + key);

            var response = await client.SendAsync(request, cancellationToken);
            await response.Content.ReadAsStringAsync();
        }
    }
}

Bot Framework 4.x ile API Eğitma için örnek Node.js kodu

Aşağıdaki kod, Eğitim API'siyle Soru-Cevap Oluşturma'ya bilgi göndermeyi göstermektedir.

async callTrain(stepContext){

    var trainResponses = stepContext.values[this.qnaData];
    var currentQuery = stepContext.values[this.currentQuery];

    if(trainResponses.length > 1){
        var reply = stepContext.context.activity.text;
        var qnaResults = trainResponses.filter(r => r.questions[0] == reply);

        if(qnaResults.length > 0){

            stepContext.values[this.qnaData] = qnaResults;

            var feedbackRecords = {
                FeedbackRecords:[
                    {
                        UserId:stepContext.context.activity.id,
                        UserQuestion: currentQuery,
                        QnaId: qnaResults[0].id
                    }
                ]
            };

            // Call Active Learning Train API
            this.activeLearningHelper.callTrain(this.qnaMaker.endpoint.host, feedbackRecords, this.qnaMaker.endpoint.knowledgeBaseId, this.qnaMaker.endpoint.endpointKey);

            return await stepContext.next(qnaResults);
        }
        else{

            return await stepContext.endDialog();
        }
    }

    return await stepContext.next(stepContext.result);
}

En iyi yöntemler

Etkin öğrenmeyi kullanırken en iyi yöntemler için bkz . En iyi yöntemler.

Sonraki adımlar