Azure DevOps Server 2022本地版与私有Azure OpenAI PR集成问询
自定义脚本实现Azure DevOps Server拉取请求与私有Azure OpenAI集成方案
针对你的场景,完全可以通过自定义脚本实现拉取请求变更传递至私有Azure OpenAI评审,并将结果添加为拉取请求评论的需求,具体实现如下:
核心流程
- 捕获Azure DevOps Server拉取请求的创建或更新事件
- 提取拉取请求中的代码变更详情(文件列表、代码差异)
- 将格式化后的变更内容发送至带专用终结点的私有Azure OpenAI实例
- 解析AI评审结果,提交为拉取请求的评论内容
关键实现步骤
1. 获取拉取请求变更内容
通过Azure DevOps Server REST API获取变更数据:
- 调用拉取请求变更列表接口:
GET _apis/git/repositories/{repoId}/pullrequests/{pullRequestId}/changes?api-version=7.1-preview.1,获取变更文件ID及基本信息 - 针对每个变更文件,调用差异详情接口:
GET _apis/git/repositories/{repoId}/pullrequests/{pullRequestId}/changes/{changeId}/diff?api-version=7.1-preview.1,提取具体代码差异内容
2. 调用私有Azure OpenAI实例
需确保脚本运行环境可访问OpenAI专用终结点(同虚拟网络或通过专线连接):
- 使用Azure OpenAI官方SDK(如Python
openai库)或REST API,配置base路径指向专用终结点地址 - 将代码差异整理为明确的评审prompt,示例格式:
请评审以下代码变更,指出潜在bug、性能问题、代码规范不符合项或优化建议: 文件路径:{file_path} 代码差异: {diff_content} - 调用聊天补全接口(如
gpt-35-turbo)获取AI评审结果
3. 提交评论至拉取请求
通过Azure DevOps Server REST API提交评论:
- 调用创建评论线程接口:
POST _apis/git/repositories/{repoId}/pullrequests/{pullRequestId}/threads?api-version=7.1-preview.1 - 按接口要求构造请求体,将AI评审结果作为评论内容提交
脚本触发方式
- 手动执行:将脚本封装为命令行工具,按需运行
- 自动触发:配置Azure DevOps Server服务挂钩,在拉取请求创建/更新时触发脚本(可通过本地自动化服务或Azure Function接收挂钩事件并执行脚本逻辑)
注意事项
- 权限配置:确保脚本使用的服务账号拥有拉取请求读取、评论提交权限;OpenAI实例需配置网络规则允许脚本环境访问专用终结点
- 内容控制:避免发送过大的代码差异至AI,可限制单文件变更行数或拆分多批请求
- 结果校验:添加逻辑过滤AI返回的无效内容,确保评论质量
内容的提问来源于stack exchange,提问作者Vowneee
相关产品推荐
相关产品推荐

