Bilgi bankasında önerilen etkin öğrenme sorularını kabul etme

Not

Soru ve yanıtlama özelliğinin daha yeni bir sürümü artık Dil için Azure Bilişsel Hizmet'in bir parçası olarak kullanılabilir. Daha fazla bilgi için bkz. Dil için Azure Bilişsel Hizmet Belgeleri. Dil Hizmeti'nin içindeki soru yanıtlama özellikleri için bkz. soru yanıtlama. Mevcut bilgi tabanlarını geçirme hakkında bilgi için geçiş kılavuzuna bakın.

Etkin Learning, öneriyi onay Bilgi Bankası sonra hizmeti veya Arama Hizmetini değiştirdikten sonra kaydedin ve eğitin. Öneriyi onaylarsanız alternatif bir soru olarak eklenir.

Etkin öğrenmeyi açma

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

Önerilen soruları görüntüleme

  1. Önerilen soruları görmek için Bilgi bankası düzenle sayfasında Seçenekleri Görüntüle'yi ve ardından Etkin öğrenme önerilerini göster'i seçin. Soru ve yanıt çiftlerinin 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 bilgi bankasında soru ve yanıt çiftleri ile yalnızca önerileri gösterecek şekilde filtrele.

    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 bir Soru-Cevap çifti, soruyu kabul etmek veya önerileri reddetmek için onay işaretiyle birlikte yeni soru x alternatifleri önerir. 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ğlamsal araç çubuğundan Hepsini ekle veya Hepsini reddet'i seçerek tüm önerileri ekleyebilir veya silebilirsiniz.

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

  5. GenerateAnswer API'sini kullanarak değişikliklerin kullanılabilir olmasına izin vermek için Yayımla'yı seçin.

    5 veya daha fazla benzer sorgu kümelenmiş olduğunda, her 30 dakikada Soru-Cevap Oluşturma, kabul etmek veya reddetmek için alternatif sorular önerir.

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

Uygulamanıza etkin öğrenme etkinleştirildiğinde ve uygulamayı dışarı aktarıyorsanız, SuggestedQuestions tsv dosyasındaki sütun etkin öğrenme verilerini korur.

sütunu, örtülü, ve açık geri bildirim bilgilerini içeren SuggestedQuestions bir JSON autosuggested usersuggested nesnesidir. Kullanıcı tarafından gönderilen tek bir sorusu için bu JSON nesnesine bir help örnek:

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

Bu uygulamayı yeniden indirdiğiniz zaman, etkin öğrenme bilgi tabanınız için bilgi toplamaya ve önerilerde bulundurmaya devam eder.

Bottan GenerateAnswer ve Train API'lerini kullanmak için mimari akış

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

  1. Bot, generateAnswer API'si ile bilgi bankasından bir dizi top yanıt almak için özelliğini kullanarak yanıtı alır.

  2. Bot açık geri bildirimi belirler:

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

Birkaç eşleşen yanıt almak için GenerateAnswer isteğinde top özelliğini kullanın

JSON gövdesinin özelliği Soru-Cevap Oluşturma için bir soru top göndererek yanıt sayısını ayarlar.

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

Kullanıcıya göstermek üzere yanıt 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ız tarafından 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": []
        }
    ]
}

Soruların benzer puanlara sahip olduğu istemci uygulaması izlemesi

İstemci uygulamanız, kullanıcının amacını en çok temsil eden tek soruyu seçme seçeneğiyle birlikte soruları görüntüler.

Kullanıcı mevcut sorulardan birini seçerken istemci uygulaması, eğitim API'sini kullanarak kullanıcının Soru-Cevap Oluşturma gönderir. Bu geri bildirim, etkin öğrenme geri bildirim döngüsü tamamlanır.

API eğitme

Etkin öğrenme geri bildirimi, EĞITIM API'Soru-Cevap Oluşturma ISTEĞIyle birlikte Soru-Cevap Oluşturma geri bildirimi gönderilir. API imzası şu şekildedir:

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 Tür Amaç
URL yolu parametresi Bilgi bankası kimliği string Bilgi tabanınız için GUID.
Özel alt etki alanı QnAMaker kaynak adı string Kaynak adı, kaynağınız için özel alt etki alanı Soru-Cevap Oluşturma. Bu bilgi bankası Ayarlar sayfasında mevcuttur. olarak host listelenir.
Üst bilgi İçerik Türü string API'ye gönderilen gövdenin medya türü. Varsayılan değer: application/json
Üst bilgi Yetkilendirme string Uç nokta anahtarınız (EndpointKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Post Body JSON nesnesi JSON Eğitim geri bildirimi

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

JSON gövde özelliği Tür Amaç
feedbackRecords array Geri bildirim listesi.
userId string Önerilen soruları kabul eden kişinin kullanıcı kimliği. Kullanıcı kimliği biçimi size göredir. Örneğin, bir e-posta adresi mimarinizin geçerli bir kullanıcı kimliği olabilir. İsteğe bağlı.
userQuestion string Kullanıcının sorgusunun tam metni. Gereklidir.
qnaID sayı Sorunun kimliği, GenerateAnswer yanıtta bulunur.

Örnek bir JSON gövdesi şöyledir:

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

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

Çok sayıda geri bildirim kayıtlarını tek bir çağrıda toplu olarak işleme

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

Örnek bir JSON gövdesi şöyledir:

{
    "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 sorgusu etkin öğrenme için kullanılacaksa bot framework kodunuzun Eğitim API'sini çağıran bir çağrı oluşturması gerekir. Yazacak iki kod parçası vardır:

  • Etkin öğrenme için sorgunun kullanılıp kullanılmay gerektiğini belirleme
  • Etkin öğrenme için sorguyu Soru-Cevap Oluşturma API'sini yeniden eğitin

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

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

Aşağıdaki kod, tren API 'siyle Soru-Cevap Oluşturma bilgilerin geri nasıl gönderileceğini gösterir.

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ğitimi için örnek Node.js kod

Aşağıdaki kod, tren API 'siyle Soru-Cevap Oluşturma bilgilerin geri nasıl gönderileceğini gösterir.

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 uygulamalar

Etkin öğrenimi kullanırken en iyi uygulamalar için bkz. en iyi uygulamalar.

Sonraki adımlar