如何在云效中使用 DeepSeek 等大模型实现 AI 智能评审

news/2025/3/26 14:58:26/文章来源:https://www.cnblogs.com/yyds114/p/18789898

作者:崔力强、黄博文

除了代码智能补全外,AI 代码智能评审是 DevOps 领域受开发者广泛关注的另一场景了。本文,我们将结合云效代码管理 Codeup、流水线 Flow 和 DeepSeek,分享一种企业可快速自主接入,即可实现的 AI 智能评审解决方案,希望给大家一些启发。

方案简介

云效流水线 Flow 提供了灵活的集成机制,企业可以在云效 Flow 内开发一个自定义步骤来调用 DeepSeek 等大模型,对云效 Codeup 提交的代码评审进行智能评审,并通过云效的 API,将这些评审意见回写到合并请求中。

同时,结合云效流水线 Flow 的能力还可以对提交的代码进行单元测试、代码扫描等任务,并将这些结果一并展示回云效 Codeup 的提交历史中,反馈每个 commit 的代码质量状态。

下面我们将会一步步指引您如何实现这个自定义的步骤,并配置流水线来实现代码的智能评审。

实现步骤

1、创建云效组织并获取访问令牌

如您没有云效组织,可访问 https://devops.aliyun.com ,并创建您自己的组织。

为了能够让大模型调用云效 API [ 1] 获取合并请求详情,并把 Review 的结果写到合并请求中,我们需要创建一个云效 API 的访问令牌。

点击右上角的头像-个人设置-新建令牌,并按照下图中设置令牌的权限:代码比较设置为只读,合并请求设置为读写。

创建好之后,将令牌保存下来。

2、创建百炼 APIKey

前往阿里云大模型服务平台百炼,创建 APIKey,保存方便后续调用。

🔔 注: 百炼为新用户提供了千万免费的 tokens,大家可以放心使用。

3、创建 Flow 自定义步骤调用大模型能力

首先,安装 flow-cli 的最新版本。(需要本地有安装 nodejs。)

# 安装flow-cli最新版本
npm install -g @flow-step/flow-cli --registry=https://registry.npmmirror.com

运行 flow-cli 的登录命令,选择你刚才创建的云效组织。

flow-cli login

从 https://atomgit.com/flow-example/yunxiao-mr-review-step 克隆代码到本地,修改其中的 step.yaml 文件,修改第 4~5 行,为步骤 id 和 name 添加后缀。

由于步骤名称是全局唯一的,因此需要添加“组织 ID”的后缀。

组织 IP 获取路径:点击云效页面右上角头像 -> 管理后台,打开后台管理页面,在其中找到“组织 ID”。

命令行切换到刚才克隆代码的代码库的根目录,执行下面的命令以发布步骤。

flow-cli step publish --auto-version

🔔 注: flow-cli 的详细操作可参见文档:https://help.aliyun.com/zh/yunxiao/user-guide/use-flow-cli-to-customize-development-steps

步骤发布后,访问 flow.aliyun.com,在步骤管理-组织步骤中可以看到 MergeRequestLLMReviewer 步骤,即表示步骤发布成功。

4、创建进行代码 Review 的示例代码库

访问 codeup.aliyun.com,导入代码库 https://atomgit.com/flow-example/CodeReviewSampleCode.git 到云效 Codeup 中。

5、创建流水线

在 flow.aliyun.com 中创建流水线,模板选择【Nodejs 测试、构建】模版。

代码源选择刚才导入的示例代码库,并开启代码源触发,设置触发条件为【合并请求 新建/更新】。

因为这里我们只做 CodeReview,无需构建,所以我们删除掉模板中的 Nodejs 构建任务。我们添加一个空任务,并在空任务中添加刚才我们创建的自定义步骤,以便调用大模型能力做 CodeReview。

你可以按需选择模型,支持 deepseek-r1、deepseek-v3、qwen-max,并填入云效 token(前面创建的个人访问令牌)和百炼 APIkey。不过为了安全起见,我们不建议您直接填入这些信息,最好的方式是创建 2 个私密环境变量:${YUNXIAO_TOKEN}、 ${BAILIAN_APIKEY},在环境变量中中配置刚才的私密信息。

6、创建合并请求

在前面导入的 CodeReview 示例代码库中,创建合并请求,从 dev1 分支合并到 main 分支。

当合并请求被创建之后,进入云效 Flow,可以看到流水线被触发,该流水线会运行代码检查和单元测试,并且调用大模型进行智能评审。

查看自定义步骤的日志输出,可以看到大模型对代码评审的 diff 进行处理,并最终将结果回写到 Codeup 端。

在 Codeup 的代码评审侧可以看到回写的评审意见。

点击自动化检查标签可以看到流水线的代码扫描和单元测试结果。

以上即是方案的全部内容。

点击此处,体验完整流程,前 100 位可获得积木拼图、阿里云代码马克杯等实物奖品。

相关链接:

[1] 云效 API

https://help.aliyun.com/zh/yunxiao/developer-reference/api-reference-standard-proprietary/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/904895.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

T+0量化:JAVA接入Level2高频行情(附Python代码)

去年在知乎分享过一个网格策略,评论区全是"代码能跑通但实盘不敢用"的留言。当时我也一样——用第三方平台回测美滋滋,一到实盘就怂:行情延迟3秒、API调用次数受限、策略逻辑被平台规则卡脖子…直到把整套系统搬回本地,才发现自建交易系统的快感就像从合租屋搬进…

制作一个简单的带有3D打印部件的四足蜘蛛机器人

在这个项目中,我将向您展示如何使用3D打印部件制作一个简单的4腿行走蜘蛛机器人。该设计主要由上下板、臂接插件、腿和伺服支架五个部分组成。机器人的4条腿由4个手臂部分和4个腿部分组成。机器人的运动总共使用了8个业余伺服电机,4个在手臂上,4个在腿上。在电路方面,首选E…

统计学习之数据挖掘(结构数据)

统计学习之数据挖掘(结构数据):降维聚类关联度分析分类神经网络

2024 腾讯游戏安全大赛 mobile 初赛 wp

找关键结构体 https://www.cnblogs.com/revercc/p/17641855.html 找GWORLD https://bbs.kanxue.com/thread-280042.htm可以发现是 TEXT包裹的,utf-16编码,ida alt + b搜索 53 00 65 00 61 00 6D 00 6C 00 65 00 73 00 73 00 54 00 72 00即可网上翻即可找到 GWorld对应地址: 0…

制造业订单处理烦恼多,日事清 OTD 管理为您排忧解难

你是不是经常因为接单和交货时间差太大而焦头烂额?今天我们就结合制造业OTD管理,带您了解如何应用日事清进行订单交付全周期管理。日事清可以帮你设定精细的流程,从接单到发货,清晰可控地帮你解决以上烦心事。在制造业里打拼,每天都得面对各种烦心事,比如订单处理慢、生产…

如何在SSD1306上显示动态表情符号位图

解锁您的SSD1306上充满活力的视觉效果!学习毫不费力地显示动态表情符号位图,并以风格增强您的项目。 在本教程中,我们将通过使用PCBX在线模拟环境在SSD1306 OLED显示器上显示位图图像的过程。本教程将介绍设置PCBX模拟,格式化位图数据,配置显示大小和管理图像延迟。步骤1:…

redis基础数据结构——ZipList

ZipList 基于特殊写法实现的双端链表,由一系列特殊编码的连续内存块组成,可以像deque一样在双端压入/弹出,并且时间复杂度在O(1) 整体ZL结构如下zlbytes(uint32):当前zl总的byte数。 zltail(uint32):尾结点的offset,指向的是最后一个entry的起始地址。 zllen(uint16):记…

day:28 postman——环境变量(依赖,关联接口)

一.接口的环境变量 (1)定义变量 可以将需要填写的值设为变量 变量设置:{{}}(2)添加环境变量 方法一:方法二:(3)查看环境变量(4)选择环境,执行二.依赖接口 先登录接口成功,生成cookie值,才能让后面接口依赖 cookie值是保持会话 查看cookie值方法 方法一:方法二:…

L1.1 技术和产品准备度

L1.1 技术和产品准备度 技术和产品准备度 技术与产品的演进 ​ 上面这张图展示了如何在技术尚未完全成熟时,启动产品开发,以及技术如何随着新需求或洞察逐步演进,并支持产品的更新换代。产品1.0:由先前研发的的技术3支撑,加上“产品开发可以在预期的技术开发成果的基础上提…

从故障响应到客户信赖:华为ITR流程的五大核心步骤与实战案例

华为究竟是如何在与西方巨头的激烈竞争中崭露头角、脱颖而出的呢?答案是:凭借卓越的服务。今天我们来探讨一下华为是如何通过卓越的服务赢得全球市场的。 一、华为的三件大事 华为前高管费敏曾经总结过,华为的业务可以分成三件大事:1. 开发产品:这就是 IPD 流程,负责从有…

提升生产效率的关键: ethercat转TCPIP智能通信

大家好。最近在数据互联互通方面,我们迎来了一个重要的突破。作为生产管理系统的核心组成部分,数据互联互通一直是一个亟待解决的挑战。我们知道,EtherCAT和TCP/IP是两种不同的通信协议,它们之间的互通性一直存在问题。不过,现在有一款新产品值得关注,这款产品能够实现Et…