国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

玩轉(zhuǎn) ChatGPT+極狐GitLab|自動化的MR 變更評審來了

這篇具有很好參考價值的文章主要介紹了玩轉(zhuǎn) ChatGPT+極狐GitLab|自動化的MR 變更評審來了。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文來自:

尹學(xué)峰 極狐(GitLab)高級解決方案架構(gòu)師

自從 ChatGPT 閃亮登場以來,各種基于它的軟件擴展紛至沓來。愛折騰的極狐GitLab 開發(fā)者們,也花式玩轉(zhuǎn)起了 ChatGPT + 極狐GitLab,讓研發(fā)工作更高效。

今天,我們來看看如何讓?ChatGPT 進行自動化的 MR 變更評審,Enjoy~

一、原理說明


玩轉(zhuǎn) ChatGPT+極狐GitLab|自動化的MR 變更評審來了

如上圖所示:

1.?當(dāng)極狐GitLab 有代碼變更時(創(chuàng)建 MR),通過 webhook 發(fā)送事件消息到 ai-code-review App;

2.?當(dāng) ai-code-review App 收到消息后,發(fā)送 Review Reqeust 到 ChatGPT(調(diào)用 ChatGPT 的 API);

3.?ChatGPT 將 Code Review 結(jié)果以 Review Response 形式返回;

4.?ai-code-review 收到 Review Response 后,將內(nèi)容(Review Comment)發(fā)送到極狐GitLab 的 MR 中。

二、快速上手指南


1. ai-code-review環(huán)境

即上圖中紫色機器,需要滿足基本條件:

  • 此機器能夠訪問?api.openai.com;
  • 此機器與極狐GitLab 機器之間網(wǎng)絡(luò)互相可以訪問,或者說彼此可以 ping 通。

1.1 Linux / MacOS / *Unix

1.1.1 Docker 安裝

如已經(jīng)安裝 Docker 可忽略此章節(jié)。

安裝腳本如下:

curl -fsSL https://get.docker.com | bash -s docker

1.1.2 運行程序

使用如下命令。注意,需要修改其中 3 個 Token/License 參數(shù)為實際參數(shù):

  • gitlab_private_token: GitLab Token,應(yīng)具有 Merge Requst 寫權(quán)限。在生成此 Token 時,建議勾選所有權(quán)限;
  • openai_api_key: 需在?OpenAI API Keys?自行申請;
  • acr_license:?test?即可。
docker run -itd -p 8888:8888 \
--restart=always \
--name ai-code-review \
-e gitlab_private_token="<你的GitLab Token>" \
-e language="Chinese" \
-e openai_api_key="<你的OpenAI Token>" \
-e acr_license="test" \
satomic/ai-code-review:20230321

2. 極狐GitLab Webhook 配置

在極狐GitLab 中,進行 AI code review 的 group 或 project 配置,以 project 為例,建議使用 group 級別的 webhook,這樣 group 內(nèi)的所有項目的 MR 都會被 AI 審查,無需為每個 project 重復(fù)配置,配置方式與 project 相同:

玩轉(zhuǎn) ChatGPT+極狐GitLab|自動化的MR 變更評審來了

每次合并請求產(chǎn)生及變化時,都會看到發(fā)送記錄 :

玩轉(zhuǎn) ChatGPT+極狐GitLab|自動化的MR 變更評審來了

3. ChatGPT 評審效果

Review 效果如下,更多可訪問 Public 演示倉庫?AI自動MR評審演示。

玩轉(zhuǎn) ChatGPT+極狐GitLab|自動化的MR 變更評審來了

玩轉(zhuǎn) ChatGPT+極狐GitLab|自動化的MR 變更評審來了

三、定義自己的評審機器人


前文中的自動化評審機器人??封裝在 docker 鏡像中 ,其角色聲明為:

{
    "role": "system",
    "content": "你是是一位資深編程專家,負責(zé)代碼變更的審查工作。需要給出審查建議。在建議的開始需明確對此代碼變更給出「拒絕」或「接受」的決定,并且以格式「變更評分:實際的分數(shù)」給變更打分,分數(shù)區(qū)間為0~100分。然后,以精煉的語言、嚴厲的語氣指出存在的問題。如果你覺得必要的情況下,可直接給出修改后的內(nèi)容。建議中的語句可以使用emoji結(jié)尾。你的反饋內(nèi)容必須使用嚴謹?shù)膍arkdown格式。"
}

所以機器人講話很沒有感情,如果想 “注入感情”?? ,則需要定義自己的評審機器人,比如希望是一個傲嬌少女??來評審,參考如下角色聲明:

{
    "role": "system",
    "content": "你是一個天才小女孩,精通編程工作,性格很傲嬌又高傲,負責(zé)對前輩的代碼變更進行審查,用后輩的態(tài)度、活潑輕快的方式的指出存在的問題。使用markdown格式??梢园琫moji。"
}

按照這樣的角色聲明,評審的效果是這樣:

玩轉(zhuǎn) ChatGPT+極狐GitLab|自動化的MR 變更評審來了

????♀?下面,基于如下源碼創(chuàng)造自己的傲嬌評審少女吧~

創(chuàng)建?ai_code_review.py?文件,內(nèi)容如下:

# coding=utf-8

import gitlab
import openai

class AICodeReview():
    
    def __init__(self,
                 gitlab_private_token,
                 project_id,
                 merge_request_id,
                 openai_api_key,
                 gitlab_server_url='https://jihulab.com',
                 ):
        self.gl = gitlab.Gitlab(
            gitlab_server_url,
            private_token=gitlab_private_token,
            timeout=300,
            api_version='4'
        )
        print('初始化GitLab連接成功')
        
        # project
        self.project_id = project_id
        self.project = self.gl.projects.get(project_id)
        print('找到project')
        
        # mr
        self.merge_request_id = merge_request_id
        self.merge_request = self.project.mergerequests.get(merge_request_id)
        print('找到mr')
        
        # changes
        self.changes = self.merge_request.changes()
        
        # openai
        openai.api_key = openai_api_key
        
        # comments
        self.review_notes = []
        
        # note
        self.note = ''
        
        
    def ai_code_review(self):
        
        print('開始code review')
        for change in self.changes['changes']:
            # https://platform.openai.com/docs/guides/chat/introduction
            messages = [
                {"role": "system",
                 "content": "你是是一位資深編程專家,負責(zé)代碼變更的審查工作。需要給出審查建議。在建議的開始需明確對此代碼變更給出「拒絕」或「接受」的決定,并且以格式「變更評分:實際的分數(shù)」給變更打分,分數(shù)區(qū)間為0~100分。然后,以精煉的語言、嚴厲的語氣指出存在的問題。如果你覺得必要的情況下,可直接給出修改后的內(nèi)容。建議中的語句可以使用emoji結(jié)尾。你的反饋內(nèi)容必須使用嚴謹?shù)膍arkdown格式。"
                 },
                {"role": "user",
                 "content": f"請review這部分代碼變更{change}",
                 },
            ]

            print('思考中...')
            response = openai.ChatCompletion.create(
                model="gpt-3.5-turbo",
                messages=messages,
            )
            new_path = change['new_path']
            print(f'對 {new_path} review中...')
            response_content = response['choices'][0]['message']['content'].replace('\n\n', '\n')
            total_tokens = response['usage']['total_tokens']

            review_note = f'# `{new_path}`' + '\n\n'
            review_note += f'({total_tokens} tokens) {"AI review 意見如下:" }' + '\n\n'
            review_note += response_content
            
            self.review_notes.append(review_note)

    def comment(self, notice=None):
        if notice is None:
            review_note = '\n\n---\n\n'.join(self.review_notes)
            self.note = {'body': review_note}
            self.merge_request.notes.create(self.note)
            print('review內(nèi)容', self.note)
            print('review完成')
        else:
            self.note = {'body': notice}
            self.merge_request.notes.create(self.note)
            print(notice)

核心函數(shù)說明:

  • ai_code_review: 調(diào)用?openai.ChatCompletion.create()?方法基于預(yù)設(shè) prompt 角色發(fā)起一次對話,得到評審結(jié)果。
  • comment: 調(diào)用?.merge_request.notes.create()?方法追加評審內(nèi)容到 MR 中。

單次評審的使用方式如下,只要傳遞對應(yīng)參數(shù)即可。實際使用中,可以在外層封裝 HTTP Server,接收 MR 創(chuàng)建/更新的 Webhook 推送的 Json 對象,解析內(nèi)容并自動進行?AICodeReview?對象的實例化及動作。

acr = AICodeReview(
    gitlab_server_url=<你的GitLab地址>,
    gitlab_private_token=<你的GitLab private_token>,
    project_id=<project_id>,
    merge_request_id=<merge_request_id>,
    openai_api_key=<openai_api_key>,
)
acr.ai_code_review()
acr.comment()

完成了上述內(nèi)容,你就可以讓 ChatGPT 自動來進行 MR 變更評審啦。文章來源地址http://www.zghlxwxcb.cn/news/detail-450396.html

到了這里,關(guān)于玩轉(zhuǎn) ChatGPT+極狐GitLab|自動化的MR 變更評審來了的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Jenkins+gitlab實現(xiàn)自動化部署

    Jenkins+gitlab實現(xiàn)自動化部署

    Jenkins 是一個用 Java 編寫的開源自動化工具,帶有用于持續(xù)集成的插件。用于持續(xù)構(gòu)建和測試您的軟件項目,從而使開發(fā)人員更容易將更改集成到項目中,并使用戶更容易獲得新的構(gòu)建。它還允許您通過與大量測試和部署技術(shù)集成來持續(xù)交付軟件。 Jenkins 集成了各種開發(fā)生命

    2024年02月21日
    瀏覽(27)
  • Gitlab自動觸發(fā)jenkins完成自動化構(gòu)建
jenkins

    Gitlab自動觸發(fā)jenkins完成自動化構(gòu)建 jenkins

    ?首先安裝gitlab插件,我已經(jīng)安裝過了,首次請在 可選插件 中進行搜索。 ? 進入項目配置--構(gòu)建觸發(fā)器: Build when a change is pushed to GitLab. GitLab webhook URL: 請復(fù)制此處的URL,后續(xù)有用。 ?然后點擊高級 ? “Allowed branches”觸發(fā)分支可以用默認的全部分支,也可以選擇僅由指定名

    2024年02月16日
    瀏覽(31)
  • Jenkins結(jié)合gitlab自動化持續(xù)集成

    Jenkins結(jié)合gitlab自動化持續(xù)集成

    大家好,我是自動化測試老司機~ 最近在公司有負責(zé)搭建自動化測試環(huán)境,自動化腳本寫好后,毋庸置疑是需要將自動化腳本進行持續(xù)集成測試,能夠根據(jù)企業(yè)的定制化需求,通過Jenkins觸發(fā)執(zhí)行構(gòu)建任務(wù),定時執(zhí)行自動化腳本等,今天就給大家介紹一下Jenkins結(jié)合gitlab進行自動

    2024年02月11日
    瀏覽(27)
  • Gitlab+Jenkins自動化部署,解放雙手

    Gitlab+Jenkins自動化部署,解放雙手

    ? 在部署項目前需要對源碼進行打包,一個簡單的SpringBoot項目默認是打包為jar包,也就是在pom.xml中的 packagingjar/packaging 方式,當(dāng)然也會有一些打包成war包方式,使用外置的Tomcat應(yīng)用服務(wù)器部署war包,那么就是 packagingwar/packaging 。 在父子類聚合項目中,父工程的 pom.xml 文件中

    2024年02月07日
    瀏覽(32)
  • 使用JavaScript+Selenium玩轉(zhuǎn)Web應(yīng)用自動化測試

    使用JavaScript+Selenium玩轉(zhuǎn)Web應(yīng)用自動化測試

    自動化測試 在軟件開發(fā)過程中, 測試是功能驗收的必要過程, 這個過程往往有測試人員參與, 提前編寫測試用例, 然后再手動對測試用例進行測試, 測試用例都通過之后則可以認為該功能通過驗收. 但是軟件中多個功能之間往往存在關(guān)聯(lián)或依賴關(guān)系, 某一個功能的新增或修改可能

    2024年01月18日
    瀏覽(24)
  • 記錄使用gitlab實現(xiàn)Docker自動化部署

    記錄使用gitlab實現(xiàn)Docker自動化部署

    目錄 前言 一、gitlab-runner docker安裝 二、gitlab-runner的注冊與使用 1.注冊 2. .gitlab-ci.yml 腳本編寫 總結(jié) 前面搭建了gitlab與harbor ,現(xiàn)在就使用它們來實現(xiàn)自動化docker部署。所謂自動化部署,就是提交代碼到指定分支時自動觸發(fā)預(yù)先寫好的腳本,來實現(xiàn)打包,推送鏡像。想要實現(xiàn)這

    2023年04月11日
    瀏覽(14)
  • 【git】2、gitlab CICD 模型部署自動化

    【git】2、gitlab CICD 模型部署自動化

    GitLab 是一個用于倉庫管理系統(tǒng)的開源項目,使用 Git 作為代碼管理工具,并在此基礎(chǔ)上搭建起來的 Web 服務(wù)。 安裝方法是參考 GitLab 在 GitHub 上的 Wiki 頁面。Gitlab 是被廣泛使用的基于 git 的開源代碼管理平臺, 基于 Ruby on Rails 構(gòu)建, 主要針對軟件開發(fā)過程中產(chǎn)生的代碼和文檔進

    2024年02月04日
    瀏覽(48)
  • Jenkins + Gitlab 實現(xiàn)項目自動化構(gòu)建及部署

    Jenkins + Gitlab 實現(xiàn)項目自動化構(gòu)建及部署

    ? 通俗來講就是本地項目 push 到 gitlab 后, Jenkins 能夠識別到項目的更新并自動構(gòu)建部署; ?本文以實際操作的方式來表述詳細配置過程及避開配置 Jenkins 時的坑. 默認電腦已經(jīng)安裝了虛擬機, 默認gitlab 上已經(jīng)有了你想要部署的項目, 部署了 maven 和 jdk 并配置了環(huán)境變量!!! 1 執(zhí)行

    2024年02月16日
    瀏覽(24)
  • Gitlab + Docker + Jenkins + Harbor實現(xiàn)自動化部署

    Gitlab + Docker + Jenkins + Harbor實現(xiàn)自動化部署

    目錄 文章目錄 前言 一、第一臺服務(wù)器--Jenkins 1、安裝前 2、安裝Jenkins 3、修改正在跑容器的端口 4、Jenkins內(nèi)部插件和配置? 二、第二臺服務(wù)器--Harbor 1、安裝docker-compose 2.安裝及配置 3、卸載Harbor? 4、Harbor啟動后操作 三、第三臺服務(wù)器--生產(chǎn)環(huán)境? 1、配置私服地址 四、Jenkin

    2024年02月14日
    瀏覽(23)
  • Selenium瀏覽器交互原理與應(yīng)用,玩轉(zhuǎn)Web自動化測試

    Selenium瀏覽器交互原理與應(yīng)用,玩轉(zhuǎn)Web自動化測試

    ? 目錄 ?前言: 瀏覽器交互: Selenium的實現(xiàn)方式: Selenium WebDriver: WebDriver的等待機制: 總結(jié): ?Web自動化

    2024年02月08日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包