Acceptera föreslagna frågor om aktiva utbildningar i kunskaps basenAccept active learning suggested questions in the knowledge base

Active Learning ändrar kunskaps basen eller Search Service när du har godkänt förslaget och sedan sparar och tränar.Active Learning alters the Knowledge Base or Search Service after you approve the suggestion, then save and train. Om du godkänner förslaget kommer det att läggas till som en alternativ fråga.If you approve the suggestion it will be added as an alternate question.

Aktivera aktiv inlärningTurn on active learning

För att kunna se föreslagna frågor måste du Aktivera aktiv utbildning för din QNA Maker-resurs.In order to see suggested questions, you must turn on active learning for your QnA Maker resource.

Visa föreslagna frågorView suggested questions

  1. Om du vill se de föreslagna frågorna går du till sidan Redigera kunskaps bas och väljer visnings alternativ. Välj sedan Visa aktiva utbildnings förslag.In order to see the suggested questions, on the Edit knowledge base page, select View Options, then select Show active learning suggestions.

    I redigera-avsnittet i portalen väljer du Visa förslag för att se de aktiva alternativen för inlärnings nya frågor.On the Edit section of the portal, select Show Suggestions in order to see the active learning's new question alternatives.

  2. Filtrera kunskaps basen med fråge-och svars par för att bara visa förslag genom att välja Filtrera efter förslag.Filter the knowledge base with question and answer pairs to show only suggestions by selecting Filter by Suggestions.

    Använd alternativet filtrera efter förslag för att bara visa de aktiva inlärnings alternativ som föreslås av den aktuella frågan.Use the Filter by suggestions toggle to view only the active learning's suggested question alternatives.

  3. Varje QnA-par föreslår den nya frågans alternativ med en bock markering, för att acceptera frågan eller x för att avvisa förslagen.Each QnA pair suggests the new question alternatives with a check mark, , to accept the question or an x to reject the suggestions. Markera kryss rutan för att lägga till frågan.Select the check mark to add the question.

    Välj eller avvisa den aktiva inlärningens föreslagna fråge alternativ genom att markera den gröna bocken eller det röda ta bort-märket.Select or reject active learning's suggested question alternatives by selecting the green check mark or red delete mark.

    Du kan lägga till eller ta bort alla förslag genom att välja Lägg till alla eller Ignorera alla i kontext verktygsfältet.You can add or delete all suggestions by selecting Add all or Reject all in the contextual toolbar.

  4. Välj Spara och träna för att spara ändringarna i kunskaps basen.Select Save and Train to save the changes to the knowledge base.

  5. Välj publicera för att tillåta att ändringarna är tillgängliga från GenerateAnswer-API: et.Select Publish to allow the changes to be available from the GenerateAnswer API.

    Om 5 eller fler liknande frågor grupperas, var 30: e minut, rekommenderar QnA Maker de alternativa frågorna som du kan acceptera eller avvisa.When 5 or more similar queries are clustered, every 30 minutes, QnA Maker suggests the alternate questions for you to accept or reject.

Arkitektur flöde för att använda GenerateAnswer och träna API: er från en robotArchitectural flow for using GenerateAnswer and Train APIs from a bot

En robot eller något annat klient program bör använda följande arkitektur flöde för att använda aktiv inlärning:A bot or other client application should use the following architectural flow to use active learning:

Använd egenskapen Top i GenerateAnswer-begäran för att få flera matchande svarUse the top property in the GenerateAnswer request to get several matching answers

När du skickar en fråga till QnA Maker för ett svar top anger egenskapen för JSON-texten antalet svar som ska returneras.When submitting a question to QnA Maker for an answer, the top property of the JSON body sets the number of answers to return.

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

Använd score-egenskapen tillsammans med affärs logiken för att få en lista med svar för att visa användareUse the score property along with business logic to get list of answers to show user

När klient programmet (t. ex. en chat-robot) tar emot svaret returneras de tre främsta frågorna.When the client application (such as a chat bot) receives the response, the top 3 questions are returned. Använd score egenskapen för att analysera avståndet mellan poängen.Use the score property to analyze the proximity between scores. Det här närhets intervallet bestäms av din egen affärs logik.This proximity range is determined by your own business logic.

{
    "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": []
        }
    ]
}

Uppföljning av klient program när frågor har liknande resultatClient application follow-up when questions have similar scores

Ditt klient program visar frågorna med ett alternativ för användaren att välja den enda fråga som representerar deras avsikt.Your client application displays the questions with an option for the user to select the single question that most represents their intention.

När användaren väljer en av de befintliga frågorna skickar klient programmet användarens val som feedback med hjälp av QnA Makers träna API.Once the user selects one of the existing questions, the client application sends the user's choice as feedback using QnA Maker's Train API. Den här feedbacken Slutför den aktiva inlärnings-loopen.This feedback completes the active learning feedback loop.

Tränings-APITrain API

Aktiva inlärnings synpunkter skickas till QnA Maker med anropet träna API POST.Active learning feedback is sent to QnA Maker with the Train API POST request. API-signaturen är:The API signature is:

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}]}
Egenskap för HTTP-begäranHTTP request property NamnName TypType SyftePurpose
URL-rutt parameterURL route parameter Kunskaps bas-IDKnowledge base ID strängstring Din kunskaps bas-GUID.The GUID for your knowledge base.
Anpassad under domänCustom subdomain Resurs namn för QnAMakerQnAMaker resource name strängstring Resurs namnet används som anpassad under domän för QnA Maker.The resource name is used as the custom subdomain for your QnA Maker. Detta är tillgängligt på sidan inställningar när du har publicerat kunskaps basen.This is available on the Settings page after you publish the knowledge base. Den visas som host .It is listed as the host.
HuvudHeader Content-TypeContent-Type strängstring Medie typen för den brödtext som skickas till API: et.The media type of the body sent to the API. Standardvärdet är:application/jsonDefault value is: application/json
HuvudHeader AuktoriseringAuthorization strängstring Din slut punkts nyckel (EndpointKey XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX).Your endpoint key (EndpointKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Publicera brödtextPost Body JSON-objektJSON object JSONJSON Feedback om utbildningenThe training feedback

JSON-texten har flera inställningar:The JSON body has several settings:

JSON-Body-egenskapJSON body property TypType SyftePurpose
feedbackRecords matrisarray Lista över feedback.List of feedback.
userId strängstring Användar-ID för den person som godkänner de föreslagna frågorna.The user ID of the person accepting the suggested questions. Formatet för användar-ID är upp till dig.The user ID format is up to you. En e-postadress kan till exempel vara ett giltigt användar-ID i din arkitektur.For example, an email address can be a valid user ID in your architecture. Valfritt.Optional.
userQuestion strängstring Den exakta texten för användarens fråga.Exact text of the user's query. Krävs.Required.
qnaID nummernumber ID för fråga som finns i GenerateAnswer-svaret.ID of question, found in the GenerateAnswer response.

Ett exempel på en JSON-text ser ut så här:An example JSON body looks like:

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

Ett lyckat svar returnerar statusen 204 och ingen JSON-svars text.A successful response returns a status of 204 and no JSON response body.

Gruppera många återkopplings poster till ett enda anropBatch many feedback records into a single call

I program på klient sidan, till exempel en bot, kan du lagra data och sedan skicka många poster i en enda JSON-text i feedbackRecords matrisen.In the client-side application, such as a bot, you can store the data, then send many records in a single JSON body in the feedbackRecords array.

Ett exempel på en JSON-text ser ut så här:An example JSON body looks like:

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

Exempel kod för bot FrameworkBot framework sample code

Din bot Framework-kod måste anropa tågets API, om användarens fråga ska användas för aktiv inlärning.Your bot framework code needs to call the Train API, if the user's query should be used for active learning. Det finns två typer av kod att skriva:There are two pieces of code to write:

  • Avgöra om frågan ska användas för aktiv inlärningDetermine if query should be used for active learning
  • Skicka tillbaka frågan till QnA Makers tåg-API för aktiv inlärningSend query back to QnA Maker's Train API for active learning

I Azure bot-exemplethar båda dessa aktiviteter programmerats.In the Azure Bot sample, both of these activities have been programmed.

Exempel C#-kod för träna API med bot Framework 4. xExample C# code for Train API with Bot Framework 4.x

Följande kod visar hur du skickar information tillbaka till QnA Maker med träna-API.The following code illustrates how to send information back to QnA Maker with the Train API.

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

Exempel Node.js kod för träna API med bot Framework 4. xExample Node.js code for Train API with Bot Framework 4.x

Följande kod visar hur du skickar information tillbaka till QnA Maker med träna-API.The following code illustrates how to send information back to QnA Maker with the Train API.

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

Aktiv inlärning sparas i den exporterade kunskaps basenActive learning is saved in the exported knowledge base

När du har aktiverat aktiv inlärning i appen och du exporterar appen, SuggestedQuestions behåller kolumnen i TSV-filen de aktiva inlärnings data.When your app has active learning enabled, and you export the app, the SuggestedQuestions column in the tsv file retains the active learning data.

SuggestedQuestionsKolumnen är ett JSON-objekt med information om implicit, autosuggested och explicit, usersuggested feedback.The SuggestedQuestions column is a JSON object of information of implicit, autosuggested, and explicit, usersuggested feedback. Ett exempel på detta JSON-objekt för en enskild användare som har skickat frågan av help är:An example of this JSON object for a single user-submitted question of help is:

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

När du importerar om den här appen fortsätter den aktiva inlärningen att samla in information och rekommendera förslag för din kunskaps bas.When you reimport this app, the active learning continues to collect information and recommend suggestions for your knowledge base.

Bästa praxisBest practices

För bästa praxis när du använder aktiv inlärning, se metod tips.For best practices when using active learning, see Best practices.

Nästa stegNext steps