Få ett svar från en QNA Maker-kunskapsbas
Anteckning
En nyare version av funktionen för frågor och svar är nu tillgänglig som en del av Azure Cognitive Service for Language. Mer information finns i Azure Cognitive Service för språkdokumentation. Om du vill ha funktioner för frågesvar i Language Service kan du se frågesvar . Information om hur du migrerar befintliga kunskapsbaser finns i migreringsguiden.
Anteckning
Den här dokumentationen gäller inte för den senaste versionen. Mer information om hur du använder de senaste API:erna för frågesvar finns i redigeringsguiden för frågesvar.
I den här cURL-baserade snabbstarten får du ett svar från kunskapsbasen.
Förutsättningar
- Du måste ha
- Senaste cURL.
- Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- En QnA Maker resurs som skapats i Azure Portal. Kom ihåg Azure Active Directory id, prenumeration, QnA-resursnamn som du valde när du skapade resursen.
- En tränad och publicerad kunskapsbas med frågor och svar, från den föregående snabbstarten, konfigurerad med metadata och chit-chatt.
Anteckning
När du är redo att generera ett svar på en fråga från kunskapsbasen måste du träna och publicera kunskapsbasen. När din kunskapsbas publiceras visar sidan publicera inställningar för HTTP-begäran för att generera ett svar. Fliken cURL visar de inställningar som krävs för att generera ett svar från kommandoradsverktyget.
Använda metadata för att filtrera svar
Använd kunskapsbasen från föregående snabb för att fråga efter ett svar baserat på metadata.
På kunskapsbasens sida Inställningar fliken CURL för att se ett exempel på ett cURL-kommando som används för att generera ett svar från kunskapsbasen.
Kopiera kommandot till en redigerbar miljö (till exempel en textfil) så att du kan redigera kommandot. Redigera frågevärdet på följande sätt så att metadata
service:qna_makerför används som ett filter för QnA-paren.curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'top':30, 'question':'size','strictFilters': [{'name':'service','value':'qna_maker'}]}"Frågan är bara ett enda ord,
size, som kan returnera något av de två QnA-paren. MatrisenstrictFilterstalar om för svaret att reduce bara ska varaqna_makersvaren.Svaret innehåller bara det svar som uppfyller filtervillkoren. Följande cURL-svar har formaterats för läsbarhet:
{ "answers": [ { "questions": [ "How large a knowledge base can I create?", "What is the max size of a knowledge base?", "How many GB of data can a knowledge base hold?" ], "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.", "score": 68.76, "id": 3, "source": "https://docs.microsoft.com/azure/cognitive-services/qnamaker/troubleshooting", "metadata": [ { "name": "link_in_answer", "value": "true" }, { "name": "service", "value": "qna_maker" } ], "context": { "isContextOnly": false, "prompts": [] } } ], "debugInfo": null }Om det finns ett par med frågor och svar som inte uppfyller söktermen men som uppfyller filtret returneras det inte. I stället returneras det
No good match found in KB.allmänna svaret.
Använda egenskapen för felsökningsfråga
Anteckning
Vi rekommenderar inte att du använder felsökningsegenskapen för beroenden. Den här egenskapen har lagts till för att hjälpa produktteamet vid felsökning.
Felsökningsinformation hjälper dig att förstå hur det returnerade svaret har fastställts. Även om det är användbart är det inte nödvändigt. Om du vill generera ett svar med felsökningsinformation lägger du till debug egenskapen :
Debug: {Enable:true}
Redigera cURL-kommandot för att inkludera felsökningsegenskapen om du vill se mer information.
curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'Debug':{'Enable':true}}"Svaret innehåller relevant information om svaret. I följande JSON-utdata har viss felsökningsinformation ersatts med ellips av utrymmesutdata.
{ "answers": [ { "questions": [ "How do I share a knowledge base with others?" ], "answer": "Sharing works at the level of a QnA Maker service, that is, all knowledge bases in the service will be shared.", "score": 56.07, "id": 5, "source": "https://docs.microsoft.com/azure/cognitive-services/qnamaker/troubleshooting", "metadata": [], "context": { "isContextOnly": false, "prompts": [] } } ], "debugInfo": { "userQuery": { "question": "How do I programmatically update my Knowledge Base?", "top": 1, "userId": null, "strictFilters": [], "isTest": false, "debug": { "enable": true, "recordL1SearchLatency": false, "mockQnaL1Content": null }, "rankerType": 0, "context": null, "qnaId": 0, "scoreThreshold": 0.0 }, "rankerInfo": { "specialFuzzyQuery": "how do i programmatically~6 update my knowledge base", "synonyms": "what s...", "rankerLanguage": "English", "rankerFileName": "https://qnamakerstore.blob.core.windows.net/qnamakerdata/rankers/ranker-English.ini", "rankersDirectory": "D:\\home\\site\\wwwroot\\Data\\QnAMaker\\rd0003ffa60fc45.24.0\\RankerData\\Rankers", "allQnAsfeatureValues": { "WordnetSimilarity": { "5": 0.54706300120043716,... }, ... }, "rankerVersion": "V2", "rankerModelType": "TreeEnsemble", "rankerType": 0, "indexResultsCount": 25, "reRankerResultsCount": 1 }, "runtimeVersion": "5.24.0", "indexDebugInfo": { "indexDefinition": { "name": "064a4112-bd65-42e8-b01d-141c4c9cd09e", "fields": [... ], "scoringProfiles": [], "defaultScoringProfile": null, "corsOptions": null, "suggesters": [], "analyzers": [], "tokenizers": [], "tokenFilters": [], "charFilters": [], "@odata.etag": "\"0x8D7A920EA5EE6FE\"" }, "qnaCount": 117, "parameters": {}, "azureSearchResult": { "continuationToken": null, "@odata.count": null, "@search.coverage": null, "@search.facets": null, "@search.nextPageParameters": null, "value": [...], "@odata.nextLink": null } }, "l1SearchLatencyInMs": 0, "qnaL1Results": {...} }, "activeLearningEnabled": true }
Använda testkunskapsbas
Om du vill få ett svar från testkunskapsbasen använder du isTest egenskapen body (brödtext).
Egenskapen är ett booleskt värde.
isTest:true
Kommandot cURL ser ut så här:
curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'IsTest':true}"
JSON-svaret använder samma schema som den publicerade kunskapsbasfrågan.
Anteckning
Om testet och de publicerade kunskapsbaserna är exakt likadana kan det fortfarande uppstå viss variation eftersom testindexet delas mellan alla kunskapsbaser i resursen.
Använda cURL för att fråga efter ett chit-chat-svar
I den cURL-aktiverade terminalen använder du en robots konversationsslutande instruktion från användaren,
Thank youtill exempel frågan. Det finns inga andra egenskaper att ange.curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'thank you'}"Kör cURL-kommandot och ta emot JSON-svaret, inklusive poäng och svar.
{ "answers": [ { "questions": [ "I thank you", "Oh, thank you", "My sincere thanks", "My humblest thanks to you", "Marvelous, thanks", "Marvelous, thank you kindly", "Marvelous, thank you", "Many thanks to you", "Many thanks", "Kthx", "I'm grateful, thanks", "Ahh, thanks", "I'm grateful for that, thank you", "Perfecto, thanks", "I appreciate you", "I appreciate that", "I appreciate it", "I am very thankful for that", "How kind, thank you", "Great, thanks", "Great, thank you", "Gracias", "Gotcha, thanks", "Gotcha, thank you", "Awesome thanks!", "I'm grateful for that, thank you kindly", "thank you pal", "Wonderful, thank you!", "Wonderful, thank you very much", "Why thank you", "Thx", "Thnx", "That's very kind", "That's great, thanks", "That is lovely, thanks", "That is awesome, thanks!", "Thanks bot", "Thanks a lot", "Okay, thanks!", "Thank you so much", "Perfect, thanks", "Thank you my friend", "Thank you kindly", "Thank you for that", "Thank you bot", "Thank you", "Right on, thanks very much", "Right on, thanks a lot", "Radical, thanks", "Rad, thanks", "Rad thank you", "Wonderful, thanks!", "Thanks" ], "answer": "You're welcome.", "score": 100.0, "id": 75, "source": "qna_chitchat_Professional.tsv", "metadata": [ { "name": "editorial", "value": "chitchat" } ], "context": { "isContextOnly": false, "prompts": [] } } ], "debugInfo": null, "activeLearningEnabled": true }Eftersom frågan
Thank youexakt matchar en kommunikationsfråga är QnA Maker helt säker med poängen 100. QnA Maker returnerade även alla relaterade frågor och metadataegenskapen som innehåller information om chit-chat-metadatataggen.
Använd tröskelvärde och standardsvar
Du kan begära ett minsta tröskelvärde för svaret. Om tröskelvärdet inte uppfylls returneras standardsvaret.
Lägg till
thresholdegenskapen för att be om ett svar till med ett tröskelvärde påsize80 % eller bättre. Kunskapsbasen bör inte hitta det svaret eftersom frågans poäng är 71 %. Resultatet returnerar standardsvaret som du angav när du skapade kunskapsbasen.curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'scoreThreshold':80.00}"Kör cURL-kommandot och ta emot JSON-svaret.
{ "answers": [ { "questions": [], "answer": "No good match found in KB.", "score": 0.0, "id": -1, "source": null, "metadata": [] } ], "debugInfo": null, "activeLearningEnabled": true }QnA Maker returnerade poängen
0, vilket innebär att det inte finns någon konfidens. Det returnerade även standardsvaret.Ändra tröskelvärdet till 60 % och begär frågan igen:
curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'scoreThreshold':60.00}"Det returnerade JSON-svaret hittades.
{ "answers": [ { "questions": [ "How large a knowledge base can I create?", "What is the max size of a knowledge base?", "How many GB of data can a knowledge base hold?" ], "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../Concepts/azure-resources.md) for more details.", "score": 71.1, "id": 3, "source": "https://docs.microsoft.com/azure/cognitive-services/qnamaker/troubleshooting", "metadata": [ { "name": "link_in_answer", "value": "true" }, { "name": "server", "value": "qna_maker" } ], "context": { "isContextOnly": false, "prompts": [] } } ], "debugInfo": null, "activeLearningEnabled": true }
Använda ostrukturerade datakällor
Nu stöder vi möjligheten att lägga till ostrukturerade dokument som inte kan användas för att extrahera QnA:er. Användaren kan välja att inkludera eller exkludera ostrukturerade datamängder i API:et GenerateAnswer när ett svar hämtas till frågan. Vi stöder inte ostrukturerade datauppsättningar i GA-tjänsten, detta ingår bara i anpassade frågesvar.
Denna Postmanbaserade snabbstart vägleder dig genom att hämta ett svar från en kunskapsbas.
Förutsättningar
- Du måste ha
- Senaste Postman.
- Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- En QnA Maker resurs som skapats i Azure Portal. Kom ihåg ditt Azure Active Directory-ID, prenumeration, QnA-resursnamn som du valde när du skapade resursen.
- En tränad och publicerad kunskapsbas med frågor och svar, från den föregående snabbstarten, konfigurerad med metadata och chit-chatt.
Anteckning
När du är redo att generera ett svar på en fråga från kunskapsbasen måste du träna och publicera kunskapsbasen. När din kunskapsbas publiceras visar sidan publicera inställningar för HTTP-begäran för att generera ett svar. På fliken Postman visas de inställningar som krävs för att generera ett svar.
Konfigurera Postman för begäranden
Den här snabbstarten använder samma inställningar för Postman POST-begäran och konfigurerar sedan till POST body JSON som skickas till tjänsten baserat på vad du försöker fråga efter.
Använd den här proceduren för att konfigurera Postman och läs sedan varje efterföljande avsnitt för att konfigurera POST-brödtextens JSON.
På kunskapsbasens sida Inställningar du fliken Postman för att se konfigurationen som används för att generera ett svar från kunskapsbasen. Kopiera följande information som ska användas i Postman.
Name Inställning Syfte och värde POST/knowledgebases/replace-with-your-knowledge-base-id/generateAnswerDet här är HTTP-metoden och -vägen för URL:en. Hosthttps://YOUR-RESOURCE_NAME.azurewebsites.net/qnamakerDet här är värden för URL:en. Sammanfoga värden för Host och Post för att hämta den fullständiga generateAnswer-URL:en. AuthorizationEndpointKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxRubrikvärdet för att auktorisera din begäran till Azure. Content-typeapplication/jsonRubrikvärdet för ditt innehåll. {"question":"<Your question>"}Brödtexten i POST-begäran som ett JSON-objekt. Det här värdet ändras i varje följande avsnitt beroende på vad frågan är avsedd att göra. Öppna Postman och skapa en ny grundläggande POST-begäran med dina publicerade kunskapsbasinställningar. I följande avsnitt ändrar du POST-brödtextens JSON för att ändra frågan till kunskapsbasen.
Använda metadata för att filtrera svar
I en tidigare snabbstart lades metadata till i två frågor och svar-par för att skilja mellan två olika frågor. Lägg till metadata i frågan för att begränsa filtret till endast det relevanta QnA-paret.
I Postman ändrar du endast frågans JSON genom att lägga till
strictFiltersegenskapen med namn-/värdeparet förservice:qna_maker. JSON-brödtexten ska vara:{ 'question':'size', 'strictFilters': [ { 'name':'service','value':'qna_maker' } ] }Frågan är bara ett enda ord, , som kan returnera något av de två paren
sizemed frågor och svar. MatrisenstrictFilterstalar om för svaret att reduce bara ska varaqna_makersvaren.Svaret innehåller bara det svar som uppfyller filtervillkoren.
Följande svar har formaterats för läsbarhet:
{ "answers": [ { "questions": [ "How large a knowledge base can I create?", "What is the max size of a knowledge base?", "How many GB of data can a knowledge base hold?" ], "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../Concepts/azure-resources.md) for more details.", "score": 68.76, "id": 3, "source": "https://docs.microsoft.com/azure/cognitive-services/qnamaker/troubleshooting", "metadata": [ { "name": "link_in_answer", "value": "true" }, { "name": "service", "value": "qna_maker" } ], "context": { "isContextOnly": false, "prompts": [] } } ], "debugInfo": null }Om det finns ett par med frågor och svar som inte uppfyller söktermen men som uppfyller filtret returneras det inte. I stället returneras det
No good match found in KB.allmänna svaret.
Använda egenskapen för felsökningsfråga
Anteckning
Vi rekommenderar inte att du använder felsökningsegenskapen för beroenden. Den här egenskapen har lagts till för att hjälpa produktteamet vid felsökning.
Felsökningsinformation hjälper dig att förstå hur det returnerade svaret har fastställts. Även om det är användbart är det inte nödvändigt. Om du vill generera ett svar med felsökningsinformation lägger du till debug egenskapen :
I Postman ändrar du endast JSON-brödtexten genom att lägga till
debugegenskapen . JSON ska vara:{ 'question':'size', 'Debug': { 'Enable':true } }Svaret innehåller relevant information om svaret. I följande JSON-utdata har viss felsökningsinformation ersatts med tre punkter.
{ "answers": [ { "questions": [ "How do I share a knowledge base with others?" ], "answer": "Sharing works at the level of a QnA Maker service, that is, all knowledge bases in the service will be shared.", "score": 56.07, "id": 5, "source": "https://docs.microsoft.com/azure/cognitive-services/qnamaker/troubleshooting", "metadata": [], "context": { "isContextOnly": false, "prompts": [] } } ], "debugInfo": { "userQuery": { "question": "How do I programmatically update my Knowledge Base?", "top": 1, "userId": null, "strictFilters": [], "isTest": false, "debug": { "enable": true, "recordL1SearchLatency": false, "mockQnaL1Content": null }, "rankerType": 0, "context": null, "qnaId": 0, "scoreThreshold": 0.0 }, "rankerInfo": { "specialFuzzyQuery": "how do i programmatically~6 update my knowledge base", "synonyms": "what s...", "rankerLanguage": "English", "rankerFileName": "https://qnamakerstore.blob.core.windows.net/qnamakerdata/rankers/ranker-English.ini", "rankersDirectory": "D:\\home\\site\\wwwroot\\Data\\QnAMaker\\rd0003ffa60fc45.24.0\\RankerData\\Rankers", "allQnAsfeatureValues": { "WordnetSimilarity": { "5": 0.54706300120043716,... }, ... }, "rankerVersion": "V2", "rankerModelType": "TreeEnsemble", "rankerType": 0, "indexResultsCount": 25, "reRankerResultsCount": 1 }, "runtimeVersion": "5.24.0", "indexDebugInfo": { "indexDefinition": { "name": "064a4112-bd65-42e8-b01d-141c4c9cd09e", "fields": [... ], "scoringProfiles": [], "defaultScoringProfile": null, "corsOptions": null, "suggesters": [], "analyzers": [], "tokenizers": [], "tokenFilters": [], "charFilters": [], "@odata.etag": "\"0x8D7A920EA5EE6FE\"" }, "qnaCount": 117, "parameters": {}, "azureSearchResult": { "continuationToken": null, "@odata.count": null, "@search.coverage": null, "@search.facets": null, "@search.nextPageParameters": null, "value": [...], "@odata.nextLink": null } }, "l1SearchLatencyInMs": 0, "qnaL1Results": {...} }, "activeLearningEnabled": true }
Använda testkunskapsbas
Om du vill få ett svar från testkunskapsbasen använder du isTest egenskapen body (brödtext).
I Postman ändrar du endast JSON-brödtexten genom att lägga till isTest egenskapen . JSON ska vara:
{
'question':'size',
'isTest': true
}
JSON-svaret använder samma schema som den publicerade kunskapsbasfrågan.
Anteckning
Om testet och de publicerade kunskapsbaserna är exakt likadana kan det fortfarande uppstå viss variation eftersom testindexet delas mellan alla kunskapsbaser i resursen.
Fråga efter ett chit-chat-svar
I Postman ändrar du endast JSON-brödtexten till en konversationsslutssats från användaren. JSON ska vara:
{ 'question':'thank you' }Svaret innehåller poäng och svar.
{ "answers": [ { "questions": [ "I thank you", "Oh, thank you", "My sincere thanks", "My humblest thanks to you", "Marvelous, thanks", "Marvelous, thank you kindly", "Marvelous, thank you", "Many thanks to you", "Many thanks", "Kthx", "I'm grateful, thanks", "Ahh, thanks", "I'm grateful for that, thank you", "Perfecto, thanks", "I appreciate you", "I appreciate that", "I appreciate it", "I am very thankful for that", "How kind, thank you", "Great, thanks", "Great, thank you", "Gracias", "Gotcha, thanks", "Gotcha, thank you", "Awesome thanks!", "I'm grateful for that, thank you kindly", "thank you pal", "Wonderful, thank you!", "Wonderful, thank you very much", "Why thank you", "Thx", "Thnx", "That's very kind", "That's great, thanks", "That is lovely, thanks", "That is awesome, thanks!", "Thanks bot", "Thanks a lot", "Okay, thanks!", "Thank you so much", "Perfect, thanks", "Thank you my friend", "Thank you kindly", "Thank you for that", "Thank you bot", "Thank you", "Right on, thanks very much", "Right on, thanks a lot", "Radical, thanks", "Rad, thanks", "Rad thank you", "Wonderful, thanks!", "Thanks" ], "answer": "You're welcome.", "score": 100.0, "id": 75, "source": "qna_chitchat_Professional.tsv", "metadata": [ { "name": "editorial", "value": "chitchat" } ], "context": { "isContextOnly": false, "prompts": [] } } ], "debugInfo": null, "activeLearningEnabled": true }Eftersom frågan
Thank youexakt matchar en kommunikationsfråga är QnA Maker helt säker med poängen 100. QnA Maker returnerade även alla relaterade frågor och metadataegenskapen som innehåller information om chit-chat-metadatataggen.
Använd tröskelvärde och standardsvar
Du kan begära ett minsta tröskelvärde för svaret. Om tröskelvärdet inte uppfylls returneras standardsvaret.
I Postman ändrar du endast JSON-brödtexten till en konversationsslutssats från användaren. JSON ska vara:
{ 'question':'size', 'scoreThreshold':80.00 }Kunskapsbasen bör inte hitta det svaret eftersom frågans poäng är 71 % och i stället returnerar standardsvaret som du angav när du skapade kunskapsbasen.
Det returnerade JSON-svaret, inklusive poängen och svaret är:
{ "answers": [ { "questions": [], "answer": "No good match found in KB.", "score": 0.0, "id": -1, "source": null, "metadata": [] } ], "debugInfo": null, "activeLearningEnabled": true }QnA Maker returnerade poängen
0, vilket innebär att det inte finns någon konfidens. Det returnerade även standardsvaret.Ändra tröskelvärdet till 60 % och begär frågan igen:
{ 'question':'size', 'scoreThreshold':60.00 }Det returnerade JSON-svaret hittades.
{ "answers": [ { "questions": [ "How large a knowledge base can I create?", "What is the max size of a knowledge base?", "How many GB of data can a knowledge base hold?" ], "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../Concepts/azure-resources.md) for more details.", "score": 71.1, "id": 3, "source": "https://docs.microsoft.com/azure/cognitive-services/qnamaker/troubleshooting", "metadata": [ { "name": "link_in_answer", "value": "true" }, { "name": "server", "value": "qna_maker" } ], "context": { "isContextOnly": false, "prompts": [] } } ], "debugInfo": null, "activeLearningEnabled": true }
Använd ostrukturerade datakällor.
Nu stöder vi möjligheten att lägga till ostrukturerade dokument som inte kan användas för att extrahera QnA:er. Användaren kan välja att inkludera eller exkludera ostrukturerade datamängder i API:et GenerateAnswer när ett svar hämtas till frågan. Vi stöder inte ostrukturerade datauppsättningar i GA-tjänsten. Det stöds endast i anpassade frågor.
Nästa steg
Läs mer om metadata: