Aracılığıyla paylaş


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

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:

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.

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

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 .

İzlenimler