Klientská knihovna odpovědí na otázky služby Azure Cognitive Language Service pro Python – verze 1.1.0
Odpovídání na otázky je cloudová služba rozhraní API, která umožňuje vytvořit konverzační vrstvu otázek a odpovědí nad stávajícími daty. Umožňuje vytvořit znalostní báze extrahováním otázek a odpovědí z částečně strukturovaného obsahu, včetně nejčastějších dotazů, příruček a dokumentů. Odpovědi na otázky uživatelů s nejlepšími odpověďmi z otázek ve vašem znalostní báze – automaticky. Vaše znalostní báze jsou také chytřejší, protože se neustále učí z chování uživatelů.
Zdrojový kód | Balíček (PyPI) | Referenční dokumentace k | rozhraní API Dokumentace k | produktu Vzorky
Právní omezení
Podpora balíčků Azure SDK Python pro Python 2.7 skončila 1. ledna 2022. Další informace a dotazy najdete na https://github.com/Azure/azure-sdk-for-python/issues/20691
Začínáme
Požadavky
- K použití tohoto balíčku se vyžaduje Python 3.7 nebo novější.
- Předplatné Azure
- Prostředek služby jazyka
Instalace balíčku
Nainstalujte klientskou knihovnu Azure Question Answering pro Python pomocí pip:
pip install azure-ai-language-questionanswering
Poznámka: Tato verze klientské knihovny se ve výchozím nastavení nastaví na verzi
2021-10-01
rozhraní API služby .
Ověření klienta
Pokud chcete pracovat se službou Question Answering, budete muset vytvořit instanci třídy QuestionAnsweringClient nebo instanci AuthoringClient pro správu projektů v rámci vašeho prostředku. K vytvoření instance objektu klienta budete potřebovat koncový bod a klíč rozhraní API . Další informace týkající se ověřování ve službách Cognitive Services najdete v tématu Ověřování požadavků na Azure Cognitive Services.
Získání klíče rozhraní API
Koncový bod a klíč rozhraní API můžete získat z prostředku jazyka na webu Azure Portal.
Případně můžete klíč rozhraní API získat z prostředku jazyka pomocí následujícího příkazu Azure CLI .
az cognitiveservices account keys list --resource-group <resource-group-name> --name <resource-name>
Vytvoření třídy QuestionAnsweringClient
Jakmile určíte koncový bod a klíč rozhraní API , můžete vytvořit instanci objektu QuestionAnsweringClient:
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient
endpoint = "https://{myaccount}.api.cognitive.microsoft.com"
credential = AzureKeyCredential("{api-key}")
client = QuestionAnsweringClient(endpoint, credential)
Create AuthoringClient
Pomocí koncového bodu a klíče rozhraní API můžete vytvořit instanci AuthoringClient:
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering.authoring import AuthoringClient
endpoint = "https://{myaccount}.api.cognitive.microsoft.com"
credential = AzureKeyCredential("{api-key}")
client = AuthoringClient(endpoint, credential)
Vytvoření klienta s přihlašovacími údaji Azure Active Directory
Pokud chcete použít přihlašovací údaje tokenu Azure Active Directory (AAD), zadejte instanci požadovaného typu přihlašovacích údajů získané z knihovny azure-identity . Upozorňujeme, že regionální koncové body nepodporují ověřování AAD. Vytvořte pro svůj prostředek vlastní název subdomény , abyste mohli tento typ ověřování používat.
Ověřování pomocí AAD vyžaduje určité počáteční nastavení:
- Instalace azure-identity
- Registrace nové aplikace AAD
- Udělte přístup ke službě Language přiřazením role Čtenář jazyka služeb Cognitive Services k vašemu instančnímu objektu.
Po nastavení můžete zvolit, jaký typ přihlašovacích údajů z azure.identity chcete použít. Například DefaultAzureCredential se dá použít k ověření klienta:
Nastavte hodnoty ID klienta, ID tenanta a tajného klíče klienta aplikace AAD jako proměnné prostředí: AZURE_CLIENT_ID
, AZURE_TENANT_ID
, AZURE_CLIENT_SECRET
K ověření klienta použijte vrácené přihlašovací údaje tokenu:
from azure.ai.language.questionanswering import QuestionAnsweringClient
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
client = QuestionAnsweringClient(endpoint="https://<my-custom-subdomain>.cognitiveservices.azure.com/", credential=credential)
Klíčové koncepty
QuestionAnsweringClient
The QuestionAnsweringClient is the primary interface for asking questions using a znalostní báze with your own information, or text input using pre-trained models.
Pro asynchronní operace je azure.ai.language.questionanswering.aio
asynchronní QuestionAnsweringClient
v oboru názvů .
AuthoringClient
AuthoringClient poskytuje rozhraní pro správu projektů odpovídání na otázky. Mezi dostupné operace patří vytváření a nasazování projektů, aktualizace zdrojů znalostí a aktualizace dvojic otázek a odpovědí. Poskytuje synchronní i asynchronní rozhraní API.
Příklady
QuestionAnsweringClient
Klientská azure-ai-language-questionanswering
knihovna poskytuje synchronní i asynchronní rozhraní API.
- Položit dotaz
- Položit následnou otázku
- Vytvoření nového projektu
- Přidání zdroje znalostí
- Nasazení projektu
- Asynchronní operace
Zeptejte se
K položení otázky pomocí znalostní báze se vyžaduje pouze samotná otázka:
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient
endpoint = os.environ["AZURE_QUESTIONANSWERING_ENDPOINT"]
key = os.environ["AZURE_QUESTIONANSWERING_KEY"]
client = QuestionAnsweringClient(endpoint, AzureKeyCredential(key))
output = client.get_answers(
question="How long should my Surface battery last?",
project_name="FAQ",
deployment_name="test"
)
for candidate in output.answers:
print("({}) {}".format(candidate.confidence, candidate.answer))
print("Source: {}".format(candidate.source))
Můžete nastavit další možnosti klíčových slov, abyste omezili počet odpovědí, určili minimální skóre spolehlivosti a další možnosti.
Položit následnou otázku
Pokud je pro váš znalostní báze nakonfigurovaný chat, odpovědi z znalostní báze můžou obsahovat navrhované výzvy k následným otázkám pro zahájení konverzace. Následnou otázku můžete položit tak, že jako kontext pro pokračování konverzace zadáte ID zvolené odpovědi:
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient
from azure.ai.language.questionanswering import models
endpoint = os.environ["AZURE_QUESTIONANSWERING_ENDPOINT"]
key = os.environ["AZURE_QUESTIONANSWERING_KEY"]
client = QuestionAnsweringClient(endpoint, AzureKeyCredential(key))
output = client.get_answers(
question="How long should charging take?",
answer_context=models.KnowledgeBaseAnswerContext(
previous_qna_id=previous_answer.qna_id
),
project_name="FAQ",
deployment_name="live"
)
for candidate in output.answers:
print("({}) {}".format(candidate.confidence, candidate.answer))
print("Source: {}".format(candidate.source))
Vytvoření nového projektu
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering.authoring import AuthoringClient
# get service secrets
endpoint = os.environ["AZURE_QUESTIONANSWERING_ENDPOINT"]
key = os.environ["AZURE_QUESTIONANSWERING_KEY"]
# create client
client = AuthoringClient(endpoint, AzureKeyCredential(key))
with client:
# create project
project_name = "IssacNewton"
project = client.create_project(
project_name=project_name,
options={
"description": "biography of Sir Issac Newton",
"language": "en",
"multilingualResource": True,
"settings": {
"defaultAnswer": "no answer"
}
})
print("view created project info:")
print("\tname: {}".format(project["projectName"]))
print("\tlanguage: {}".format(project["language"]))
print("\tdescription: {}".format(project["description"]))
Přidání zdroje znalostí
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering.authoring import AuthoringClient
# get service secrets
endpoint = os.environ["AZURE_QUESTIONANSWERING_ENDPOINT"]
key = os.environ["AZURE_QUESTIONANSWERING_KEY"]
# create client
client = AuthoringClient(endpoint, AzureKeyCredential(key))
project_name = "IssacNewton"
update_sources_poller = client.begin_update_sources(
project_name=project_name,
sources=[
{
"op": "add",
"value": {
"displayName": "Issac Newton Bio",
"sourceUri": "https://wikipedia.org/wiki/Isaac_Newton",
"sourceKind": "url"
}
}
]
)
update_sources_poller.result()
# list sources
print("list project sources")
sources = client.list_sources(
project_name=project_name
)
for source in sources:
print("project: {}".format(source["displayName"]))
print("\tsource: {}".format(source["source"]))
print("\tsource Uri: {}".format(source["sourceUri"]))
print("\tsource kind: {}".format(source["sourceKind"]))
Nasazení projektu
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering.authoring import AuthoringClient
# get service secrets
endpoint = os.environ["AZURE_QUESTIONANSWERING_ENDPOINT"]
key = os.environ["AZURE_QUESTIONANSWERING_KEY"]
# create client
client = AuthoringClient(endpoint, AzureKeyCredential(key))
project_name = "IssacNewton"
# deploy project
deployment_poller = client.begin_deploy_project(
project_name=project_name,
deployment_name="production"
)
deployment_poller.result()
# list all deployments
deployments = client.list_deployments(
project_name=project_name
)
print("view project deployments")
for d in deployments:
print(d)
Asynchronních operace
Výše uvedené příklady lze také spustit asynchronně pomocí klientů v aio
oboru názvů :
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering.aio import QuestionAnsweringClient
endpoint = os.environ["AZURE_QUESTIONANSWERING_ENDPOINT"]
key = os.environ["AZURE_QUESTIONANSWERING_KEY"]
client = QuestionAnsweringClient(endpoint, AzureKeyCredential(key))
output = await client.get_answers(
question="How long should my Surface battery last?",
project_name="FAQ",
deployment_name="production"
)
Volitelná konfigurace
Volitelné argumenty klíčových slov lze předat na úrovni klienta a pro jednotlivé operace. Referenční dokumentace azure-core popisuje dostupné konfigurace pro opakování, protokolování, přenosové protokoly a další.
Poradce při potížích
Obecné
Klienti Azure Question Answering vyvolávají výjimky definované v Azure Core. Při interakci s klientskou knihovnou odpovědí na otázky služby Cognitive Language Service pomocí sady Python SDK chyby vrácené službou odpovídají stejným stavovým kódům HTTP vráceným pro požadavky rozhraní REST API .
Pokud například odešlete dotaz neexistujícímu znalostní báze, vrátí se chyba s oznámením 400
Chybný požadavek.
from azure.core.exceptions import HttpResponseError
try:
client.get_answers(
question="Why?",
project_name="invalid-knowledge-base",
deployment_name="test"
)
except HttpResponseError as error:
print("Query failed: {}".format(error.message))
protokolování
Tato knihovna používá k protokolování standardní knihovnu protokolování . Základní informace o relacích HTTP (adresy URL, hlavičky atd.) se protokolují na úrovni INFO.
Na klientovi logging_enable
s argumentem je možné povolit podrobné protokolování úrovně DEBUG, včetně těl požadavků/odpovědí a nezopravovaných hlaviček.
Kompletní dokumentaci k protokolování sady SDK s příklady najdete tady.
Další kroky
- Prohlédněte si naše ukázky.
- Přečtěte si o různých funkcích služby Odpovídání na otázky.
- Vyzkoušejte naše ukázky služeb.
Přispívání
Podrobnosti o vytváření, testování a přispívání do této knihovny najdete v CONTRIBUTING.md .
Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která stanoví, že máte právo udělit nám práva k používání vašeho příspěvku a skutečně tak činíte. Podrobnosti najdete v cla.microsoft.com.
Při odesílání žádosti o přijetí změn robot CLA automaticky určí, jestli je potřeba poskytnout smlouvu CLA, a příslušným způsobem žádost o přijetí změn upraví (např. přidáním jmenovky nebo komentáře). Stačí postupovat podle pokynů robota. Pro všechna úložiště používající naši smlouvu CLA to stačí udělat jenom jednou.
Tento projekt přijal pravidla chování pro Microsoft Open Source. Další informace najdete v nejčastějších dotazech k pravidlům chování nebo kontaktujte s opencode@microsoft.com případnými dalšími dotazy nebo připomínkami.
Azure SDK for Python