GitHub 宣布智慧助理 GitHub Copilot 完成測試,能夠在編寫程式碼時產生標準結構。 該系統是與 OpenAI 專案共同開發的,並使用 OpenAI Codex 機器學習平台,並在公共 GitHub 儲存庫中託管的大量原始程式碼上進行訓練。 該服務對流行開源專案的維護者和學生免費。 對於其他類別的用戶,訪問 GitHub Copilot 需要付費(每月 10 美元或每年 100 美元),但提供 60 天的免費試用訪問。
使用各種框架的程式語言 Python、JavaScript、TypeScript、Ruby、Go、C# 和 C++ 支援程式碼產生。 模組可用於將 GitHub Copilot 與 Neovim、JetBrains IDE、Visual Studio 和 Visual Studio Code 開發環境整合。 從測試期間收集的遙測資料來看,該服務可讓您產生相當高品質的程式碼 - 例如,GitHub Copilot 中提出的建議中有 26% 被開發人員按原樣接受。
GitHub Copilot 與傳統程式碼補全系統的不同之處在於,它能夠產生相當複雜的程式碼區塊,甚至可以根據當前上下文合成現成的函數。 GitHub Copilot 適應開發人員編寫程式碼的方式,並考慮到程式中使用的 API 和框架。 例如,如果評論中有一個 JSON 結構的範例,當您開始編寫解析該結構的函數時,GitHub Copilot 將提供現成的程式碼,而在編寫重複描述的例程清單時,它將產生剩餘的程式碼職位。
GitHub Copilot 產生現成程式碼區塊的能力引發了與潛在違反 Copyleft 許可證相關的爭議。 在形成機器學習模型時,使用了來自 GitHub 上開源專案儲存庫的真實來源文字。 其中許多項目都是根據 Copyleft 授權提供的,例如 GPL,它要求衍生作品的程式碼在相容授權下分發。 透過依照 Copilot 的建議插入現有程式碼,開發人員可能會無意中違反借用程式碼的項目的許可證。
目前尚不清楚機器學習系統生成的工作是否可以被視為衍生作品。 也出現了這樣的問題:機器學習模型是否受版權保護,如果是,誰擁有這些權利,以及它們與模型所基於的程式碼的權利有何關係。
一方面,產生的區塊可以重複現有專案中的文字段落,但另一方面,系統重新建立程式碼的結構,而不是複製程式碼本身。 根據 GitHub 的一項研究,只有 1% 的情況下,Copilot 推薦可能包含來自現有專案的長度超過 150 個字元的程式碼片段。 在大多數情況下,當 Copilot 無法正確確定上下文或提供問題的標準解決方案時,就會發生重複。
為了防止替換現有程式碼,Copilot 中新增了一個特殊的過濾器,不允許與現有項目交叉。 設定時,開發者可以自行決定啟動或停用此濾鏡。 除其他問題外,合成程式碼可能會重複用於訓練模型的程式碼中存在的錯誤和漏洞。
來源: opennet.ru