Rövid útmutató: egyéni kérdések megválaszolása

Feljegyzés

Az Azure Open AI On Your Data nagy nyelvi modelleket (LLM-eket) használ az egyéni kérdések megválaszolásához hasonló eredmények előállításához. Ha egy meglévő egyéni kérdés megválaszolási projektet szeretne csatlakoztatni az Azure Open AI On Your Data szolgáltatáshoz, tekintse meg útmutatónkat.

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.

Ismerkedés az ügyfélkódtárra válaszoló egyéni kérdésekkel. 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

  1. Jelentkezzen be a Language Studióba azure-beli hitelesítő adataival.

  2. 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.

    Egyéni kérdések megválaszolásának megnyitása

  3. Ha az erőforrás még nincs csatlakoztatva az Azure Searchhez, válassza Csatlakozás az Azure Search szolgáltatáshoz. Ezzel megnyit egy új böngészőlapot az erőforrás Szolgáltatások paneljén az Azure Portalon.

    Csatlakozás az Azure Search szolgáltatásba

  4. 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.

    Egyéni kérdések megválaszolásának engedélyezése

  5. 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.

  6. Válassza ki azt a lehetőséget, amelyet az erőforrásban> létrehozott összes projekt nyelvének meg szeretnék adni, válassza az Angol> kijelölés tovább lehetőséget.

  7. Adja meg a Mintaprojekt projekt nevét, az Első kérdés megválaszolása projekt leírását, és hagyja meg az alapértelmezett választ a Nem válasz beállítással.

  8. Tekintse át a lehetőségeket, és válassza a Projekt létrehozása lehetőséget

  9. A Források kezelése lapon válassza a Forrás>URL-címek hozzáadása lehetőséget.

  10. 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-cím neve 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

  1. Válassza ki a forrásra mutató hivatkozást, ekkor megnyílik a projekt szerkesztése lap.

  2. 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:

    Kérdés-csevegési felület tesztelése

    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.

  3. 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 megbízhatósági intervallum megtekintése

    A Vizsgálat felületen láthatja, hogy ez a válasz megválaszolja a kérdést, és közvetlenül szerkeszt egy adott kérdés- és válaszválaszpárt.

A projekt üzembe helyezése

  1. A projekt üzembe helyezésének menüjének megadásához válassza a Projekt üzembe helyezése ikont.

    Projekt üzembe helyezése

    Projekt üzembe helyezésekor a projekt tartalma az indexről az test Azure Search egyik indexére prod változik.

  2. Válassza az Üzembe helyezés lehetőséget>, majd amikor a rendszer kéri, válassza az Újra üzembe helyezés lehetőséget.

    Sikeres üzembe helyezés

    A projekt üzembe helyezése sikeresen megtörtént. A végponttal válaszolhat a saját egyéni alkalmazásában feltett kérdésekre, és válaszolhat vagy robotban is.

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ó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.

Tipp.

Ne vegye fel közvetlenül a kulcsot a kódba, és soha ne tegye közzé nyilvánosan. Az Azure AI-szolgáltatások biztonsági cikkében további hitelesítési lehetőségeket talál, például az Azure Key Vaultot.

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.

  1. A LANGUAGE_KEY környezeti változó beállításához cserélje le your-key az erőforrás egyik kulcsára.
  2. A LANGUAGE_ENDPOINT környezeti változó beállításához cserélje le your-endpoint az erőforrás végpontját.
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.

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>kérdésében, amely megválaszolja>a Project>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. Másik lehetőségként megtalálhatja az értéket a Language Studio>kérdésében, amely megválaszolja>a Project>Get előrejelzési URL-címének üzembe helyezését. 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. productionattó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 egyéni kérdések megválaszolását projekt nélkül is használhatja az előre összeállított, REST API-val válaszoló egyéni kérdés megválaszolásával, amelyet a rendszer a következőn keresztül query-texthív meg. 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 KEYENDPOINTkell 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
    }
  ]
}

Ez a rövid útmutató a .NET-hez készült ügyfélkódtárra adott egyéni kérdés megválaszolásához a következőhöz 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.

Referenciadokumentáció csomag (NuGet) | További minták | Kódtár forráskódja |

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.

Tipp.

Ne vegye fel közvetlenül a kulcsot a kódba, és soha ne tegye közzé nyilvánosan. Az Azure AI-szolgáltatások biztonsági cikkében további hitelesítési lehetőségeket talál, például az Azure Key Vaultot.

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.

  1. A LANGUAGE_KEY környezeti változó beállításához cserélje le your-key az erőforrás egyik kulcsára.
  2. A LANGUAGE_ENDPOINT környezeti változó beállításához cserélje le your-endpoint az erőforrás végpontját.
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.

parancssori felület

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és megválaszolására szolgáló egyéni kérdést 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ében, amely megválaszolja>a Project>Get előrejelzési URL-címének üzembe helyezését. 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 mindig a biztonságos kulcsváltáshoz nulla állásidő mellett. Másik lehetőségként megtalálhatja az értéket a Language Studio>kérdésében, amely megválaszolja>a Project>Get előrejelzési URL-címének üzembe helyezését. 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. productionattó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ágos módon tárolhatja és érheti el a hitelesítő adatait, 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. Éles környezetben fontolja meg a hitelesítő adatok biztonságos tárolását és elérését. Az Azure Key Vault például biztonságos kulcstárolót biztosít.

Miután frissítette Program.cs a fenti kódot, és a megfelelő változóértékeket helyettesített. 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ának magabiztosságáról az a információ, hogy ez a helyes válasz, 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, a tulajdonság hozzáadásához ConfidenceScoreThreshold használjaAnswerOptions.

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 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 endpointcredentialkell 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 rövid útmutató a Python ügyféloldali kódtárát megválaszoló egyéni kérdéshez a következőhöz 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.

Referenciadokumentáció 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

Telepítse az ügyfélkódtá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ésében, amely megválaszolja>a Project>Get előrejelzési URL-címének üzembe helyezését. 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 mindig a biztonságos kulcsváltáshoz nulla állásidő mellett. Másik lehetőségként megtalálhatja az értéket a Language Studio>kérdésében, amely megválaszolja>a Project>Get előrejelzési URL-címének üzembe helyezését. 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. productionattó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ágos módon tárolhatja és érheti el a hitelesítő adatait, 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.

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. Éles környezetben fontolja meg a hitelesítő adatok biztonságos tárolását és elérésé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.

Az egyéni kérdések megválaszolásának magabiztosságáról az a információ, hogy ez a helyes válasz, adjon hozzá egy másik nyomtatási utasítást a meglévő nyomtatá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 a 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 endpointcredentialkell 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.

Az erőforrások eltávolí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:

Következő lépések