成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一款面向開源項目的基于ChatGPT的代碼審核機器人程序

譯文
開源 人工智能
代碼審查是現代軟件開發的一個關鍵方面。在GitHub工作流中,代碼審查從創建合并請求(PR)開始,到PR被批準、合并或拒絕時結束。審查人員通常是高級開發人員或架構師。

譯者 | 布加迪

審校 | 重樓

代碼審查是現代軟件開發的一個關鍵方面。在GitHub工作流中,代碼審查創建合并請求PR)開始PR被批準、合并或拒絕時結束審查人員通常是高級開發人員或架構師。他們幫助確保提交到代碼倉庫的代碼是正確的、可維護的、可擴展安全的。這對于開源項目尤重要,因為貢獻的許多代碼可能來自社區。

然而,合并請求中的代碼審查常常也是軟件開發最大的點。

  • 高級開發人員非常忙碌,收費非常高昂。他們用于審查代碼的時間最少。
  • 然而如果沒有審查代碼,開發過程無法向前推進(比如合并PR。開發人員經常無所事事地等待審查。對于開源社區開發人員來說,不及時的代碼審查會阻礙進一步的貢獻。
  • 管理層經常要求高級開發人員報告和解釋與PR相關的關鍵更改和風險因素,進一步推遲了過程。

據一份針對2.6萬名開發人員編寫70多萬個合并請求的調查顯示,審核一合并請求平均需要4天以上的時間。開發人員每提交一合并請求就浪費2天的空閑時間大大浪費了生產力。

我們在這篇博文中將討論由云原生計算基金會(CNCFWasmEdge社區創建的GitHub PR代碼審查機器人程序。它運行在開源WasmEdge運行時環境上,使用ChatGPT/GPT4來執行代碼審查任務。它已經部署在WasmEdge代碼倉庫上,可以自動審查每個合并請求。如果您沒有耐心可以在不到5分鐘的時間內在GitHub上創建和部署自己的代碼審查機器人程序!

實際例子

但是ChatGPT/4是否足夠聰明可以審查代碼?這不是高級開發人員的工作嗎言歸正傳,不妨看一個例子。下圖顯示了提交給其中一個WasmEdge開源代碼倉庫的合并請求。它添加了一個check_prime()函數來檢查輸入的數字是否為素數。實現看起來非常標準。它從2循環到n的平方嘗試每個整數的可整除性。

圖1. 您發現檢查n是否是素數時的這段代碼有問題嗎?ChatGPT 發現了!圖1. 您發現檢查n是否是素數時的這段代碼有問題嗎?ChatGPT 發現了!

機器人程序提供了以下代碼審查注釋。不得不說它的表現非常驚艷!

圖2. 來自ChatGPT的代碼審查圖2. 來自ChatGPT的代碼審查

如果您繼續進行對話,可以使用ChatGPT/4進一步優化代碼,并提出一個解決方案,跳過循環中已經發現的素數的所有倍數。

作為一名管理者/維護者,我發現代碼審查機器人程序編寫的技術總結也很有幫助。

圖3. 總結合并請求中的代碼更改圖3. 總結合并請求中的代碼更改

它是如何工作的

代碼審查機器人程序是一個用Rust編寫的無服務器函數(即流函數),很快會JavaScript編寫。它被編譯成Wasm,在由flows.network托管的WasmEdge運行時環境中運行。

flows.network是一個PaaS,提供用戶界面(UI和托管服務來運行WasmEdge函數,并將它們連接到外部API(比如GitHub它提供一個免費版。當然,如果您愿意,也可以運行自己的WasmEdge云服務。

在連接的GitHub代碼倉庫中創建合并請求時,流函數被觸發。函數收集合并請求中的補丁和文件,并要求ChatGPT/4對它們進行審查和總結。然后將結果作為注釋發回給合并請求

機器人程序持續監控合并請求中的新提交和更新。它根據需要更新覆蓋)合并請求中的代碼審查注釋。

機器人程序可以由合并請求注釋部分中的一個神奇短語來觸發。比如說,如果審查人員希望機器人程序更新摘要,只需簡單地注釋“flows summarize”(“摘要”)。

創建自己的機器人程序

創建和部署自己的代碼審查機器人程序,遵循以下個簡單步驟5分鐘

兩種機器人程序模板可供選擇。一種是總結合并請求中的每個提交(由此創建機器人程序)。另一種是審查合并請求的每個更改文件(由此創建機器人程序)。下面顯示了前一種方法的步驟。

圖4. 從模板創建機器人程序圖4. 從模板創建機器人程序

1.在flows.network中加載代碼審查機器人程序模板。該模板含機器人程序本身的源代碼。我們將源代碼克隆到您自己的GitHub帳戶,以便您以后可以修改和定制點擊“創建和部署”。

2.給機器人程序提供OpenAI API密鑰。如果以前保存過API密鑰,可以跳過這一步,重復使用這些密鑰即可

3.授權機器人程序訪問GitHub。github_owner和github_repo指向目標GitHub代碼倉庫,機器人程序將在其中審查合并請求。點擊授權”,為機器人程序提供GitHub中必要的權限。

下圖顯示了上面的第2步和第3

授權機器人程序使用GitHub提供的OAuth UI訪問WasmEdge/ WasmEdge -db-examples GitHub代碼倉庫

就是這樣。在github_owner/github_repo代碼倉庫上創建一個新的合并請求看看機器人程序如何神奇工作

定制機器人程序

在上面的過程中,先將機器人程序源代碼從模板克隆到自己的GitHub帳戶(比如your_id/ summary - GitHub -pull-requests repo。然后這個源代碼創建機器人程序。您可以通過在自己的帳戶中更改機器人程序的源代碼來定制或修改機器人程序的行為

必須將機器人程序源代碼的更改推送到GitHub,才能讓flows.network接收這些更改并重新構建機器人程序(函數

這里有一些簡單的代碼更改,您可以用來定制機器人程序。只需更改您自己的克隆代碼倉庫中的src/github-pr-summary.rs的源代碼文件,如下所示。記得把您的更改推送到GitHub,這樣flows.network才能接收它們。

1. 選擇一種不同的模型。機器人程序默認使用GPT 3.5模型。如果您可以使用更高級的GPT-4模型將以下源代碼中的GPT35Turbo更改為“GPT4。GPT4提供了更好的代碼審查,但成本更高。

static MODEL : ChatModel = ChatModel::GPT35Turbo;
// static MODEL : ChatModel = ChatModel::GPT4;

2. 設計ChatGPT提示。比如說,您可以讓ChatGPT成為經驗豐富的Java開發人員來審查Java源代碼文件。使用自定義提示,您可以讓機器人程序專注于代碼的某些方面(比如專注于安全問題或性能。您還可以提示機器人程序給出特定類型的審查注釋比如為建議的更改提供代碼片段,或者為安全問題列出要點。下面的代碼是模板中的提示。有許多提示庫可以為您賦予靈感。

let chat_id = format!("PR#{pull_number}");
  let system = &format!("You are an experienced software developer. You will act as a reviewer for a GitHub Pull Request titled \"{}\".", title);
 let mut reviews: Vec<String> = Vec::new();
 let mut reviews_text = String::new();
 for (_i, commit) in commits.iter().enumerate() {
 let commit_hash = &commit[5..45];
 let co = ChatOptions {
 model: MODEL,
 restart: true,
 system_prompt: Some(system),
 retry_times: 3,
 };
 let question = "The following is a GitHub patch. Please summarize the key changes and identify potential problems. Start with the most important findings.\n\n".to_string() + truncate(commit, CHAR_SOFT_LIMIT);

3. 讓機器人程序更友好。您可以改變機器人程序合并請求注釋的內容和風格,只需改變下面源代碼中以“Hello, I am a code review bot on flows.network”(“嗨,我是flows.network上的代碼審查機器人程序”)開頭的句子。比如說,您可以您的社區成員添加定制的問候語。

let mut resp = String::new();
 resp.push_str("Hello, I am a [code review bot](https://github.com/flows-network/github-pr-summary/) on [flows.network](https://flows.network/). Here are my reviews of code commits in this PR.\n\n------\n\n");
 if reviews.len() > 1 {
 let co = ChatOptions {
 model: MODEL,
 restart: true,
 system_prompt: Some(system),
 retry_times: 3,
 };

4. 定制審查策略。默認情況下,機器人程序將審查合并請求中的每個更改文件和每個提交。您可以編輯源代碼,使其僅審查某些文件或僅審查特定開發人員所做的更改。

在多個代碼倉庫使用機器人程序

一旦您讓機器人程序在一個代碼倉庫上成功運行,可能會想要對您的每個代碼倉庫進行代碼審查顯然,您可以通過模板為每個代碼倉庫部署不同的機器人程序。但這意味著每個機器人程序都有自己的源代碼要管理,這可能會變得難管理。您可以使用同樣機器人程序源代碼來創建多個機器人程序!在flows.network中,我們稱每個機器人程序為一個“

首先,您可以點擊創建一個流,并為該流導入您的機器人程序源代碼。機器人程序源代碼在模板克隆的GitHub代碼倉庫中。不要將它與您想要部署機器人程序進行合并請求審查的代碼倉庫混淆起來!

下來,在高級部分,您可以添加github_owner和github_repo設置,以指向機器人程序將審查合并請求的目標GitHub代碼倉庫。

圖顯示了“從由模板克隆的現有機器人程序源代碼庫創建新的機器人程序(流)”幾個步驟。


最后,您將完成授權機器人程序(訪問OpenAI API密鑰和目標GitHub代碼倉庫將機器人程序部署上去的的過程。

接下來是什么?

人工智能輔助的代碼審查是一個快速發展的領域。CNCF的WasmEdge為代碼審查機器人應用程序提供了一個高效的運行時環境。社區正在嘗試許多新的想法來改進機器人程序模板。以下是一些近期可以期待的改進!

  • 支持針對編碼任務訓練的其他大型語言模型(LLM),比如Claude、PaLM及其他LLM。
  • 支持經過微調的模型,比如針對CVE數據庫訓練的Llama模型。
  • 與其他研發管理工具集成,比如問題跟蹤器和項目管理工具。
  • 支持GitHub之外的代碼托管服務。

趕緊為您的開源軟件倉庫提升代碼質量和開發人員的工作效率吧!

原文標題:A ChatGPT-powered code reviewer bot for open-source projects,作者:Miley Fu


責任編輯:華軒 來源: 51CTO
相關推薦

2016-02-17 10:13:10

Linux開源機器人

2016-02-15 11:44:23

源碼開源項目watch

2023-12-18 19:05:34

2022-12-08 13:06:30

2023-02-09 07:34:52

ChatGPT機器人人工智障

2023-04-20 08:00:40

2021-07-23 16:50:19

httpJava框架

2024-03-22 10:19:47

機器人人工智能AI

2011-08-31 10:18:09

Template St

2024-08-16 08:31:05

2018-09-19 09:05:54

Linux桌面開源

2024-01-17 08:08:48

github?開源項目

2021-08-05 10:58:58

Facebook開源Droidlet

2024-10-24 15:21:08

2014-08-20 10:47:58

Lime Text開源

2024-03-06 08:26:29

2024-04-28 14:54:09

機器人代碼

2019-03-27 09:27:06

機器人人工智能系統

2023-06-29 15:04:21

微軟ChatGPT

2020-08-28 10:40:13

PythonFaker數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲三区在线播放 | 欧美vide | 欧美白人做受xxxx视频 | 欧美电影免费观看 | 亚洲自拍偷拍欧美 | 久久99精品久久 | www.亚洲一区二区三区 | 欧美二三区 | 天天干夜夜操视频 | 免费在线国产视频 | 亚洲码欧美码一区二区三区 | 91麻豆精品国产91久久久久久 | 精品国产免费人成在线观看 | 欧美日韩久久精品 | 亚洲天堂成人在线视频 | 91亚洲精选| 国产一区二区三区四区在线观看 | 美日韩免费 | 日韩在线第一 | 精品91久久| 精品成人免费一区二区在线播放 | av片在线观看网站 | 国产午夜久久久 | 亚洲视频一区在线观看 | 亚洲97| 精品综合 | 国产一级视频在线播放 | 天天亚洲 | 在线观看精品 | 久久久999免费视频 999久久久久久久久6666 | 亚洲精品字幕 | 日日夜夜91 | 成人av在线播放 | 91免费小视频 | 精品三区 | 中国大陆高清aⅴ毛片 | 国产永久免费 | 黄色a级一级片 | 亚洲专区在线 | 91精品国产自产精品男人的天堂 | 视频一区二区在线观看 |