我正在创建基于qnamaker的聊天机器人,为此我准备了用于创建和部署资源的ARM模板。
创建所有资源后,将使用PowerShell脚本创建知识库。
当我从本地PowerShell工具执行PowerShell脚本时,这个过程运行得很好。
现在,我想对此部署流程执行CI/CD,以便可以自动执行部署流程
通过azure ARM模板部署任务可以通过管道创建资源并部署到Azure,但我不确定在基于最近创建的qnamaker服务创建资源后如何执行负责创建知识库的PowerShell脚本
非常感谢您的帮助
发布于 2021-03-25 15:06:15
您可以参考Create a CI/CD pipeline for .NET with the Azure DevOps Project中的逐步实验来创建管道。
如果您需要有关ARM模板的帮助(如果您遇到了某些问题),您可以查看A quick guide on writing your Azure Resource Manager (ARM) Templates.并快速入门。
发布于 2021-03-27 02:27:15
请澄清您的问题是在ARM创建实际资源后创建和培训QnA Maker知识库?可能有多种方法可以做到这一点,但以下是我所做的。首先,我使用的是Azure CLI Task version 2.*,它简化了一些初始步骤。对于后续的一些步骤,您可能会使用常规的PowerShell。我选择了all作为PowerShell脚本类型和内联脚本。这些部分中的每一个我都作为单独的任务来完成,但您可能可以将所有这些都作为一个任务来完成。不过,我喜欢能够看到如果发生了什么事情,哪一步会失败。
首先,您需要获取认知服务的密钥
$QNAKEY= & az cognitiveservices account keys list -g "YOUR_RESOURCE_GROUP" --name "YOUR_QNA_RESOURCE_NAME" --query key1 -o tsv
Write-Output("##vso[task.setvariable variable=QNA_KEY;]$QNAKEY")
接下来,您需要创建知识库。我已经通过我的项目存储库中的json文件为我的项目播种了信息。您可以从任何地方执行此操作,或者只创建一个空白KB (我认为)。注意:我在这里检查KB是否存在;KB名称不必是唯一的,所以如果您不这样做,您将最终创建许多重复的KB。
$header = @{
"Content-Type"="application/json"
"Ocp-Apim-Subscription-Key"="$(QNA_KEY)"
}
$res = Invoke-RestMethod -Uri "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases" -Method 'Get' -Headers $header
$kb = $res.knowledgebases | Where-Object name -eq "YOUR_KB_NAME"
Write-Host $res.knowledgebases
Write-Host $kb
if (!$kb) {
Write-Host "KB does not exist, so creating new KB"
$body = Get-Content '$(System.DefaultWorkingDirectory)/PATH_TO_MY_MODEL.json' | Out-String
Invoke-RestMethod -Uri "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases/create" -Method 'Post' -Body $body -Headers $header
}
最后,您可能希望发布您的知识库。对于LUIS,我认为你需要首先训练它(通过单独的命令行界面任务),但是QnA Maker你应该能够直接发布。我将此作为依赖阶段来执行,以确保在尝试发布之前创建了知识库。
$QNAKEY= & az cognitiveservices account keys list -g "YOUR_RESOURCE_GROUP" --name "YOUR_QNA_RESOURCE_NAME" --query key1 -o tsv
$header = @{
"Content-Type"="application/json"
"Ocp-Apim-Subscription-Key"="$QNAKEY"
}
$res = Invoke-RestMethod -Uri "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases" -Method 'Get' -Headers $header
$kb = $res.knowledgebases | Where-Object name -eq "YOUR_KB_NAME"
$qnaId = $kb.id
Invoke-RestMethod -Uri "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases/$qnaId" -Method 'Post' -Headers $header
就是这样!此时,您的QnA Maker知识库应该已创建、发布并准备就绪。
https://stackoverflow.com/questions/66793451
复制相似问题