Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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í:
- Aktivní předplatné Azure. Pokud ho nemáte, vytvořte si ho zdarma.
- Požadovaná oprávnění. Ujistěte se, že osoba, která vytváří účet a projekt, má přiřazenou roli vlastníka účtu Azure AI na úrovni předplatného. Tento požadavek splňuje také role Přispěvatel nebo Přispěvatel služeb Cognitive Services v rámci předplatného. Další informace najdete v tématuŘízení přístupu na základě role (RBAC).
- Prostředek Foundry nebo Prostředek Jazyka.
- Prostředek Azure AI Search (vyžaduje se pro přístup k CQA). Další informace o připojení prostředku Azure AI Search najdete v tématuKonfigurace připojení v Foundry.
- Projekt Foundry vytvořený v Foundry. Další informace naleznete v tématuVytvoření projektu Foundry.
Začínáme
Přejděte na Foundry.
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.
Po přihlášení můžete vytvořit nebo získat přístup k existujícím projektům v foundry.
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ě.
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í .
V hlavním okně vyberte kartu jemného ladění služby AI a pak tlačítko + Jemné ladění.
V okně Pro vyladění služby vyberte kartu Vlastní odpověď na otázky a pak vyberte Další.
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.
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ěď).
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.
V nabídce Začínáme vyberte Spravovat zdroje.
V hlavním okně vyberte rozevírací nabídku + Přidat zdroj .
V rozevírací nabídce můžete vybrat Přidat chat, Přidat adresy URL nebo Přidat soubory.
Pro tento projekt zvolte Přidat chitchat.
V okně Přidat nový zdroj zvolte Možnost Popisný.
Nakonec vyberte Přidat. Vytvoření zdroje může trvat několik minut.
Po vytvoření se zdroj zobrazí v okně Spravovat zdroje .
Testování znalostní báze
V nabídce Začínáme vyberte znalostní bázi Test.
Do pole Zadejte otázku zadejte následující text a pak vyberte Spustit.
Hello! How are you doing today?V kontrolním rozhraní můžete zkontrolovat úroveň spolehlivosti odpovědi a zvolit nejvhodnější odpověď.
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ů.
Po dokončení kontroly zvolte v nabídce Začínáme oddíl Nasadit znalostní bázi.
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.
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_KEYprostředí, nahraďteyour-keyjedním z klíčů pro vaše zdroje. - Pokud chcete nastavit proměnnou
LANGUAGE_ENDPOINTprostředí, nahraďteyour-endpointkoncový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_KEYprostředí, nahraďteyour-keyjedním z klíčů pro vaše zdroje. - Pokud chcete nastavit proměnnou
LANGUAGE_ENDPOINTprostředí, nahraďteyour-endpointkoncový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
- Referenční dokumentace API pro vytváření obsahu
- Příklady cURL API pro autorskou tvorbu
- Referenční informace k rozhraní API modulu runtime