Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Feljegyzés
Migrálni szeretné a számítási feladatokat a QnA Makerből? A funkciók összehasonlításáról és a migrálási lépésekről a migrálási útmutatónkban olvashat.
Kezdje el az egyedi kérdésmegoldó ügyfélkönytár használatát. Az alábbi lépések végrehajtásával telepítheti a csomagot, és kipróbálhatja az alapműveletek példakódját.
Létrehozhat egy egyéni kérdésre válaszoló projektet a saját tartalmaiból, például a gyakori kérdésekből vagy a termék kézikönyveiből. Ez a cikk egy példát tartalmaz arra, hogyan hozhat létre egyéni kérdéseket megválaszoló projektet egy termék kézikönyvéből a kérdések megválaszolásához.
Előfeltételek
- Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
- Egy nyelvi erőforrás , amelyen engedélyezve van az egyéni kérdések megválaszolása funkció. Jegyezze meg az erőforrás létrehozásakor kiválasztott Microsoft Entra-azonosítót, előfizetést és nyelvi erőforrásnevet.
Az első egyéni kérdés megválaszolási projekt létrehozása
Jelentkezzen be a Language Studióba azure-beli hitelesítő adataival.
Görgessen le a Kérdések megválaszolása szakaszhoz, és válassza az Egyéni kérdések megválaszolása megnyitása lehetőséget.
Ha az erőforrás még nincs csatlakoztatva az Azure Searchhez, válassza a Csatlakozás az Azure Searchhez lehetőséget. Ezzel megnyit egy új böngészőlapot az erőforrás Szolgáltatások paneljén az Azure Portalon.
Válassza az Egyéni kérdések megválaszolásának engedélyezése lehetőséget, válassza ki azt az Azure Search-erőforrást, amelyre hivatkozni szeretne, majd válassza az Alkalmaz lehetőséget.
Térjen vissza a Language Studio lapra. Előfordulhat, hogy frissítenie kell ezt a lapot ahhoz, hogy regisztrálja a módosítást az erőforrásban. Válassza az Új projekt létrehozása lehetőséget.
Válassza az I want to set the language for all projects created in this resource lehetőséget, válassza ki Angol> nyelvet, majd lépjen a következő gombra.
Adja meg a projekt nevét, például Mintaprojekt, a leírást, például Az első kérdés-válaszoló projektem, és hagyja meg az alapértelmezett választ a Nincs válasz beállítással.
Tekintse át a lehetőségeket, és válassza a Projekt létrehozása lehetőséget
A Források>URL-címek hozzáadása lehetőséget.
Válassza az Url-cím hozzáadása lehetőséget, adja meg a következő értékeket, majd válassza az Összes hozzáadása lehetőséget:
URL név URL-érték A Surface Book felhasználói útmutatója https://download.microsoft.com/download/7/B/1/7B10C82E-F520-4080-8516-5CF0D803EEE0/surface-book-user-guide-EN.pdf A kinyerési folyamat néhány percet vesz igénybe a dokumentum elolvasásához és a kérdések és válaszok azonosításához.
Miután sikeresen hozzáadta a forrást, szerkesztheti a forrás tartalmát, hogy további egyéni kérdésekre adott válaszkészleteket adjon hozzá.
A projekt tesztelése
Válassza ki a forrásra mutató hivatkozást, ekkor megnyílik a projekt szerkesztése lap.
Válassza a Teszt lehetőséget a menüsávon > Adja meg a kérdést, Hogyan állítsa be a surface bookot?. A rendszer a választ a forrás URL-címéből automatikusan azonosított és kinyert kérdés-válaszpárok alapján hozza létre:
Ha bejelöli a rövid válaszra vonatkozó jelölőnégyzetet, akkor egy pontos válasz is megjelenik, ha van ilyen, valamint a tesztpanel válaszszakasza, amikor kérdést tesz fel.
Válassza az Inspect (Vizsgálat) lehetőséget a válasz részletesebb vizsgálatához. A tesztablak segítségével tesztelheti a projekt módosításait a projekt üzembe helyezése előtt.
A Vizsgálat felületen láthatja a válasz magabiztossági szintjét a kérdés megválaszolásában, és közvetlenül szerkesztheti az adott kérdés-válasz párt.
A projekt üzembe helyezése
A projekt üzembe helyezésének menüjének megadásához válassza a Projekt üzembe helyezése ikont.
Projekt üzembe helyezésekor a projekt tartalma az
test
indexről átkerül egyprod
indexbe az Azure Search-ben.Válassza az >, majd amikor a rendszer kéri, válassza az Újra üzembe helyezés lehetőséget.
A projekt üzembe helyezése sikeresen megtörtént. A végpontot saját alkalmazásában vagy egy robotban használhatja kérdések megválaszolására.
Előfeltételek
- A cURL aktuális verziója. A rövid útmutatókban több parancssori kapcsolót is használnak, amelyeket a cURL dokumentációja is feljegyez.
- Azure-előfizetés – Ingyenes létrehozás
- Az egyéni kérdések megválaszolásához olyan nyelvi erőforrásra van szükség, amely rendelkezik az API-kulcs és a végpont létrehozásához engedélyezett egyéni kérdés megválaszolási funkcióval.
- A nyelvi erőforrás üzembe helyezése után válassza az Ugrás az erőforráshoz lehetőséget. Az API-hoz való csatlakozáshoz szüksége lesz a létrehozott erőforrás kulcsára és végpontjára. Illessze be a kulcsot és a végpontot az alábbi kódba a rövid útmutató későbbi részében.
- Ha nyelvi erőforrást szeretne létrehozni az Azure CLI-vel, adja meg a következő további tulajdonságokat:
--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>
- Egy meglévő, lekérdezendő projekt. Ha nem állít be projektet, kövesse a Language Studio rövid útmutatójában található utasításokat. Vagy adjon hozzá egy projektet, amely ezt a Surface felhasználói útmutató URL-címét használja adatforrásként.
Beállítás
Környezeti változók létrehozása
Az alkalmazásnak hitelesítenie kell az API-kérések küldéséhez. Éles környezetben használjon biztonságos módszert a hitelesítő adatok tárolására és elérésére. Ebben a példában a hitelesítő adatokat az alkalmazást futtató helyi gépen lévő környezeti változókba fogja írni.
A nyelvi erőforráskulcs környezeti változójának beállításához nyisson meg egy konzolablakot, és kövesse az operációs rendszer és a fejlesztési környezet utasításait.
- A
LANGUAGE_KEY
környezeti változó beállításához cserélje leyour-key
az erőforrás egyik kulcsára. - A
LANGUAGE_ENDPOINT
környezeti változó beállításához cserélje le ayour-endpoint
értéket az erőforrás végpontjára.
Fontos
Az Azure-erőforrásokhoz tartozó felügyelt identitásokkal rendelkező Microsoft Entra ID-hitelesítést javasoljuk, hogy ne tárolja a hitelesítő adatokat a felhőben futó alkalmazásokkal.
Óvatosan használja az API-kulcsokat. Ne foglalja bele közvetlenül az API-kulcsot a kódba, és soha ne tegye közzé nyilvánosan. API-kulcsok használata esetén biztonságosan tárolhatja őket az Azure Key Vaultban, rendszeresen elforgathatja a kulcsokat, és szerepköralapú hozzáférés-vezérléssel és hálózati hozzáférés-korlátozásokkal korlátozhatja az Azure Key Vaulthoz való hozzáférést. További információ az API-kulcsok biztonságos használatáról az alkalmazásokban: API-kulcsok az Azure Key Vaulttal.
Az AI-szolgáltatások biztonságáról további információt az Azure AI-szolgáltatásokhoz érkező kérelmek hitelesítése című témakörben talál.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Megjegyzés
Ha csak az aktuális futó konzolon kell hozzáférnie a környezeti változókhoz, a környezeti változót set
ahelyett setx
állíthatja be.
A környezeti változók hozzáadása után előfordulhat, hogy újra kell indítania a futó programokat, amelyeknek be kell olvasniuk a környezeti változókat, beleértve a konzolablakot is. Ha például a Visual Studiót használja szerkesztőként, indítsa újra a Visual Studiót a példa futtatása előtt.
Projekt lekérdezése
Válasz létrehozása projektből
Ha a REST API-kkal és a cURL-vel szeretne egyéni kérdéseket megválaszoló projektet lekérdezni, a következő információkra van szüksége:
Változó neve | Érték |
---|---|
Endpoint |
Ez az érték a Kulcsok és végpont szakaszban található meg, amikor megvizsgálja az erőforrást az Azure Portalon. Másik lehetőségként megtalálhatja az értéket a Language Studio>Get előrejelzési URL-címének üzembe helyezését. Példavégpont: https://southcentralus.api.cognitive.microsoft.com/ |
API-Key |
Ez az érték a Kulcsok és végpont szakaszban található meg, amikor megvizsgálja az erőforrást az Azure Portalon. Használhatja az 1. vagy a 2. kulcsot is. Mindig két érvényes kulcs van mindig a biztonságos kulcsváltáshoz nulla állásidő mellett. Alternatív megoldásként megtalálhatja az értéket a Language Studio>kérdések megválaszolása>Projekt üzembe helyezése>Előrejelzési URL lekérése szakaszban. A kulcsérték a mintakérés része. |
Project |
Az egyéni kérdésre válaszoló projekt neve. |
Deployment |
Két lehetséges érték létezik: test és production .
production attól függ, hogy telepítette-e a projektet a Language Studio-ból>, és megválaszolta a Projekt üzembe helyezésére vonatkozó>kérdést. |
A cURL parancs egy BASH-rendszerhéjból lesz végrehajtva. Szerkessze ezt a parancsot saját erőforrásnevével, erőforráskulcsával és JSON-értékeivel és JSON-méretével.
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}'
A fenti kód futtatásakor, ha az előfeltételek alapján használja az adatforrást, a következő választ kapja:
{
"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": []
}
}
]
}
A confidenceScore
függvény 0 és 1 közötti értéket ad vissza. Ezt úgy gondolhatja, mint egy százalékot, és szorozza meg 100-zal, így a 0,9185 megbízhatósági pontszám azt jelenti, hogy az egyéni kérdések megválaszolása 91,85% biztos abban, hogy ez a helyes válasz a kérdésre a projekt alapján.
Ha ki szeretné zárni azokat a válaszokat, ahol a megbízhatósági pontszám egy bizonyos küszöbérték alá esik, hozzáadhatja a paramétert 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}'
Mivel a kód előző végrehajtásából tudjuk, hogy a megbízhatósági pontszámunk a következő: .9185
a küszöbérték .95
beállítása az alapértelmezett válasz visszaadását eredményezi.
{
"answers": [
{
"questions": [],
"answer": "No good match found in KB",
"confidenceScore": 0.0,
"id": -1,
"metadata": {}
}
]
}
Szöveg lekérdezése projekt nélkül
Az előre összeállított REST API-val lehetősége van a testreszabott kérdésmegválaszolás használatára projekt nélkül is, amelyet a következőn keresztül hív meg query-text
. Ebben az esetben a kérdés megválaszolásához egy kérdést és a hozzá tartozó szöveges rekordokat is meg kell adnia, amelyeket a kérés elküldésekor meg szeretne keresni.
Ebben a példában csak a változókat API KEY
ENDPOINT
kell módosítani.
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'
Ez a példa a következő eredményt adja vissza:
{
"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
}
]
}
Használja ezt a gyorsútmutatót a .NET-hez készült egyéni kérdés-megválaszoló ügyfélkönyvtárhoz, hogy:
- Válasz kérése egy projekttől.
- Válasz kérése a kérdésével együtt elküldött szövegtörzsből.
- Kérje le a kérdésre adott válasz megbízhatósági pontszámát.
Referenciadokumentáció csomag (NuGet) |
Előfeltételek
- Azure-előfizetés – Ingyenes létrehozás
- A Visual Studio IDE vagy a .NET Core aktuális verziója.
- Az egyéni kérdések megválaszolásához olyan nyelvi erőforrásra van szükség, amely rendelkezik az API-kulcs és a végpont létrehozásához engedélyezett egyéni kérdés megválaszolási funkcióval.
- A nyelvi erőforrás üzembe helyezése után válassza az Ugrás az erőforráshoz lehetőséget. Az API-hoz való csatlakozáshoz szüksége lesz a létrehozott erőforrás kulcsára és végpontjára. Illessze be a kulcsot és a végpontot az alábbi kódba a rövid útmutató későbbi részében.
- Ha nyelvi erőforrást szeretne létrehozni az Azure CLI-vel, adja meg a következő további tulajdonságokat:
--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>
- Egy meglévő, lekérdezendő projekt. Ha még nem állított be projektet, kövesse a Language Studio rövid útmutatójában található utasításokat. Vagy adjon hozzá egy projektet, amely ezt a Surface felhasználói útmutató URL-címét használja adatforrásként.
Beállítás
Környezeti változók létrehozása
Az alkalmazásnak hitelesítenie kell az API-kérések küldéséhez. Éles környezetben használjon biztonságos módot a hitelesítő adatok tárolására és elérésére. Ebben a példában a hitelesítő adatokat az alkalmazást futtató helyi gépen lévő környezeti változókba fogja írni.
A nyelvi erőforráskulcs környezeti változójának beállításához nyisson meg egy konzolablakot, és kövesse az operációs rendszer és a fejlesztési környezet utasításait.
- A
LANGUAGE_KEY
környezeti változó beállításához cserélje leyour-key
az erőforrás egyik kulcsára. - A
LANGUAGE_ENDPOINT
környezeti változó beállításához cserélje leyour-endpoint
az erőforrás végpontját.
Fontos
Az Azure-erőforrásokhoz tartozó felügyelt identitásokkal rendelkező Microsoft Entra ID-hitelesítést javasoljuk, hogy ne tárolja a hitelesítő adatokat a felhőben futó alkalmazásokkal.
Óvatosan használja az API-kulcsokat. Ne foglalja bele közvetlenül az API-kulcsot a kódba, és soha ne tegye közzé nyilvánosan. API-kulcsok használata esetén biztonságosan tárolhatja őket az Azure Key Vaultban, rendszeresen elforgathatja a kulcsokat, és szerepköralapú hozzáférés-vezérléssel és hálózati hozzáférés-korlátozásokkal korlátozhatja az Azure Key Vaulthoz való hozzáférést. További információ az API-kulcsok biztonságos használatáról az alkalmazásokban: API-kulcsok az Azure Key Vaulttal.
Az AI-szolgáltatások biztonságáról további információt az Azure AI-szolgáltatásokhoz érkező kérelmek hitelesítése című témakörben talál.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Feljegyzés
Ha csak az aktuális futó konzolon kell hozzáférnie a környezeti változókhoz, a környezeti változót set
ahelyett setx
állíthatja be.
A környezeti változók hozzáadása után előfordulhat, hogy újra kell indítania a futó programokat, amelyeknek be kell olvasniuk a környezeti változókat, beleértve a konzolablakot is. Ha például a Visual Studiót használja szerkesztőként, indítsa újra a Visual Studiót a példa futtatása előtt.
CLI
Egy konzolablakban (például parancsmag, PowerShell vagy Bash) a dotnet new
paranccsal hozzon létre egy új konzolalkalmazást a névvel question-answering-quickstart
. Ez a parancs létrehoz egy egyszerű "„Helló világ!” alkalmazás" C#-projektet egyetlen forrásfájllal: program.cs.
dotnet new console -n question-answering-quickstart
Módosítsa a könyvtárat az újonnan létrehozott alkalmazásmappára. Az alkalmazást a következőkkel hozhatja létre:
dotnet build
A buildkimenet nem tartalmazhat figyelmeztetést vagy hibát.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Az alkalmazáskönyvtárban telepítse a .NET-hez készült egyéni kérdésmegoldó ügyfélkönyvtárat a következő paranccsal:
dotnet add package Azure.AI.Language.QuestionAnswering
Projekt lekérdezése
Válasz létrehozása projektből
Az alábbi példa lehetővé teszi egy projekt GetAnswers
lekérdezését, hogy választ kapjon a kérdésére.
Frissítenie kell az alábbi kódot, és meg kell adnia a saját értékeit a következő változókhoz.
Változó neve | Érték |
---|---|
endpoint |
Ez az érték a Kulcsok és végpont szakaszban található meg, amikor megvizsgálja az erőforrást az Azure Portalon. Másik lehetőségként megtalálhatja az értéket a Language Studio kérdés-válasz>projekt üzembe helyezése>opció alatt>, ahol az Előrejelzési URL-t kapja meg. Példavégpont: https://southcentralus.api.cognitive.microsoft.com/ |
credential |
Ez az érték a Kulcsok és végpont szakaszban található meg, amikor megvizsgálja az erőforrást az Azure Portalon. Használhatja az 1. vagy a 2. kulcsot is. Mindig legyen két érvényes kulcs a biztonságos kulcsváltáshoz, hogy elkerülhető legyen a leállás. Alternatívaként megtalálhatja az értéket a Language Studio kérdés megválaszolása, Projekt üzembe helyezése, Előrejelzési URL lekérése. A kulcsérték a mintakérés része. |
projectName |
Az egyéni kérdésre válaszoló projekt neve. |
deploymentName |
Két lehetséges érték létezik: test és production .
production attól függ, hogy telepítette-e a projektet a Language Studio-ból>, és megválaszolta a Projekt üzembe helyezésére vonatkozó>kérdést. |
Fontos
Ne felejtse el eltávolítani a kulcsot a kódból, amikor elkészült, és soha ne tegye közzé nyilvánosan. A hitelesítési adatok tárolására és elérésére használjon biztonságos módszert, például az Azure Key Vaultot. További információkért tekintse meg az Azure AI-szolgáltatások biztonsági cikkét.
Nyissa meg a program.cs fájlt a projektkönyvtárban, és cserélje le a következő kódra:
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}");
}
}
}
}
Bár a példánk változóit nehezen kodifikáljuk. Az éles környezetben használjon biztonságos módot a hitelesítő adatok tárolására és elérésére. Az Azure Key Vault például biztonságos kulcstárolót biztosít.
Miután frissítette a fenti kódot Program.cs
segítségével, és a megfelelő változóértékeket helyettesítette. Futtassa az alkalmazást az dotnet run
alkalmazáskönyvtárból származó paranccsal.
dotnet run
A válasz a következőképpen fog kinézni:
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.
Az egyéni kérdések megválaszolásával kapcsolatos magabiztosság mértékéről szóló információkért adjon hozzá egy további nyomtatási utasítást a meglévő nyomtatási utasítások alá:
Console.WriteLine($"Q:{question}");
Console.WriteLine($"A:{answer.Answer}");
Console.WriteLine($"({answer.Confidence})"); // add this line
Ha ismét végrehajtja a műveletet dotnet run
, egy megbízhatósági pontszámmal rendelkező eredményt kap:
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)
A megbízhatósági pontszám 0 és 1 közötti értéket ad vissza. Ezt úgy gondolhatja, mint egy százalékot, és szorozza meg 100-zal, így a 0,9185 megbízhatósági pontszám azt jelenti, hogy az egyéni kérdések megválaszolása 91,85% biztos abban, hogy ez a helyes válasz a kérdésre a projekt alapján.
Ha ki szeretné zárni azokat a válaszokat, ahol a megbízhatósági pontszám egy bizonyos küszöbérték alá esik, használja a AnswerOptions
a ConfidenceScoreThreshold
tulajdonság hozzáadásához.
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
Mivel a kód előző végrehajtásából tudjuk, hogy a megbízhatósági pontszámunk a következő: .9185
a küszöbérték .95
beállítása az alapértelmezett válasz visszaadását eredményezi.
Q:How much battery life do I have left?
A:No good match found in KB
(0)
Szöveg lekérdezése projekt nélkül
Az egyéni kérdések megválaszolását projekt nélkül is használhatja a következővel GetAnswersFromText
: . Ebben az esetben Ön ad meg egyéni kérdésválaszolást egy kérdéssel és a hozzá tartozó szövegrekordokkal, amelyeket a kérés elküldésekor meg szeretne keresni.
Ebben a példában csak a változókat endpoint
credential
kell módosítani.
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;
}
}
}
}
}
A fenti kód futtatásához cserélje le a Program.cs
fenti szkriptblokk tartalmára, és módosítsa a endpoint
változókat úgy credential
, hogy megfeleljenek az előfeltételek részeként létrehozott nyelvi erőforrásnak.
Ebben az esetben végigvezetjük az összes választ, és csak a 0,9-nél nagyobb megbízhatósági pontszámmal rendelkező választ adunk vissza. Ha többet szeretne megtudni a rendelkezésre álló lehetőségekről.GetAnswersFromText
Ez a gyors útmutató a Python egyéni kérdésmegoldó ügyfélkönyvtárához a következőkre használható:
- Válasz kérése egy projekttől.
- Válasz kérése a kérdésével együtt elküldött szövegtörzsből.
- Kérje le a kérdésre adott válasz megbízhatósági pontszámát.
Csomag (PyPI) | További minták | Kódtár forráskódja
Előfeltételek
- Azure-előfizetés – Ingyenes létrehozás
- Python 3.x
- Az egyéni kérdések megválaszolásához olyan nyelvi erőforrásra van szükség, amely rendelkezik az API-kulcs és a végpont létrehozásához engedélyezett egyéni kérdés megválaszolási funkcióval.
- A nyelvi erőforrás üzembe helyezése után válassza az Ugrás az erőforráshoz lehetőséget. Az API-hoz való csatlakozáshoz szüksége van a létrehozott erőforrás kulcsára és végpontjára. Illessze be a kulcsot és a végpontot az alábbi kódba a rövid útmutató későbbi részében.
- Ha nyelvi erőforrást szeretne létrehozni az Azure CLI-vel, adja meg a következő egyéb tulajdonságokat:
--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>
- Egy meglévő, lekérdezendő projekt. Ha még nem állított be projektet, kövesse a Language Studio rövid útmutatójában található utasításokat. Vagy adjon hozzá egy projektet, amely ezt a Surface felhasználói útmutató URL-címét használja adatforrásként.
Beállítás folyamat
Telepítse a klienskönyvtárat
A Python telepítése után az ügyfélkódtárat a következővel telepítheti:
pip install azure-ai-language-questionanswering
Projekt lekérdezése
Válasz létrehozása projektből
Az alábbi példa lehetővé teszi egy projekt lekérdezését get_answers használatával, hogy választ kapjon a kérdésére. Ezt a kódot egy dedikált .py fájlba vagy a Jupyter Notebook/Lab egyik cellába másolhatja.
Frissítenie kell az alábbi kódot, és meg kell adnia a saját értékeit a következő változókhoz.
Változó neve | Érték |
---|---|
endpoint |
Ez az érték a Kulcsok és végpont szakaszban található meg, amikor megvizsgálja az erőforrást az Azure Portalon. Másik lehetőségként megtalálhatja az értéket a Language Studio kérdések megválaszolásában, Projekt telepítése, Előrejelzési URL lekérése pontokban. Példavégpont: https://southcentralus.api.cognitive.microsoft.com/ |
credential |
Ez az érték a Kulcsok és végpont szakaszban található meg, amikor megvizsgálja az erőforrást az Azure Portalon. Használhatja az 1. vagy a 2. kulcsot is. Mindig két érvényes kulcs van a biztonságos kulcsváltáshoz állásidő nélkül. Alternatívaként megtalálhatja az értéket a Language Studio alkalmazásban a kérdések megválaszolása funkcióban, a projekt telepítése után az Előrejelzési URL lekérése részben. A kulcsérték a mintakérés része. |
knowledge_base_project |
A kérdésre válaszoló projekt neve. |
deployment |
Két lehetséges érték létezik: test és production .
production attól függ, hogy telepítette-e a projektet a Language Studio-ból>, és megválaszolta a Projekt üzembe helyezésére vonatkozó>kérdést. |
Fontos
Ne felejtse el eltávolítani a kulcsot a kódból, amikor elkészült, és soha ne tegye közzé nyilvánosan. Éles környezetben biztonságosan használjon olyan megoldásokat a hitelesítő adatai tárolására és elérésére, mint például az Azure Key Vault. További információkért tekintse meg az Azure AI-szolgáltatások biztonsági cikkét.
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()
Miközben a példánk változóit nehezen kódoltuk. A gyártási környezetben használja a hitelesítő adatok biztonságos tárolási és elérési módját. Az Azure Key Vault például biztonságos kulcstárolót biztosít.
A fenti kód futtatásakor, ha az adatforrást az előfeltételek alapján használja, a következő választ kapja:
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.
Azt az információt, hogy az egyéni kérdések megválaszolása mennyire magabiztos abban, hogy ez a helyes válasz, úgy kaphatja meg, hogy egy újabb kiíratási utasítást ad hozzá a meglévő kiíratási utasítások alá.
print("Q: {}".format(question))
print("A: {}".format(output.answers[0].answer))
print("Confidence Score: {}".format(output.answers[0].confidence)) # add this line
Most egy megbízhatósági pontszámmal rendelkező eredményt fog kapni:
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
A megbízhatósági pontszám 0 és 1 közötti értéket ad vissza. Ezt úgy gondolhatja, mint egy százalékot, és szorozza meg 100-zal, így a 0,9185 megbízhatósági pontszám azt jelenti, hogy az egyéni kérdések megválaszolása 91,85% biztos abban, hogy ez a helyes válasz a kérdésre a projekt alapján.
Ha ki szeretné zárni azokat a válaszokat, amelyeknél a megbízhatósági pontszám egy bizonyos küszöbérték alá esik, módosíthatja az AnswerOptions paramétert a confidence_threshold
paraméter hozzáadásához.
output = client.get_answers(
confidence_threshold = 0.95, #add this line
question = question,
project_name=knowledge_base_project,
deployment_name=deployment
)
Mivel a kód előző végrehajtásából tudjuk, hogy a megbízhatósági pontszámunk a következő: .9185
a küszöbérték .95
beállítása az alapértelmezett válasz visszaadását eredményezi.
Q: How much battery life do I have left?
A: No good match found in KB
Confidence Score: 0.0
Szöveg lekérdezése projekt nélkül
Az egyéni kérdések megválaszolását projekt nélkül is használhatja get_answers_from_text. Ebben az esetben egyéni kérdések megválaszolását is meg kell adnia egy kérdéshez és a hozzá tartozó szövegrekordokhoz, amelyeket a kérés elküldésekor meg szeretne keresni.
Ebben a példában csak a változókat endpoint
credential
kell módosítani.
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()
Ezt a kódot átmásolhatja egy dedikált .py fájlba vagy egy új cellába a Jupyter Notebook/Lab alkalmazásban. Ez a példa a következő eredményt adja vissza:
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
Ebben az esetben végigvezetjük az összes választ, és csak a 0,9-nél nagyobb megbízhatósági pontszámmal rendelkező választ adunk vissza. Az get_answers_from_text elérhető lehetőségekről az AnswersFromTextOptions paraméterek áttekintésével tájékozódhat.
Erőforrások tisztítása
Ha törölni és eltávolítani szeretne egy Azure AI-szolgáltatási előfizetést, törölheti az erőforrást vagy az erőforráscsoportot. Az erőforráscsoport törlése a hozzá társított egyéb erőforrásokat is törli.
Ismerkedés a REST API-val
Az egyéni kérdések megválaszolási folyamatának automatizálásáról a REST API dokumentációjában tájékozódhat. A szerzői funkció jelenleg csak a REST API-val érhető el: