您的位置:首页 > 新闻 > 热点要闻 > 湖北响应式网站制作_oa办公系统是什么意思_怎么做网页设计的页面_廊坊网站seo

湖北响应式网站制作_oa办公系统是什么意思_怎么做网页设计的页面_廊坊网站seo

2024/12/24 0:10:12 来源:https://blog.csdn.net/hbdatouerzi/article/details/144059575  浏览:    关键词:湖北响应式网站制作_oa办公系统是什么意思_怎么做网页设计的页面_廊坊网站seo
湖北响应式网站制作_oa办公系统是什么意思_怎么做网页设计的页面_廊坊网站seo

文章目录

      • 背景
      • 实现步骤
        • 1.本地部署 AI 服务
        • 2.开启服务接口
        • 3.获取 diff
        • 4.获取 code review的结果,并推送给相关人员

背景

我们平时的工作当中合并代码的时候都需要进行 code review,很多工具都能帮助我们自动进行代码审查,但一般都只能够进行代码格式和代码风格的检查,一些简单的逻辑就没有办法了。有没有可能让 AI 来帮我们做 code review 呢?让 AI 帮助我们检查代码的风格或者逻辑漏洞,并给出建议,最后再让相关的人确认,听起来这似乎是可行的。

具体的流程如下:
我们目前的工程托管在了 gitlab 上,每次发起一次 merge request 的时候都会产生一个事件,触发服务端将 diff 代码发送给本地 AI 大模型,AI review 完成之后,再将结果推送给相关人员。
code review 涉及到代码的保密,所以这里并没有使用 chatgpt 之类的服务,而是需要在本地部署一个 AI 服务。
在这里插入图片描述

实现步骤

1.本地部署 AI 服务

我用的是 llama3.1:8b 模型,实际测试资源占用相对较少,也能满足我们的需求,而且部署起来也非常的方便。
从这里下载:https://ollama.com/download/windows
选择对应的系统进行安装,安装完成之后执行命令,等待下载

ollama run llama3.1:8b

在这里插入图片描述
下载成功之后,就可以和它进行交互了
在这里插入图片描述

2.开启服务接口

这里我是用的是 lobe-chat,可以很方便的测试各种 AI 大模型,并且还可以在本地开启一个服务接口,通过 http 的方式和大模型进行交互。
地址:https://github.com/lobehub/lobe-chat.git
clone 下来之后在根目录执行

pnpm install
pnpm dev

执行完了之后,在浏览器输入 http://localhost:3010/ ,就可以看到 lobe-chat 的界面了,
我们可以在设置界面看到本地安装的大模型
在这里插入图片描述
设置之后可以和大模型进行对话
在这里插入图片描述
可以看到每次对话访问的都是本地的接口
在这里插入图片描述
这样我们也可以仿照这种方式和大模型进行交互。

3.获取 diff

gitlab 支持 webhook,并且 mr 事件当中还包含合并的 id,我们可以根据 id 获取到这次代码合并的 diff
在这里插入图片描述
https://gitlab.cn/docs/jh/api/merge_requests.html
在这里插入图片描述

def getDiff(project, mergeRequestId):token = project['token']projectId = project["projectId"]webhookUrl = "xxx"headers = {"PRIVATE-TOKEN": token}response = requests.get(webhookUrl, headers=headers)text = response.json()print(response.status_code)print(response.text)return text
4.获取 code review的结果,并推送给相关人员

这里直接利用 lobe-chat 访问的接口,将 diff 给到大模型,其中有几个参数需要注意,
temperature:控制生成文本的随机性,值越低输出更确定,值越高输出会更具创意,code review场景比较适合较低的值;
top_p:控制采样策略,较高的 top_p 会让模型选择更多样的词语。这里推荐的是0.8-0.9;
frequency_penalty:较高的值鼓励模型避免重复,较低的值允许模型更自由的重复;
presence_penalty:较高的值鼓励模型提出新观点或者主题,较低的值限制新话题产生,保持专注;推荐0.2-0.5;

def aiCodeReview(language, diff):print("start code review")url = "http://localhost:11434/api/chat"data = {"messages": [{"content": "你是一个资深的开发人员,非常擅长代码的code review","role": "system"},{"content": f"下面是gitlab中一次merge request的差异代码,使用的是{language}语言,请帮忙做一次code review,有问题可以直接指出问题,回答尽可能简洁。{diff}","role": "user"}],"model": "llama3.1:8b","options": {"frequency_penalty": 0.8,"presence_penalty": 0.2,"temperature": 0.3,"top_p": 0.9},"stream": False}headers = {"Content-Type": "application/json"}response = requests.post(url, headers=headers, data=json.dumps(data))content = response.json()suggest = content['message']['content']print(suggest)return suggest

AI 返回建议之后,将建议推送给相关人员,这里使用的是飞书机器人
在这里插入图片描述
这样就实现了每次发起 mr 之后,触发 AI 自动 code review 的能力。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com