整理 | 禾木木
2021年 6 月,GitHub 和 OpenAI 推出了 GitHub Copilot 預覽版,可根據命名或者正在編輯的程式碼上下文為開發者提供程式碼建議,被稱為「你的 AI 結對程式設計師」。
近日,GitHub 宣佈,經過去年 12 月以來的短暫測試後,發佈了個人版和企業版 Copilot 的全新升級。升級後的 GitHub Copilot 將會具有更高的程式碼質量,以及更快的響應速度。
GitHub CEO Thomas Dohmke 表示,「Copilot 1.0 版本的故事就此終於告一段落。2021 年 6 月我們發佈了預覽版,現在回想起來似乎是很久以前的事了。去年夏季,Copilot 全面上市。現在,我們又準備將其推廣到組織、公司、團隊、部門,或者說每一個人手中。事實上,Copilot 商業版在發佈之初就吸引到了 400 多家組織。他們都對此表現出了巨大的興趣。」

創新方法解決程式碼問題,成為更好的程式碼工具
隨著模型的不斷升級和演進,開發團隊也讓很多功能成為了現實。例如模型不僅能夠補全單行,甚至可以精細補全光標指定的起始和結束位置間的特定單詞,還可以創新方法解決程式碼的問題,給你不同的思路從而讓你選擇。
Dohmke 指出,為了提高補全質量,模型還會查看使用者正在處理的相關檔案,據此建立模型查詢。「它不僅能參考使用者當前打開的檔案中已經鍵入的內容,還能結合相鄰檔案與相鄰資訊做出推理。」
自 GitHub Copilot 發佈以來,百萬開發者的生產力被重新定義。據研究報告顯示,GitHub Copilot 集成了多達 40% 的程式碼,也讓開發者的程式碼編寫效率提升了 55%!從最早的只有 27% 的開發者會使用到現在的 46%,甚至在 Java 中,已達到了 61%。
官方研究顯示,在使用 GitHub Copilot 的開發者中,有 90% 表示可以更快地完成任務,其中 73% 的人能夠更好地保持順暢並節省精力。高達 75% 的開發者在使用 Copilot 時感到更有成就感,並且能夠專注於工作。


GitHub Copilot 關鍵技術的改進與升級
GitHub Copilot 在此次升級後都有哪些關鍵技術的改進呢?
1、升級後的 AI Codex 模型
將 Copilot 升級為新的 OpenAI Codex 模型,可以在更短的時間內提供更優質的程式碼建議。
2、更好的上下文理解
Copilot 將引入一種名為 Fill-In-the-Middle(FIM)的新正規化,改進了 GitHub Copilot 給出的程式碼建議。這種方法不僅會考慮程式碼的前綴,還會利用已知的程式碼後綴,並在中間留出空白讓 GitHub Copilot 來填補。如此一來,Copilot 就有了更多關於預期程式碼的上下文資訊,從而實現與項目其餘程式碼更好的相關性和一致性。
3、輕量級的客戶端模型
使用輕量級客戶端模型更新了 VS Code 的 GitHub Copilot 擴展,從而提高了建議程式碼的整體接受率。此外,GitHub Copilot通過使用關於使用者上下文的基本資訊,將不必要的建議減少了4.5%,從而提高了整體程式碼接受率。
4、更安全的建議
Copilot 此次更新的最大亮點之一是引入了新的安全漏洞過濾系統,該系統將有助於識別和阻止不安全的建議,例如硬編碼憑據、路徑注入和 SQL 注入。
一旦發現漏洞,它會自動提供更安全的補全建議。
新系統採用的是通過 LLM 來近似靜態分析工具的操作。憑藉著強大的的計算資源和先進的 AI模 型,GitHub Copilot 甚至可以在不完整的程式碼片段中,檢測到易受攻擊的模式。

實時阻止系統的示例
通過實時阻止在編輯器中的不安全建議,GitHub 還可以提供一些針對中毒資料集攻擊的抵抗力,這些攻擊旨在暗中訓練 AI 助手提出包含惡意負載的建議。
目前,新系統仍在培訓中,從而更好的區分易受攻擊和非易受攻擊的程式碼模式,因此 AI 模型在安全性能有望在不久的將來逐步提高。

GitHub Copilot for Business 上線
GitHub Copilot 如此受歡迎,越來越多的企業也在為團隊購買 GitHub Copilot。企業版的 Copilot 都有哪些功能呢?
1、AI 賦能
藉助 AI 讓開發者更快地構建軟體、更長時間地沉浸在「心流」中、並以創新的方式解決問題,從而提高程式碼建議的質量。
2、簡單的許可證管理
管理員可以為他們的團隊啟用 GitHub Copilot,並選擇哪些組織、團隊和開發者可以獲得許可證。
3、組織範圍內的政策管理
您可以輕鬆地設置政策控制,代表你的組織強制執行公共程式碼匹配使用者設置。
4、安全守護程式碼
在企業版 GitHub Copilot 上,將不會保留程式碼片段,或儲存、共享您的程式碼,無論資料是否來自公有庫、私有庫、非 GitHub 儲存庫還是本地檔案。
GitHub 同時宣佈,Copilot 現已支持代理連接,包括使用自簽名證書的連接。其 AI 驅動的 Copilot 程式碼補全工具,現由 OpenAI 驅動的改進模型提供支持。在通過 Azure OpenAI Service 發佈以來,該團隊一直在不斷完善這套模型並添加新的功能。他將整個過程比作硬體業務中的規格調整,一切都是為了讓模型更加強大,之後團隊才能將成果引入 Copilot。
隨著模型的演進,開發團隊也讓很多新功能成為了現實。例如「中間填充」,該模型不僅能夠補全單行,甚至可以精細補全光標指定的起始和結束位置間的特定單詞。
Dohmke指出,為了提高補全質量,模型還會查看使用者正在處理的相關檔案,據此建立模型查詢。「它不僅能參考使用者當前打開的檔案中已經鍵入的內容,還能結合相鄰檔案與相鄰資訊做出推理。」
通過這些最新更新,開發團隊又在另一個模型的幫助下,讓 Copilot 獲得了從返回程式碼中識別常見安全漏洞的能力。一旦發現漏洞,它會自動提供更安全的補全建議。
光是變得更好還不夠,整個過程還必須要變得更快。Dohmke 提到,開發團隊一直在努力改善延遲。GitHub 的資料顯示,一旦 Copilot 在生成程式碼時耗時過長,開發人員就會很快變得焦躁不安。
Dkohmke 預計,Copilot 很快就能為開發人員生成 80% 的程式碼。並表示 Copilot 屬於專業開發輔助產品,所以使用者對於生成程式碼的要求肯定會更高。考慮到當前模型經常會輸出不正確的程式碼,項目團隊還是希望先把開發輔助方面的工作做好。
綜合以上的改進和升級,你會為此買單嗎?
參考連結:
https://techcrunch.com/2023/02/14/githubs-copilot-for-business-is-now-generally-available/
https://www.bleepingcomputer.com/news/security/github-copilot-update-stops-ai-model-from-revealing-secrets/