Delen via


Quickstart: aangepaste vragen beantwoorden (CQA)

In deze quickstart wordt u begeleid bij de essentiële stappen die nodig zijn voor het maken, testen en implementeren van een aangepast CQA-project (Vraag beantwoorden) in Azure AI Foundry. Of u nu overstapt van Language Studio of helemaal opnieuw begint, deze quickstart is voor u. Het biedt duidelijke en bruikbare instructies voor een snelle en succesvolle CQA-projectimplementatie.

Notitie

  • Als u al een Azure AI-taal of multiserviceresource hebt, ongeacht of u deze zelf of via Language Studio gebruikt, kunt u deze bestaande taalresources blijven gebruiken in de Azure AI Foundry-portal. Zie Azure AI-services gebruiken in de Azure AI Foundry-portal voor meer informatie.
  • We raden u ten zeerste aan een Azure AI Foundry-resource te gebruiken in AI Foundry; U kunt deze instructies echter ook volgen met behulp van een taalresource.

Vereisten

Voordat u aan de slag gaat, hebt u de volgende resources en machtigingen nodig:

Get started

  1. Navigeer naar Azure AI Foundry.

  2. Als u nog niet bent aangemeld, wordt u in de portal gevraagd dit te doen met uw Azure-referenties.

  3. Zodra u zich hebt aangemeld, kunt u uw bestaande projecten maken of openen in Azure AI Foundry.

  4. Als u nog niet bij uw project bent voor deze taak, selecteert u deze.

Uw CQA-taak voor het afstemmen van uw CQA maken

In De Azure AI Foundry fungeert een taak voor afstemming als uw werkruimte voor uw CQA-oplossingen. Voorheen werd een taak voor het afstemmen van een CQA-project genoemd. U kunt beide termen tegenkomen die door elkaar worden gebruikt in oudere CQA-documentatie.

  1. Nadat u het Azure AI Foundry-project hebt geselecteerd dat u voor deze quickstart wilt gebruiken, selecteert u het afstemmen in het linkernavigatiemenu.

    Schermopname van de selectie van het menu afstemmen in Azure AI Foundry.

  2. Selecteer in het hoofdvenster het tabblad Voor het afstemmen van de AI-service en vervolgens de knop + Afstemmen.

    Schermopname van de knop Verfijnen in Azure AI Foundry.

  3. Kies in het venster Service maken het tabblad Aangepaste vraag beantwoorden en selecteer vervolgens Volgende.

    Schermopname van het tabblad Aangepaste vragen beantwoorden in Azure AI Foundry.

  4. Selecteer uw Connected Azure AI Search-resource in het taakvenster CQA maken voor het afstemmen van taken . ZieAzure-resourceverbindingen configureren voor meer informatie.

  5. Vul vervolgens de velden Naam en Taal in. Voor dit project kunt u het standaardantwoord achterlaten wanneer er geen antwoord wordt geretourneerd zoals is (geen antwoord gevonden).

  6. Selecteer de knop Create.

Een CQA Knowledge Base-bron toevoegen

Een CQA Knowledge Base is een gestructureerde set vraag-en-antwoordparen die zijn geoptimaliseerd voor conversationele AI. De Knowledge Base maakt gebruik van verwerking van natuurlijke taal om gebruikersquery's te interpreteren en contextbewuste, nauwkeurige antwoorden van een specifieke gegevensset te retourneren.

  1. Selecteer Bronnen beheren in het menu Aan de slag.

    Schermopname van het beheren van de selectie van bronnen in Azure AI Foundry.

  2. Selecteer in het hoofdvenster de vervolgkeuzelijst + Bron toevoegen .

  3. In de vervolgkeuzelijst kunt u Chit Chat toevoegen, URL's toevoegen of Bestanden toevoegen selecteren.

    Schermopname van het vervolgkeuzemenu Bron toevoegen in Azure AI Foundry.

  4. Voor dit project kiezen we Chitchat toevoegen.

  5. In het venster Nieuwe bron toevoegen kiezen we Vriendelijk.

    Schermopname van de selectie van de bron en de knop Toevoegen in Azure AI Foundry.

  6. Ten slotte selecteer Toevoegen. Het kan enkele minuten duren voordat de bron is gemaakt.

  7. Zodra de bron is gemaakt, wordt deze weergegeven in het venster Bronnen beheren .

    Schermopname van de lijst met bronnen beheren in Azure AI Foundry.

Uw Knowledge Base testen

  1. Selecteer Knowledge Base testen in het menu Aan de slag .

  2. Typ het volgende in het veld Typ uw vraag en selecteer Vervolgens Uitvoeren.

      Hello! How are you doing today?
    
    
  3. In de inspectie-interface kunt u het betrouwbaarheidsniveau van de reactie controleren en het meest geschikte antwoord kiezen.

    Schermopname van de inspectie-interface in Azure AI Foundry.

Uw Knowledge Base implementeren

Het implementeren van een CQA Knowledge Base betekent het publiceren van uw gecureerde vraag-en-antwoord-inhoud als een live, doorzoekbaar eindpunt. Met dit proces wordt uw project verplaatst van een testfase naar een productieomgeving, zodat clienttoepassingen het kunnen gebruiken voor verschillende projecten en oplossingen, waaronder chatbots.

  1. Zodra uw inspectie is voltooid, kiest u de sectie Knowledge Base implementeren in het menu Aan de slag .

  2. Selecteer eerst de knop Implementeren in het hoofdvenster van de Knowledge Base implementeren en vervolgens in het pop-upvenster Dit project implementeren . Het implementeren duurt enkele minuten.

  3. Nadat de implementatie is voltooid, wordt uw geïmplementeerde project weergegeven in het venster Knowledge Base implementeren .

Dat is het! Uw Custom Question Answering (CQA) knowledge base biedt een natuurlijke taalinterface voor uw gegevens, zodat gebruikers op een gesprek kunnen communiceren met informatie. Door deze oplossing te implementeren, kunt u geavanceerde chatbots en interactieve agents maken die gebruikersvragen begrijpen, nauwkeurige antwoorden geven en zich aanpassen aan veranderende informatievereisten.

Vereisten

  • De huidige versie van cURL. In deze quickstarts worden verschillende opdrachtregelopties gebruikt, die worden vermeld in de cURL-documentatie.
  • Azure-abonnement: Krijg een gratis abonnement
  • Voor het beantwoorden van aangepaste vragen is een taalresource vereist waarbij de functie voor het beantwoorden van aangepaste vragen is ingeschakeld om een API-sleutel en eindpunt te genereren.
    • Nadat de taalresource is geïmplementeerd, selecteert u Ga naar de resource. U hebt de sleutel en het eindpunt nodig van de resource die u maakt om verbinding te maken met de API. Plak uw sleutel en eindpunt verderop in de code in de quickstart.
  • Maak een taalresource met Azure CLI en geef de volgende eigenschappen op: --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>
  • Een bestaand project om te bevragen. Als u geen project hebt ingesteld, kunt u de instructies volgen in de quickstart van Language Studio. Of voeg een project toe dat gebruikmaakt van deze URL van de Surface-gebruikershandleiding als gegevensbron.

Configureren

Omgevingsvariabelen maken

Uw toepassing moet worden geverifieerd om API-aanvragen te verzenden. Gebruik voor productie een veilige manier om uw inloggegevens op te slaan en te benaderen. In dit voorbeeld schrijft u uw inloggegevens naar omgevingsvariabelen op de lokale computer die de applicatie uitvoert.

Als u de omgevingsvariabele voor uw taalresourcesleutel wilt instellen, opent u een consolevenster en volgt u de instructies voor uw besturingssysteem en ontwikkelomgeving.

  • Als u de LANGUAGE_KEY omgevingsvariabele wilt instellen, vervangt u deze door your-key een van de sleutels voor uw resource.
  • Als u de LANGUAGE_ENDPOINT omgevingsvariabele wilt instellen, vervangt u your-endpoint door het eindpunt van uw resource.

Belangrijk

We raden Microsoft Entra ID-authenticatie aan met beheerde identiteiten voor Azure-resources om te voorkomen dat referenties worden opgeslagen bij uw toepassingen die in de cloud worden uitgevoerd.

Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u API-sleutels gebruikt, slaat u deze veilig op in Azure Key Vault, draait u de sleutels regelmatig en beperkt u de toegang tot Azure Key Vault met behulp van op rollen gebaseerd toegangsbeheer en netwerktoegangsbeperkingen. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.

Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-services.

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Notitie

Als u alleen toegang nodig hebt tot de omgevingsvariabelen in de huidige actieve console, kunt u de omgevingsvariabele instellen in set plaats van setx.

Nadat u de omgevingsvariabelen hebt toegevoegd, moet u mogelijk alle actieve programma's opnieuw opstarten die de omgevingsvariabelen moeten lezen, inclusief het consolevenster. Als u bijvoorbeeld Visual Studio als editor gebruikt, start u Visual Studio opnieuw voordat u het voorbeeld uitvoert.

Een query uitvoeren op een project

Een antwoord genereren op basis van een project

Als u een query wilt uitvoeren op een aangepast vraag-antwoordproject met de REST-API's en cURL, hebt u de volgende informatie nodig:

Naam van de variabele Waarde
Endpoint Deze waarde vindt u in de sectie Sleutels en eindpunt bij het onderzoeken van uw resource vanuit de Azure Portal. U kunt de waarde ook vinden in Language Studio>vraag beantwoorden>project implementeren>Voorspellings-URL ophalen. Een voorbeeldeindpunt is: https://southcentralus.cognitiveservices.azure.com/
API-Key Deze waarde vindt u in de sectie Sleutels en eindpunt bij het onderzoeken van uw resource vanuit de Azure Portal. U kunt Key1 of Key2 gebruiken. Altijd twee geldige sleutels hebben voor veilige sleutelrotatie met nul downtime. U kunt de waarde ook vinden in Language Studio>vraag beantwoorden>project implementeren>Voorspellings-URL ophalen. De sleutelwaarde maakt deel uit van de voorbeeldaanvraag.
Project De naam van uw aangepaste vraagantwoordproject.
Deployment Er zijn twee mogelijke waarden: test, en production. production is afhankelijk van het implementeren van uw project vanuit Language Studio-vraag>voor het beantwoorden van>het implementatieproject.

De cURL-opdracht wordt uitgevoerd vanuit een BASH-shell. Bewerk deze opdracht met uw eigen resourcenaam, resourcesleutel, JSON-waarden en JSON-grootte.

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.cognitiveservices.azure.com/language/:query-knowledgebases?projectName={YOUR_PROJECT_NAME}&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'

Wanneer u de code uitvoert en u de gegevensbron uit de vereisten gebruikt, krijgt u een antwoord dat er als volgt uitziet:

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

De confidenceScore functie retourneert een waarde tussen 0 en 1. Bekijk de betrouwbaarheidsscore als een percentage door deze te vermenigvuldigen met 100. Een betrouwbaarheidsscore van 0,9185 geeft bijvoorbeeld aan dat het aangepaste vraagantwoordsysteem 91,85 is% ervan overtuigd is dat het antwoord juist is op basis van de projectgegevens.

Als u antwoorden wilt uitsluiten waarbij de betrouwbaarheidsscore onder een bepaalde drempelwaarde valt, kunt u de confidenceScoreThreshold parameter toevoegen.

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.cognitiveservices.azure.com//language/:query-knowledgebases?projectName=Sample-project&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'

Aangezien we weten uit onze eerdere uitvoering van de code dat onze betrouwbaarheidsscore is: .9185, leidt het instellen van de drempelwaarde op .95 ertoe dat het standaardantwoord wordt geretourneerd.

{
  "answers": [
    {
      "questions": [],
      "answer": "No good match found in KB",
      "confidenceScore": 0.0,
      "id": -1,
      "metadata": {}
    }
  ]
}

Querytekst zonder project

U kunt ook gebruik maken van aangepaste vraagantwoordservice zonder een project met de vooraf gebouwde aangepaste vraagantwoord REST API, die wordt aangeroepen via query-text. In dit geval beantwoordt u vragen door zowel een vraag als de bijbehorende tekstgegevens te verstrekken waar u naar een antwoord wilt zoeken op het moment dat de aanvraag wordt ingediend.

Voor dit voorbeeld hoeft u alleen de variabelen voor API KEY en ENDPOINT aan te passen.

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.cognitiveservices.azure.com/language/:query-text?&api-version=2021-10-01'

In dit voorbeeld wordt een resultaat geretourneerd van:

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

Gebruik deze quickstartgids voor de clientbibliotheek voor .NET om aangepaste vragen te beantwoorden:

  • Haal een antwoord op van een project.
  • Haal een antwoord op uit een teksttekst die u samen met uw vraag verzendt.
  • Haal de betrouwbaarheidsscore op voor het antwoord op uw vraag.

Referentiedocumentatie | Pakket (NuGet) | Monsters | Broncode van bibliotheek

Vereisten

  • Azure-abonnement: Krijg een gratis abonnement
  • De Visual Studio IDE of de huidige versie van .NET Core.
  • Voor het beantwoorden van aangepaste vragen is een taalresource vereist waarbij de functie voor het beantwoorden van aangepaste vragen is ingeschakeld om een API-sleutel en eindpunt te genereren.
    • Nadat de taalresource is geïmplementeerd, selecteert u Ga naar de resource. U hebt de sleutel en het eindpunt nodig van de resource die u maakt om verbinding te maken met de API. Plak uw sleutel en eindpunt verderop in de code in de quickstart.
  • Maak een taalresource met Azure CLI en geef de volgende eigenschappen op: --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>
  • Een bestaand project om te bevragen. Als u geen project hebt, kunt u de instructies volgen in de quickstart van Language Studio. Of voeg een project toe dat gebruikmaakt van deze URL van de Surface-gebruikershandleiding als gegevensbron.

Configureren

Omgevingsvariabelen maken

Uw toepassing moet worden geverifieerd om API-aanvragen te verzenden. Gebruik voor productie een veilige manier om uw inloggegevens op te slaan en te benaderen. In dit voorbeeld schrijft u uw inloggegevens naar omgevingsvariabelen op de lokale computer die de applicatie uitvoert.

Als u de omgevingsvariabele voor uw taalresourcesleutel wilt instellen, opent u een consolevenster en volgt u de instructies voor uw besturingssysteem en ontwikkelomgeving.

  • Als u de LANGUAGE_KEY omgevingsvariabele wilt instellen, vervangt u deze door your-key een van de sleutels voor uw resource.
  • Als u de LANGUAGE_ENDPOINT omgevingsvariabele wilt instellen, vervangt u your-endpoint door het eindpunt van uw resource.

Belangrijk

We raden Microsoft Entra ID-authenticatie aan met beheerde identiteiten voor Azure-resources om te voorkomen dat referenties worden opgeslagen bij uw toepassingen die in de cloud worden uitgevoerd.

Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u API-sleutels gebruikt, slaat u deze veilig op in Azure Key Vault, draait u de sleutels regelmatig en beperkt u de toegang tot Azure Key Vault met behulp van op rollen gebaseerd toegangsbeheer en netwerktoegangsbeperkingen. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.

Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-services.

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Notitie

Als u alleen toegang nodig hebt tot de omgevingsvariabelen in de huidige actieve console, kunt u de omgevingsvariabele instellen in set plaats van setx.

Nadat u de omgevingsvariabelen hebt toegevoegd, moet u mogelijk alle actieve programma's opnieuw opstarten die de omgevingsvariabelen moeten lezen, inclusief het consolevenster. Als u bijvoorbeeld Visual Studio als editor gebruikt, start u Visual Studio opnieuw voordat u het voorbeeld uitvoert.

CLI

Gebruik in een consolevenster (zoals cmd, PowerShell of Bash) de opdracht dotnet new om een nieuwe console-app te maken met de naam question-answering-quickstart. Met deze opdracht maakt u een eenvoudig Hallo wereld-C#-project met één bronbestand: program.cs.

dotnet new console -n question-answering-quickstart

Verander uw huidige map naar de zojuist aangemaakte app-map. U kunt de toepassing maken met:

dotnet build

De build-uitvoer mag geen waarschuwingen of fouten bevatten.

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

Installeer in de toepassingsmap de clientbibliotheek voor aangepaste vraag- en antwoordfuncties voor .NET met de volgende opdracht:

dotnet add package Azure.AI.Language.QuestionAnswering

Een query uitvoeren op een project

Een antwoord genereren op basis van een project

In het volgende voorbeeld kunt u een query uitvoeren op een project met behulp van GetAnswers een antwoord op uw vraag.

U moet de code bijwerken en uw eigen waarden opgeven voor de volgende variabelen:

Naam van de variabele Waarde
endpoint Deze waarde vindt u in de sectie Sleutels en eindpunt bij het onderzoeken van uw resource vanuit de Azure Portal. U kunt de waarde ook vinden in Language Studio>vraag beantwoorden>project implementeren>Voorspellings-URL ophalen. Een voorbeeldeindpunt is: https://southcentralus.cognitiveservices.azure.com/
credential Deze waarde vindt u in de sectie Sleutels en eindpunt bij het onderzoeken van uw resource vanuit de Azure Portal. U kunt Key1 of Key2 gebruiken. Altijd twee geldige sleutels hebben voor veilige sleutelrotatie met nul downtime. U kunt de waarde ook vinden in Language Studio>vraag beantwoorden>project implementeren>Voorspellings-URL ophalen. De sleutelwaarde maakt deel uit van de voorbeeldaanvraag.
projectName De naam van uw aangepaste vraagantwoordproject.
deploymentName Er zijn twee mogelijke waarden: test, en production. production is afhankelijk van de implementatie van uw project vanuit Language Studio-vraag>voor het beantwoorden van>het implementatieproject.

Belangrijk

Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en maak deze sleutel nooit openbaar. Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie Beveiliging van Azure AI-services voor meer informatie.

Open in de projectmap het program.cs-bestand en vervang het door de volgende code:

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

Terwijl we de variabelen voor ons voorbeeld hard coderen. Overweeg om voor productie een veilige manier te gebruiken voor het opslaan en toegang krijgen tot uw inloggegevens. Azure Key Vault biedt bijvoorbeeld beveiligde sleutelopslag.

Na het bijwerken Program.cs en vervangen van de juiste variabelewaarden. Voer de toepassing uit vanuit uw toepassingsmap met de opdracht dotnet run.

dotnet run

Het antwoord ziet er als volgt uit:

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.

Voor informatie over betrouwbaarheidsscores voegt u de volgende afdrukinstructie toe onder de bestaande afdrukinstructies:

Console.WriteLine($"Q:{question}");
Console.WriteLine($"A:{answer.Answer}");
Console.WriteLine($"({answer.Confidence})"); // add this line

Als u het opnieuw uitvoert dotnet run , ontvangt u nu een resultaat met een betrouwbaarheidsscore:

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)

Bekijk de betrouwbaarheidsscore als een percentage door deze te vermenigvuldigen met 100. Een betrouwbaarheidsscore van 0,9185 geeft bijvoorbeeld aan dat het aangepaste vraagantwoordsysteem 91,85 is% ervan overtuigd is dat het antwoord juist is op basis van de projectgegevens.

Als u antwoorden wilt uitsluiten waarbij de betrouwbaarheidsscore onder een bepaalde drempelwaarde valt, gebruikt AnswerOptions u om de ConfidenceScoreThreshold eigenschap toe te voegen.

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

Aangezien we weten uit onze eerdere uitvoering van de code dat onze betrouwbaarheidsscore is: .9185, leidt het instellen van de drempelwaarde op .95 ertoe dat het standaardantwoord wordt geretourneerd.

Q:How much battery life do I have left?
A:No good match found in KB
(0)

Querytekst zonder project

U kunt ook aangepaste vragen beantwoorden zonder een project met GetAnswersFromText. In dit geval biedt u aangepaste vraagbeantwoording met zowel een vraag als de bijbehorende tekstrecords die u wilt doorzoeken om een antwoord te vinden wanneer de aanvraag wordt verzonden.

Voor dit voorbeeld hoeft u alleen de variabelen voor endpoint en credential aan te passen.

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}.cognitiveservices.azure.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;
                }
            }

        }
    }
}

Als u de code wilt uitvoeren, vervangt u de Program.cs inhoud van het scriptblok en wijzigt u de endpoint variabelen credential zodat deze overeenkomen met de taalresource die u hebt gemaakt als onderdeel van de vereisten.

In dit geval herhalen we alle antwoorden en retourneren we alleen het antwoord met de hoogste betrouwbaarheidsscore die groter is dan 0,9. Meer informatie over de beschikbare opties met GetAnswersFromText.

Gebruik deze quickstart voor de klantbibliotheek voor aangepaste vraagbeantwoording in Python om:

  • Haal een antwoord op van een project.
  • Haal een antwoord op uit een teksttekst die u samen met uw vraag verzendt.
  • Haal de betrouwbaarheidsscore op voor het antwoord op uw vraag.

Pakket (PyPI) | Monsters | Broncode van bibliotheek

Vereisten

  • Azure-abonnement: Krijg een gratis abonnement
  • Python 3.x
  • Voor het beantwoorden van aangepaste vragen is een taalresource vereist waarbij de functie voor het beantwoorden van aangepaste vragen is ingeschakeld om een API-sleutel en eindpunt te genereren.
    • Nadat de taalresource is geïmplementeerd, selecteert u Ga naar de resource. U hebt de sleutel en het eindpunt nodig van de resource die u maakt om verbinding te maken met de API. Plak uw sleutel en eindpunt verderop in de code in de quickstart.
  • Maak een taalresource met Azure CLI en geef de volgende eigenschappen op: --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>
  • Een bestaand project om te bevragen. Als u geen project hebt, kunt u de instructies volgen in de quickstart van Language Studio. Of voeg een project toe dat gebruikmaakt van deze URL van de Surface-gebruikershandleiding als gegevensbron.

Configureren

De clientbibliotheek installeren

Na de installatie van Python kunt u de clientbibliotheek installeren met:

pip install azure-ai-language-questionanswering

Een query uitvoeren op een project

Een antwoord genereren op basis van een project

In het voorbeeld kunt u een query uitvoeren op een project met behulp van get_answers om een antwoord op uw vraag te krijgen. U kunt deze code kopiëren naar een toegewezen .py-bestand of in een cel in Jupyter Notebook/Lab.

U moet de code bijwerken en uw eigen waarden opgeven voor de volgende variabelen.

Naam van de variabele Waarde
endpoint Deze waarde vindt u in de sectie Sleutels en eindpunt bij het onderzoeken van uw resource vanuit de Azure Portal. U kunt de waarde ook vinden in Language Studio>vraag beantwoorden>project implementeren>Voorspellings-URL ophalen. Een voorbeeldeindpunt is: https://southcentralus.cognitiveservices.azure.com/
credential Deze waarde vindt u in de sectie Sleutels en eindpunt bij het onderzoeken van uw resource vanuit de Azure Portal. U kunt Key1 of Key2 gebruiken. Altijd twee geldige sleutels hebben voor veilige sleutelrotatie met nul downtime. U kunt de waarde ook vinden in Language Studio>vraag beantwoorden>project implementeren>Voorspellings-URL ophalen. De sleutelwaarde maakt deel uit van de voorbeeldaanvraag.
knowledge_base_project De naam van uw vraagantwoordproject.
deployment Er zijn twee mogelijke waarden: test, en production. production.

Belangrijk

Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en maak deze sleutel nooit openbaar. Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het beveiligingsartikel over Azure AI-services voor meer informatie.

from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient

endpoint = "https://{YOUR-ENDPOINT}.cognitiveservices.azure.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()

Terwijl we de variabelen voor ons voorbeeld hard coderen. Overweeg om voor productie een veilige manier te gebruiken voor het opslaan en toegang krijgen tot uw inloggegevens. Azure Key Vault biedt bijvoorbeeld beveiligde sleutelopslag.

Wanneer u de code uitvoert en u de gegevensbron uit de vereisten gebruikt, krijgt u een antwoord dat er als volgt uitziet:

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.

Voeg de volgende afdrukinstructies toe voor informatie over betrouwbare scores:

print("Q: {}".format(question))
print("A: {}".format(output.answers[0].answer))
print("Confidence Score: {}".format(output.answers[0].confidence)) # add this line 

U ontvangt een resultaat met een betrouwbaarheidsscore:

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

Bekijk de betrouwbaarheidsscore als een percentage door deze te vermenigvuldigen met 100. Een betrouwbaarheidsscore van 0,9185 geeft bijvoorbeeld aan dat het aangepaste vraagantwoordsysteem 91,85 is% ervan overtuigd is dat het antwoord juist is op basis van de projectgegevens.

Als u antwoorden wilt uitsluiten waarbij de betrouwbaarheidsscore onder een bepaalde drempelwaarde valt, kunt u de AnswerOptions wijzigen om de confidence_threshold parameter toe te voegen.

        output = client.get_answers(
            confidence_threshold = 0.95, #add this line
            question = question,
            project_name=knowledge_base_project,
            deployment_name=deployment
        )

Aangezien we weten uit onze eerdere uitvoering van de code dat onze betrouwbaarheidsscore is: .9185, leidt het instellen van de drempelwaarde op .95 ertoe dat het standaardantwoord wordt geretourneerd.

Q: How much battery life do I have left?
A: No good match found in KB
Confidence Score: 0.0

Querytekst zonder project

U kunt ook aangepaste vragen beantwoorden zonder een project met get_answers_from_text. In dit geval biedt u aangepaste vraagbeantwoording met zowel een vraag als de bijbehorende tekstrecords die u wilt doorzoeken om een antwoord te vinden wanneer de aanvraag wordt verzonden.

Voor dit voorbeeld hoeft u alleen de variabelen voor endpoint en credential aan te passen.

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}.cognitiveservices.azure.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()

U kunt deze code kopiëren naar een toegewezen .py-bestand of naar een nieuwe cel in Jupyter Notebook/Lab. In dit voorbeeld wordt een resultaat geretourneerd van:

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

In dit geval herhalen we alle antwoorden en retourneren we alleen het antwoord met de hoogste betrouwbaarheidsscore die groter is dan 0,9. Raadpleeg de parameters AnswersFromTextOptions voor meer informatie over de opties die beschikbaar zijn voor get_answers_from_text.

Middelen opschonen

Als u een Azure AI-resource wilt opschonen en verwijderen, kunt u de afzonderlijke resource of de hele resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook alle resources in de resourcegroep verwijderd.

De REST-API verkennen

Volgende stappen