Sdílet prostřednictvím


Rychlý start: Vlastní zodpovězení otázek (CQA)

Tento rychlý start vás provede základními kroky potřebnými k vytvoření, testování a nasazení vlastního projektu pro odpovědi na otázky (CQA) v Microsoft Foundry. Bez ohledu na to, jestli přecházíte ze sady Language Studio nebo začínáte úplně od začátku, je tento rychlý start určený pro vás. Poskytuje jasné a použitelné pokyny k dosažení rychlého a úspěšného nasazení projektu CQA.

Poznámka:

  • Pokud už máte jazyk Azure v nástrojích Foundry nebo více službách – ať už se používá samostatně nebo prostřednictvím sady Language Studio – můžete tyto existující prostředky jazyka dál používat na portálu Foundry. Další informace naleznete v tématu Jak používat Nástroje Foundry na portálu Foundry.
  • Důrazně doporučujeme, abyste ve Foundry používali prostředek Foundry; Tyto pokyny však můžete použít také pomocí jazykového prostředku.

Požadavky

Než začnete, potřebujete následující prostředky a oprávnění:

Začínáme

  1. Přejděte na Foundry.

  2. Pokud ještě nejste přihlášení, portál vás vyzve, abyste to udělali pomocí svých přihlašovacích údajů Azure.

  3. Po přihlášení můžete vytvořit nebo získat přístup k existujícím projektům v foundry.

  4. Pokud pro tento úkol ještě nejste ve svém projektu, vyberte ho.

Vytvoření úlohy jemného ladění CQA

Ve Foundry slouží úloha pro jemné doladění jako vaše pracovní prostředí pro řešení CQA. Dříve se úkol vyladění označoval jako projekt CQA. Ve starší dokumentaci CQA můžete narazit na oba termíny, které se používají zaměnitelně.

  1. Po výběru projektu Foundry, který chcete použít pro účely tohoto rychlého startu, vyberte v levé navigační nabídce jemné ladění .

    Snímek obrazovky s výběrem nabídky jemného ladění v Foundry

  2. V hlavním okně vyberte kartu jemného ladění služby AI a pak tlačítko + Jemné ladění.

    Snímek obrazovky s tlačítkem vyladit v Foundry

  3. V okně Pro vyladění služby vyberte kartu Vlastní odpověď na otázky a pak vyberte Další.

    Snímek obrazovky karty přizpůsobeného odpovídání na otázky ve Foundry

  4. V okně Vytvoření úlohy jemného ladění CQA vyberte prostředek Propojené služby Azure AI Search. Další informace najdete v tématuKonfigurace připojení prostředků Azure.

  5. Potom vyplňte pole Název a jazyk . Pro tento projekt můžete ponechat výchozí odpověď, pokud není vrácena žádná odpověď tak, jak je (nebyla nalezena žádná odpověď).

  6. Vyberte tlačítko Vytvořit.

Přidání zdroje znalostní báze CQA

Znalostní báze CQA je strukturovaná sada dvojic otázek a odpovědí optimalizovaných pro konverzační umělou inteligenci. Znalostní báze používá zpracování přirozeného jazyka k interpretaci uživatelských dotazů a vracení kontextových a přesných odpovědí z konkrétní datové sady.

  1. V nabídce Začínáme vyberte Spravovat zdroje.

    Snímek obrazovky s výběrem správy zdrojů v Foundry

  2. V hlavním okně vyberte rozevírací nabídku + Přidat zdroj .

  3. V rozevírací nabídce můžete vybrat Přidat chat, Přidat adresy URL nebo Přidat soubory.

    Snímek obrazovky s rozevírací nabídkou pro přidání zdroje v aplikaci Foundry

  4. Pro tento projekt zvolte Přidat chitchat.

  5. V okně Přidat nový zdroj zvolte Možnost Popisný.

    Snímek obrazovky s výběrem zdroje a tlačítkem Přidat ve Foundry.

  6. Nakonec vyberte Přidat. Vytvoření zdroje může trvat několik minut.

  7. Po vytvoření se zdroj zobrazí v okně Spravovat zdroje .

    Snímek obrazovky se seznamem správy zdrojů v Foundry

Testování znalostní báze

  1. V nabídce Začínáme vyberte znalostní bázi Test.

  2. Do pole Zadejte otázku zadejte následující text a pak vyberte Spustit.

      Hello! How are you doing today?
    
    
  3. V kontrolním rozhraní můžete zkontrolovat úroveň spolehlivosti odpovědi a zvolit nejvhodnější odpověď.

    Snímek obrazovky s kontrolním rozhraním v Foundry

Nasazení znalostní báze

Nasazení znalostní báze CQA znamená publikování obsahu kurátorovaných otázek a odpovědí jako živého prohledávatelného koncového bodu. Tento proces přesune projekt z testovací fáze do produkčního prostředí, které umožňuje klientským aplikacím ho používat pro různé projekty a řešení, včetně chatovacích robotů.

  1. Po dokončení kontroly zvolte v nabídce Začínáme oddíl Nasadit znalostní bázi.

  2. Nejprve v hlavním okně Nasadit znalostní bázi vyberte tlačítko Nasadit a pak v automaticky otevírané okno Nasadit tento projekt. Nasazení trvá několik minut.

  3. Po dokončení nasazení se nasazený projekt zobrazí v okně Nasadit znalostní bázi .

A je to! Znalostní báze CQA (Custom Question Answering) poskytuje rozhraní přirozeného jazyka pro vaše data, které uživatelům umožňuje interagovat s informacemi konverzačním způsobem. Nasazením tohoto řešení můžete vytvářet pokročilé chatovací roboty a interaktivní agenty, kteří rozumí uživatelským otázkám, poskytují přesné odpovědi a upravují měnící se informační požadavky.

Požadavky

  • Aktuální verze cURL. V rychlých startech se používá několik přepínačů příkazového řádku, které jsou uvedené v dokumentaci cURL.
  • Předplatné Azure – Vytvoření bezplatného předplatného
  • Vlastní odpovídání na otázky vyžaduje jazykový prostředek s povolenou funkcí vlastního odpovídání na otázky, aby bylo možné vygenerovat klíč API a koncový bod.
    • Po nasazení jazykového prostředku vyberte Přejít k prostředku. K připojení k rozhraní API potřebujete klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložte do kódu později v rychlém startu.
  • Vytvořte prostředek jazyka pomocí Azure CLI a zadejte následující vlastnosti: --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>
  • Existující projekt k dotazování. Pokud jste projekt nenastavili, můžete postupovat podle pokynů v rychlém startu pro Language Studio. Nebo přidejte projekt, který používá tuto adresu URL uživatelské příručky pro Surface jako zdroj dat.

Nastavení

Vytvořte proměnné prostředí

Aby vaše aplikace odesílala požadavky rozhraní API, musí být ověřená. V produkčním prostředí použijte bezpečný způsob ukládání a přístupu k vašim přihlašovacím údajům. V tomto příkladu zapíšete přihlašovací údaje do proměnných prostředí na místním počítači, na kterém běží aplikace.

Pokud chcete nastavit proměnnou prostředí pro váš klíč jazykového prostředku, otevřete konzolové okno a postupujte podle pokynů pro váš operační systém a vývojové prostředí.

  • Pokud chcete nastavit proměnnou LANGUAGE_KEY prostředí, nahraďte your-key jedním z klíčů pro vaše zdroje.
  • Pokud chcete nastavit proměnnou LANGUAGE_ENDPOINT prostředí, nahraďte your-endpoint koncovým bodem vašeho prostředku.

Důležité

Doporučujeme ověřování Microsoft Entra ID se spravovanými identitami pro prostředky Azure , abyste se vyhnuli ukládání přihlašovacích údajů s aplikacemi, které běží v cloudu.

Používejte klíče rozhraní API s opatrností. Nezahrnujte klíč API přímo do svého kódu a nikdy ho nezveřejňujte veřejně. Pokud používáte klíče rozhraní API, bezpečně je uložte ve službě Azure Key Vault, pravidelně je obměňujte a omezte přístup ke službě Azure Key Vault pomocí řízení přístupu na základě rolí a omezení přístupu k síti. Další informace o bezpečném používání klíčů ROZHRANÍ API ve vašich aplikacích najdete v tématu Klíče rozhraní API se službou Azure Key Vault.

Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Poznámka:

Pokud potřebujete přístup pouze k proměnným prostředí v aktuální spuštěné konzole, můžete nastavit proměnnou set prostředí namísto setx.

Po přidání proměnných prostředí budete možná muset restartovat všechny spuštěné programy, které budou muset číst proměnné prostředí, včetně okna konzoly. Pokud například jako editor používáte Sadu Visual Studio, restartujte sadu Visual Studio před spuštěním příkladu.

Dotazování projektu

Vygenerování odpovědi z projektu

Pokud chcete provádět dotazy na vlastní projekt odpovědí na otázky pomocí rozhraní REST API a cURL, potřebujete následující informace:

Název proměnné Hodnota
Endpoint Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku na webu Azure Portal. Případně můžete najít hodnotu v Language Studio>otázky odpovídání>nasazení projektu>získat URL predikce. Ukázkový koncový bod je: https://southcentralus.cognitiveservices.azure.com/
API-Key Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku na webu Azure Portal. Můžete použít klíč1 nebo klíč2. Vždy mít dva platné klíče vždy pro zabezpečenou obměnu klíčů s nulovým výpadkem. Případně můžete najít hodnotu v Language Studio>otázky odpovídání>nasazení projektu>získat URL predikce. Hodnota klíče je součástí příkladového požadavku.
Project Název vlastního projektu odpovídání na otázky
Deployment Existují dvě možné hodnoty: testa production. production závisí na tom, jak nasadíte projekt z otázky jazyka Studio>a odpovíte na>projekt Nasazení.

Příkaz cURL se spustí z prostředí BASH. Upravte tento příkaz s vlastním názvem prostředku, klíčem prostředku a hodnotami JSON a velikostí souboru JSON.

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}'

Pokud při spuštění kódu používáte zdroj dat z požadovaných součástí, získáte odpověď, která vypadá takto:

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

Vrátí confidenceScore hodnotu mezi 0 a 1. Zvažte skóre spolehlivosti jako procento vynásobením 100. Například skóre spolehlivosti 0,9185 značí, že vlastní systém pro odpovědi na otázky je 91,85% přesvědčen, že jeho odpověď je správná na základě informací o projektu.

Pokud chcete vyloučit odpovědi, ve kterých skóre spolehlivosti klesne pod určitou prahovou hodnotu, můžete parametr přidat 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.cognitiveservices.azure.com//language/:query-knowledgebases?projectName=Sample-project&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'

Vzhledem k tomu, že z předchozího spuštění kódu víme, že naše skóre důvěry je: .9185, nastavení prahové hodnoty na .95 má za následek vrácení výchozí odpovědi.

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

Dotazování textu bez projektu

Vlastní odpovědi na otázky můžete použít i bez projektu s předem připraveným vlastním rozhraním REST API pro odpovědi na otázky, které se volá prostřednictvím query-text. V takovém případě zadáte odpověď na otázku a související textové záznamy, které chcete vyhledat v době odeslání požadavku.

V tomto příkladu stačí upravit pouze proměnné pro API KEY a ENDPOINT.

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'

Tento příklad vrátí výsledek:

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

Pomocí tohoto rychlého startu pro vlastní klientskou knihovnu pro odpovědi na otázky pro .NET můžete:

  • Získejte odpověď z projektu.
  • Získejte odpověď z textu, který odešlete spolu s otázkou.
  • Získejte skóre spolehlivosti odpovědi na vaši otázku.

Referenční dokumentace | Balíček (NuGet) | Vzorky | Zdrojový kód knihovny

Požadavky

  • Předplatné Azure – Vytvoření bezplatného předplatného
  • Integrované vývojové prostředí sady Visual Studio nebo aktuální verze .NET Core.
  • Vlastní odpovídání na otázky vyžaduje jazykový prostředek s povolenou funkcí vlastního odpovídání na otázky, aby bylo možné vygenerovat klíč API a koncový bod.
    • Po nasazení jazykového prostředku vyberte Přejít k prostředku. K připojení k rozhraní API potřebujete klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložte do kódu později v rychlém startu.
  • Vytvořte prostředek jazyka pomocí Azure CLI a zadejte následující vlastnosti: --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>
  • Existující projekt k dotazování. Pokud projekt nemáte, můžete postupovat podle pokynů v rychlém startu pro Language Studio. Nebo přidejte projekt, který používá tuto adresu URL uživatelské příručky pro Surface jako zdroj dat.

Nastavení

Vytvořte proměnné prostředí

Aby vaše aplikace odesílala požadavky rozhraní API, musí být ověřená. V produkčním prostředí použijte bezpečný způsob ukládání a přístupu k vašim přihlašovacím údajům. V tomto příkladu zapíšete přihlašovací údaje do proměnných prostředí na místním počítači, na kterém běží aplikace.

Pokud chcete nastavit proměnnou prostředí pro váš klíč jazykového prostředku, otevřete konzolové okno a postupujte podle pokynů pro váš operační systém a vývojové prostředí.

  • Pokud chcete nastavit proměnnou LANGUAGE_KEY prostředí, nahraďte your-key jedním z klíčů pro vaše zdroje.
  • Pokud chcete nastavit proměnnou LANGUAGE_ENDPOINT prostředí, nahraďte your-endpoint koncovým bodem vašeho prostředku.

Důležité

Doporučujeme ověřování Microsoft Entra ID se spravovanými identitami pro prostředky Azure , abyste se vyhnuli ukládání přihlašovacích údajů s aplikacemi, které běží v cloudu.

Používejte klíče rozhraní API s opatrností. Nezahrnujte klíč API přímo do svého kódu a nikdy ho nezveřejňujte veřejně. Pokud používáte klíče rozhraní API, bezpečně je uložte ve službě Azure Key Vault, pravidelně je obměňujte a omezte přístup ke službě Azure Key Vault pomocí řízení přístupu na základě rolí a omezení přístupu k síti. Další informace o bezpečném používání klíčů ROZHRANÍ API ve vašich aplikacích najdete v tématu Klíče rozhraní API se službou Azure Key Vault.

Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.

setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Poznámka:

Pokud potřebujete přístup pouze k proměnným prostředí v aktuální spuštěné konzole, můžete nastavit proměnnou set prostředí namísto setx.

Po přidání proměnných prostředí budete možná muset restartovat všechny spuštěné programy, které budou muset číst proměnné prostředí, včetně okna konzoly. Pokud například jako editor používáte Sadu Visual Studio, restartujte sadu Visual Studio před spuštěním příkladu.

CLI

V okně konzoly (například cmd, PowerShell nebo Bash) pomocí dotnet new příkazu vytvořte novou konzolovou aplikaci s názvem question-answering-quickstart. Tento příkaz vytvoří jednoduchý projekt "Hello World" C# s jedním zdrojovým souborem: program.cs.

dotnet new console -n question-answering-quickstart

Změňte adresář na nově vytvořenou složku aplikace. Aplikaci můžete sestavit pomocí následujících:

dotnet build

Výstup sestavení by neměl obsahovat žádná upozornění ani chyby.

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

V adresáři aplikace nainstalujte vlastní klientskou knihovnu pro odpovědi na otázky pro .NET pomocí následujícího příkazu:

dotnet add package Azure.AI.Language.QuestionAnswering

Dotazování projektu

Vygenerování odpovědi z projektu

Následující příklad umožňuje dotazovat se na projekt pomocí GetAnswers získání odpovědi na vaši otázku.

Potřebujete aktualizovat kód a zadat vlastní hodnoty pro následující proměnné:

Název proměnné Hodnota
endpoint Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku na webu Azure Portal. Případně můžete najít hodnotu v Language Studio>otázky odpovídání>nasazení projektu>získat URL predikce. Ukázkový koncový bod je: https://southcentralus.cognitiveservices.azure.com/
credential Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku na webu Azure Portal. Můžete použít klíč1 nebo klíč2. Vždy mít dva platné klíče vždy pro zabezpečenou obměnu klíčů s nulovým výpadkem. Případně můžete najít hodnotu v Language Studio>otázky odpovídání>nasazení projektu>získat URL predikce. Hodnota klíče je součástí příkladového požadavku.
projectName Název vlastního projektu odpovídání na otázky
deploymentName Existují dvě možné hodnoty: testa production. production závisí na tom, že jste projekt nasadili z otázky jazyka Studio>a odpovídá na>projekt Nasazení.

Důležité

Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace naleznete v části Zabezpečení Foundry Tools.

V adresáři projektu otevřete soubor program.cs a nahraďte následujícím kódem:

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

Momentálně pevně zakódujeme proměnné pro náš příklad. V produkčním prostředí zvažte použití zabezpečeného způsobu ukládání a přístupu k vašim přihlašovacím údajům. Azure Key Vault například poskytuje zabezpečené úložiště klíčů.

Po aktualizaci Program.cs a nahrazení správnými hodnotami proměnných. Spusťte aplikaci příkazem dotnet run z adresáře aplikace.

dotnet run

Odpověď vypadá takto:

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.

Pokud potřebujete informace o skóre spolehlivosti, přidejte následující příkaz print pod existující příkazy print:

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

Pokud provedete dotnet run akci znovu, zobrazí se vám výsledek se skóre spolehlivosti:

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)

Zvažte skóre spolehlivosti jako procento vynásobením 100. Například skóre spolehlivosti 0,9185 značí, že vlastní systém pro odpovědi na otázky je 91,85% přesvědčen, že jeho odpověď je správná na základě informací o projektu.

Pokud chcete vyloučit odpovědi, ve kterých skóre spolehlivosti klesne pod určitou prahovou hodnotu, použijte AnswerOptions k přidání ConfidenceScoreThreshold vlastnosti.

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

Vzhledem k tomu, že z předchozího spuštění kódu víme, že naše skóre důvěry je: .9185, nastavení prahové hodnoty na .95 má za následek vrácení výchozí odpovědi.

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

Dotazování textu bez projektu

Můžete také použít vlastní odpovídání na otázky bez nutnosti projektu s GetAnswersFromText. V takovém případě zadáte vlastní odpověď na otázku i související textové záznamy, které chcete při odeslání požadavku vyhledat.

V tomto příkladu stačí upravit pouze proměnné pro endpoint a credential.

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

        }
    }
}

Pokud chcete kód spustit, nahraďte Program.cs obsahem bloku skriptu a upravte endpointcredential proměnné tak, aby odpovídaly prostředku jazyka, který jste vytvořili v rámci požadavků.

V tomto případě iterujeme všechny odpovědi a vrátíme pouze odpověď s nejvyšším skóre spolehlivosti, které je větší než 0,9. Abyste se dozvěděli více o možnostech, které jsou k dispozici pro GetAnswersFromText.

Pomocí této rychlé příručky můžete používat vlastní knihovnu klienta pro odpovědi na otázky v Pythonu k tomu:

  • Získejte odpověď z projektu.
  • Získejte odpověď z textu, který odešlete spolu s otázkou.
  • Získejte skóre spolehlivosti odpovědi na vaši otázku.

Balíček (PyPI) | Vzorky | Zdrojový kód knihovny

Požadavky

  • Předplatné Azure – Vytvoření bezplatného předplatného
  • Python 3.x
  • Vlastní odpovídání na otázky vyžaduje jazykový prostředek s povolenou funkcí vlastního odpovídání na otázky, aby bylo možné vygenerovat klíč API a koncový bod.
    • Po nasazení jazykového prostředku vyberte Přejít k prostředku. K připojení k rozhraní API potřebujete klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložte do kódu později v rychlém startu.
  • Vytvořte prostředek jazyka pomocí Azure CLI a zadejte následující vlastnosti: --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>
  • Existující projekt k dotazování. Pokud projekt nemáte, můžete postupovat podle pokynů v rychlém startu pro Language Studio. Nebo přidejte projekt, který používá tuto adresu URL uživatelské příručky pro Surface jako zdroj dat.

Nastavení

Instalace klientské knihovny

Po instalaci Pythonu můžete nainstalovat klientskou knihovnu pomocí:

pip install azure-ai-language-questionanswering

Dotazování projektu

Vygenerování odpovědi z projektu

Tento příklad umožňuje dotazovat se na projekt pomocí get_answers, abyste získali odpověď na vaši otázku. Tento kód můžete zkopírovat do vyhrazeného souboru .py nebo do buňky v aplikaci Jupyter Notebook/Lab.

Musíte aktualizovat kód a zadat vlastní hodnoty pro následující proměnné.

Název proměnné Hodnota
endpoint Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku na webu Azure Portal. Případně můžete najít hodnotu v Language Studio>otázky odpovídání>nasazení projektu>získat URL predikce. Ukázkový koncový bod je: https://southcentralus.cognitiveservices.azure.com/
credential Tuto hodnotu najdete v části Klíče a koncový bod při zkoumání prostředku na webu Azure Portal. Můžete použít klíč1 nebo klíč2. Vždy mít dva platné klíče vždy pro zabezpečenou obměnu klíčů s nulovým výpadkem. Případně můžete najít hodnotu v Language Studio>otázky odpovídání>nasazení projektu>získat URL predikce. Hodnota klíče je součástí příkladového požadavku.
knowledge_base_project Název projektu odpovídání na otázky
deployment Existují dvě možné hodnoty: testa production. production.

Důležité

Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení Foundry Tools.

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

Momentálně pevně zakódujeme proměnné pro náš příklad. V produkčním prostředí zvažte použití zabezpečeného způsobu ukládání a přístupu k vašim přihlašovacím údajům. Azure Key Vault například poskytuje zabezpečené úložiště klíčů.

Pokud při spuštění kódu používáte zdroj dat z požadovaných součástí, získáte odpověď, která vypadá takto:

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.

Informace o skóre jistoty dají následující příkazy tisku:

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

Dostanete výsledek se skóre spolehlivosti:

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

Zvažte skóre spolehlivosti jako procento vynásobením 100. Například skóre spolehlivosti 0,9185 značí, že vlastní systém pro odpovědi na otázky je 91,85% přesvědčen, že jeho odpověď je správná na základě informací o projektu.

Pokud chcete vyloučit odpovědi, kde skóre spolehlivosti klesne pod určitou prahovou hodnotu, můžete upravit AnswerOptions a přidat confidence_threshold parametr.

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

Vzhledem k tomu, že z předchozího spuštění kódu víme, že naše skóre důvěry je: .9185, nastavení prahové hodnoty na .95 má za následek vrácení výchozí odpovědi.

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

Dotazování textu bez projektu

Vlastní odpovědi na otázky můžete použít i bez projektu s get_answers_from_text. V takovém případě zadáte vlastní odpověď na otázku i související textové záznamy, které chcete při odeslání požadavku vyhledat.

V tomto příkladu stačí upravit pouze proměnné pro endpoint a credential.

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

Tento kód můžete zkopírovat do vyhrazeného souboru .py nebo do nové buňky v aplikaci Jupyter Notebook/Lab. Tento příklad vrátí výsledek:

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

V tomto případě iterujeme všechny odpovědi a vrátíme pouze odpověď s nejvyšším skóre spolehlivosti, které je větší než 0,9. Další informace o možnostech dostupných v get_answers_from_text najdete v parametrech AnswersFromTextOptions.

Vyčištění prostředků

Pokud chcete vyčistit a odebrat prostředek Azure AI, můžete odstranit jednotlivé prostředky nebo celou skupinu prostředků. Pokud odstraníte skupinu prostředků, odstraní se také všechny prostředky obsažené v této skupině.

Zkoumání rozhraní REST API

Další kroky