Python için Azure Bilişsel Dil Hizmeti Soru Yanıtlama istemci kitaplığı - sürüm 1.1.0
Soru Yanıtlama, mevcut verileriniz üzerinde konuşma soru-cevap katmanı oluşturmanızı sağlayan bulut tabanlı bir API hizmetidir. SSS, kılavuzlar ve belgeler de dahil olmak üzere yarı yapılandırılmış içeriğinizden sorular ve yanıtlar ayıklayarak bir bilgi bankası oluşturmak için kullanın. Bilgi bankası'nizdeki Soru-Cevaplardan en iyi yanıtlarla kullanıcıların sorularını otomatik olarak yanıtlayın. bilgi bankası de kullanıcıların davranışlarından sürekli olarak ders çıkardıkça daha akıllı hale gelir.
Kaynak kodu | Paket (PyPI) | API başvuru belgeleri | Ürün belgeleri | Örnekleri
Bildirim
Python 2.7 için Azure SDK Python paketleri desteği 01 Ocak 2022'de sona erdi. Daha fazla bilgi ve soru için lütfen https://github.com/Azure/azure-sdk-for-python/issues/20691
Başlarken
Önkoşullar
- Bu paketi kullanmak için Python 3.7 veya üzeri gereklidir.
- Azure aboneliği
- Dil Hizmeti kaynağı
Paketi yükleme
Pip ile Python için Azure Soru Yanıtlama istemci kitaplığını yükleyin:
pip install azure-ai-language-questionanswering
Not: İstemci kitaplığının bu sürümü varsayılan olarak hizmet API'sinin sürümüne ayarlanır
2021-10-01
.
İstemcinin kimliğini doğrulama
Soru Yanıtlama hizmetiyle etkileşim kurmak için, kaynağınızdaki projeleri yönetmek için QuestionAnsweringClient sınıfının bir örneğini veya AuthoringClient örneğini oluşturmanız gerekir. İstemci nesnesinin örneğini oluşturmak için bir uç nokta ve API anahtarı gerekir. Bilişsel Hizmetler ile kimlik doğrulaması hakkında daha fazla bilgi için bkz. Azure Bilişsel Hizmetler'e yönelik isteklerin kimliğini doğrulama.
API anahtarı alma
Uç noktayı ve API anahtarınıAzure Portal'daki Dil kaynağından alabilirsiniz.
Alternatif olarak, Dil kaynağından API anahtarını almak için aşağıda gösterilen Azure CLI komutunu kullanın.
az cognitiveservices account keys list --resource-group <resource-group-name> --name <resource-name>
QuestionAnsweringClient Oluşturma
Uç noktanızı ve API anahtarınızı belirledikten sonra bir QuestionAnsweringClient örneği oluşturabilirsiniz:
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)
AuthoringClient Oluşturma
Uç noktanız ve API anahtarınız ile AuthoringClient örneği oluşturabilirsiniz:
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)
Azure Active Directory Kimlik Bilgileri ile istemci oluşturma
Azure Active Directory (AAD) belirteci kimlik bilgilerini kullanmak için azure-identity kitaplığından alınan istenen kimlik bilgisi türünün bir örneğini sağlayın. Bölgesel uç noktaların AAD kimlik doğrulamayı desteklemediğini unutmayın. Bu kimlik doğrulama türünü kullanmak için kaynağınız için özel bir alt etki alanı adı oluşturun.
AAD ile kimlik doğrulaması için bazı ilk kurulumlar gerekir:
- azure-identity yükleme
- Yeni bir AAD uygulaması kaydetme
- Hizmet sorumlunuza "Bilişsel Hizmetler Dil Okuyucusu" rolünü atayarak Dil hizmetine erişim izni verin.
Kurulumdan sonra azure.identity'den hangi kimlik bilgisi türünü kullanacağınızı seçebilirsiniz. Örneğin, istemcinin kimliğini doğrulamak için DefaultAzureCredential kullanılabilir:
AAD uygulamasının istemci kimliği, kiracı kimliği ve istemci gizli dizisi değerlerini ortam değişkenleri olarak ayarlayın: AZURE_CLIENT_ID
, AZURE_TENANT_ID
, AZURE_CLIENT_SECRET
İstemcinin kimliğini doğrulamak için döndürülen belirteç kimlik bilgilerini kullanın:
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)
Önemli kavramlar
QuestionAnsweringClient
QuestionAnsweringClient, kendi bilgilerinizle bir bilgi bankası veya önceden eğitilmiş modelleri kullanarak metin girişi kullanarak soru sormak için birincil arabirimdir.
Zaman uyumsuz işlemler için ad alanında azure.ai.language.questionanswering.aio
bir zaman uyumsuz QuestionAnsweringClient
vardır.
AuthoringClient
AuthoringClient, Soru Yanıtlama projelerini yönetmek için bir arabirim sağlar. Kullanılabilir işlemlere örnek olarak proje oluşturma ve dağıtma, bilgi kaynaklarınızı güncelleştirme ve soru ve yanıt çiftlerini güncelleştirme verilebilir. Hem zaman uyumlu hem de zaman uyumsuz API'ler sağlar.
Örnekler
QuestionAnsweringClient
İstemci azure-ai-language-questionanswering
kitaplığı hem zaman uyumlu hem de zaman uyumsuz API'ler sağlar.
- Soru sorun
- Takip sorusu sorun
- Yeni proje oluşturma
- Bilgi kaynağı ekleme
- Projenizi dağıtma
- Zaman uyumsuz işlemler
Bir soru sorun
bilgi bankası kullanarak soru sormak için gereken tek giriş yalnızca sorunun kendisidir:
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))
Yanıt sayısını sınırlamak, minimum güvenilirlik puanı belirtmek ve daha fazlasını yapmak için ek anahtar sözcük seçenekleri ayarlayabilirsiniz.
Takip sorusu sorun
bilgi bankası sohbet için yapılandırılmışsa, bilgi bankası yanıtlarında konuşma başlatmak için izleme soruları için önerilen istemler yer alabilir. Devam eden konuşmanın bağlamı olarak seçtiğiniz yanıtın kimliğini sağlayarak bir takip sorusu sorabilirsiniz:
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))
Yeni proje oluşturma
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"]))
Bilgi kaynağı ekleme
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"]))
Projenizi dağıtma
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)
Zaman uyumsuz işlemler
Yukarıdaki örnekler, ad alanı içindeki aio
istemciler kullanılarak zaman uyumsuz olarak da çalıştırılabilir:
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"
)
İsteğe Bağlı Yapılandırma
İsteğe bağlı anahtar sözcük bağımsız değişkenleri istemcide ve işlem düzeyinde geçirilebilir. Azure-core başvuru belgelerinde yeniden denemeler, günlüğe kaydetme, aktarım protokolleri ve daha fazlası için kullanılabilir yapılandırmalar açıklanmaktadır.
Sorun giderme
Genel
Azure Soru Yanıtlama istemcileri , Azure Core'da tanımlanan özel durumları tetikler. Python SDK'sını kullanarak Bilişsel Dil Hizmeti Soru Yanıtlama istemci kitaplığıyla etkileşime geçtiğinde, hizmet tarafından döndürülen hatalar REST API istekleri için döndürülen aynı HTTP durum kodlarına karşılık gelir.
Örneğin, var olmayan bir bilgi bankası soru gönderirseniz , "Hatalı İstek" belirten bir 400
hata döndürülür.
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))
Günlüğe Kaydetme
Bu kitaplık, günlüğe kaydetme için standart günlük kitaplığını kullanır. HTTP oturumlarıyla ilgili temel bilgiler (URL'ler, üst bilgiler vb.) BİlGİ düzeyinde günlüğe kaydedilir.
İstek/yanıt gövdeleri ve kaydedilmemiş üst bilgiler de dahil olmak üzere ayrıntılı HATA AYıKLAMA düzeyi günlüğe kaydetme, bağımsız değişkeniyle logging_enable
bir istemcide etkinleştirilebilir.
Burada örneklerin bulunduğu tam SDK günlük belgelerine bakın.
Sonraki adımlar
- Örneklerimizi görüntüleyin.
- Soru Yanıtlama hizmetinin farklı özellikleri hakkında bilgi edinin.
- Hizmet tanıtımlarımızı deneyin.
Katkıda bulunma
Bu kitaplığı oluşturma, test etme ve bu kitaplığa katkıda bulunma hakkında ayrıntılı bilgi için CONTRIBUTING.md bakın.
Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için cla.microsoft.com adresini ziyaret edin.
Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.
Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları SSS bölümüne bakın veya ek sorular veya yorumlarla iletişime geçin opencode@microsoft.com .
Azure SDK for Python