如果我通过Azure门户创建一个新的知识库,它需要我将现有的QnA Maker服务连接到它。
然而,似乎没有一种程序化的方法来做到这一点:
QnAmaker REST API提供创建和发布知识库的调用,但没有关于如何指定要使用的QnAmaker服务的信息:
https://learn.microsoft.com/en-us/rest/api/cognitiveservices/qnamaker/knowledgebase
我大致使用以下操作创建并发布了一个知识库,但似乎找不到任何方法将新创建的知识库与现有的QnA Maker认知服务相关联。
我是否误解了这两种资源之间的关系,或者这是文档中的空白?如果是,我如何将新的kbase连接到现有的QnAMaker服务实例?
function create_kb () {
userId=$(curl -s -X POST "${api_create_end_point}"
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: ${subscription_key}"
--data-ascii "${body}" | jq -r '.userId')
}
function get_user_kbases () {
kbId=$(curl -s -X GET "https://${endpoint}/qnamaker/v4.0/knowledgebases"
-H "Ocp-Apim-Subscription-Key: ${subscription_key}"
--data-ascii "" | jq -r '.knowledgebases | .[] | select(.name == "govbotkb").id')
echo "${kbId}"
}
function publish_knowledge_base () {
echo "Publishing the knowledgebase ${kbId} ..."
publish_result=$(curl -s -X POST "https://${endpoint}/qnamaker/v4.0/knowledgebases/${kbId}"
-H "Ocp-Apim-Subscription-Key: ${subscription_key}"
--data-ascii "${body}")
echo "${publish_result}"
}
function get_knowledgebase_details () {
echo "Getting knowledgebase details ..."
echo curl -v -X GET "https://${endpoint}/qnamaker/v4.0/knowledgebases/${kbId}" -H "Ocp-Apim-Subscription-Key: ${subscription_key}"
kbase_details=$( curl -s -X GET "https://${endpoint}/qnamaker/v4.0/knowledgebases/${kbId}"
-H "Ocp-Apim-Subscription-Key: ${subscription_key}"
--data-ascii "{body}"
)
echo "${kbase_details}"
}
您正在将订阅密钥传递到每个API调用中,包括在创建知识库时。订阅密钥来自您的QnA服务,因此它用于识别您的服务并将知识库连接到它。