1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
# coding=utf-8
# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------
"""
FILE: sample_update_knowledge_sources.py
DESCRIPTION:
This sample demonstrates how to update Qna project knowledge sources.
USAGE:
python sample_update_knowledge_sources.py
Set the environment variables with your own values before running the sample:
1) AZURE_QUESTIONANSWERING_ENDPOINT - the endpoint to your QuestionAnswering resource.
2) AZURE_QUESTIONANSWERING_KEY - your QuestionAnswering API key.
"""
def sample_update_knowledge_sources():
# [START update_knowledge_sources]
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 = "Microsoft"
client.create_project(
project_name=project_name,
options={
"description": "test project for some Microsoft QnAs",
"language": "en",
"multilingualResource": True,
"settings": {
"defaultAnswer": "no answer"
}
})
# sources
sources_poller = client.begin_update_sources(
project_name=project_name,
sources=[{
"op": "add",
"value": {
"displayName": "MicrosoftFAQ",
"source": "https://www.microsoft.com/en-in/software-download/faq",
"sourceUri": "https://www.microsoft.com/en-in/software-download/faq",
"sourceKind": "url",
"contentStructureKind": "unstructured",
"refresh": False
}
}]
)
sources = sources_poller.result() # wait until done
for item in sources:
print("source name: {}".format(item.get("displayName", "N/A")))
print("\tsource: {}".format(item["source"]))
print("\tsource uri: {}".format(item.get("sourceUri", "N/A")))
print("\tsource kind: {}".format(item["sourceKind"]))
# qnas
qna_poller = client.begin_update_qnas(
project_name=project_name,
qnas=[{
"op": "add",
"value": {
"questions": [
"What is the easiest way to use azure services in my .NET project?"
],
"answer": "Using Microsoft's Azure SDKs"
}
}]
)
qnas = qna_poller.result()
for item in qnas:
print("qna: {}".format(item["id"]))
print("\tquestions:")
for question in item["questions"]:
print("\t\t{}".format(question))
print("\tanswer: {}".format(item["answer"]))
# synonyms
client.update_synonyms(
project_name=project_name,
synonyms={
"value": [
{
"alterations": [
"qnamaker",
"qna maker"
]
},
{
"alterations": [
"qna",
"question and answer"
]
}
]
}
)
synonyms = client.list_synonyms(
project_name=project_name
)
for item in synonyms:
print("synonyms:")
print("\talterations:")
for alt in item["alterations"]:
print("\t\t{}".format(alt))
print('')
# [END update_knowledge_sources]
if __name__ == '__main__':
sample_update_knowledge_sources()
|