如何自动化跨环境的问答(Q&N)导出与导入流程?
Language Studio问答(Q&N)环境迁移自动化方案
问题说明
- 目前需手动通过Language Studio在不同环境间导出、导入问答(Q&N)内容,希望实现该流程自动化
- Language Studio API仅提供获取答案的端点,未发现专门的导出/导入接口
- 尝试使用Az.CognitiveServices PowerShell模块,发现模块无相关功能;该模块官方英文文档的核心内容翻译如下:
Az.CognitiveServices模块用于管理Azure认知服务资源,涵盖资源的创建、删除、更新,密钥与端点配置等操作,但未包含针对Language Studio问答库的导出、导入相关cmdlet。
可行解决方案
1. 底层API调用方案
Language Studio的手动导出/导入逻辑基于QnA Maker(已整合至Language Studio)的API,可直接调用以下核心接口实现自动化:
- 导出:调用知识库导出接口,获取JSON格式的问答库内容
- 导入:将导出的JSON内容通过知识库创建/更新接口,导入至目标环境
2. PowerShell实现脚本示例
# 配置源、目标环境参数 $sourceKey = "源环境认知服务密钥" $sourceEndpoint = "源环境认知服务端点" $sourceKBId = "源知识库ID" $targetKey = "目标环境认知服务密钥" $targetEndpoint = "目标环境认知服务端点" $targetKBName = "目标知识库名称" # 导出源知识库内容 $exportHeaders = @{ "Ocp-Apim-Subscription-Key" = $sourceKey } $exportUrl = "$sourceEndpoint/qnamaker/v4.0/knowledgebases/$sourceKBId" $kbContent = Invoke-RestMethod -Uri $exportUrl -Headers $exportHeaders -Method Get # 导入至目标环境 $importHeaders = @{ "Ocp-Apim-Subscription-Key" = $targetKey "Content-Type" = "application/json" } $importBody = @{ name = $targetKBName qnaList = $kbContent.qnaList urls = @() files = @() } | ConvertTo-Json -Depth 10 $importUrl = "$targetEndpoint/qnamaker/v4.0/knowledgebases/create" Invoke-RestMethod -Uri $importUrl -Headers $importHeaders -Method Post -Body $importBody
3. 注意事项
- 需确保源、目标环境的认知服务资源已启用Language Studio问答功能
- 需提前获取对应环境的认知服务密钥、端点,以及源知识库ID
- 若问答库包含外部文件或URL引用,需保证目标环境可正常访问这些资源
内容的提问来源于stack exchange,提问作者Don Chambers
相关产品推荐
相关产品推荐

