GitHub Copilot是一款備受國(guó)內(nèi)開發(fā)者喜愛的輔助工具,它為開發(fā)者提供了巨大的幫助,減少了他們?cè)诰W(wǎng)絡(luò)上尋找解決方案的時(shí)間。這個(gè)基于云的人工智能工具是由GitHub和OpenAI聯(lián)合開發(fā)的,讓人們真正感受到了人工智能的力量。
一、六個(gè)人的默默研發(fā)
Copilot是由一個(gè)小團(tuán)隊(duì)在不到一年的時(shí)間里開發(fā)出來的。在這個(gè)團(tuán)隊(duì)中,只有六位開發(fā)者,另外還有一個(gè)產(chǎn)品經(jīng)理和一個(gè)負(fù)責(zé)設(shè)計(jì)登陸頁面和圖標(biāo)的人員。在開始研發(fā)之前,GitHub和OpenAI已經(jīng)達(dá)成了關(guān)于構(gòu)建大型訓(xùn)練集群的協(xié)議,他們希望通過微調(diào)模型,將人工智能應(yīng)用于編程輔助工具中。
初始階段的效果并不理想,但團(tuán)隊(duì)堅(jiān)持不懈地進(jìn)行測(cè)試和調(diào)整。他們投喂了大量的Python代碼數(shù)據(jù),并設(shè)計(jì)了各種測(cè)試來評(píng)估模型生成的函數(shù)是否能夠通過測(cè)試。起初,通過率非常低,但團(tuán)隊(duì)不斷嘗試并引入一些新的技巧,最終將通過率從不到10%提升到了60%以上。團(tuán)隊(duì)還通過改進(jìn)提示詞的設(shè)計(jì)和使用diffs來提高模型的理解能力。
二、再前進(jìn)一步
Copilot的首個(gè)迭代版本只能生成一些簡(jiǎn)單測(cè)試的代碼,隨后團(tuán)隊(duì)開始嘗試生成常用的用戶界面(UI)設(shè)計(jì)。雖然模型的通過率仍然很低,但團(tuán)隊(duì)希望通過對(duì)模型的微調(diào)和測(cè)試,實(shí)現(xiàn)像Gmail的文本自動(dòng)補(bǔ)全功能一樣好用的功能。
團(tuán)隊(duì)經(jīng)過不斷嘗試和調(diào)整,最終實(shí)現(xiàn)了代碼自動(dòng)補(bǔ)全功能。他們?cè)赩isual Studio Code(VS Code)中添加了自動(dòng)補(bǔ)全功能,使開發(fā)者可以輕松選擇生成的代碼片段。團(tuán)隊(duì)還嘗試了其他幾種UI交付方式,例如在空函數(shù)中添加按鈕或者通過控制鍵從列表中選擇代碼。雖然一切仍處于起步階段,但生成的推薦列表變得越來越豐富。
三、微軟推向全球的努力
在發(fā)布通用版之前,Copilot經(jīng)歷了公測(cè)階段,為不同用戶群體做了優(yōu)化。團(tuán)隊(duì)收集了大量的統(tǒng)計(jì)數(shù)據(jù),并發(fā)現(xiàn)速度是任何用戶群體中最重要的指標(biāo)之一。他們還發(fā)現(xiàn)在新功能發(fā)布的頭幾個(gè)月,印度使用完成率是最低的——不確定為什么,但完成率確實(shí)明顯低于歐洲!
后來團(tuán)隊(duì)發(fā)現(xiàn),這是因?yàn)?OpenAI 只有一處數(shù)據(jù)中心,而且位于美國(guó)得克薩斯州。可以想見,如果數(shù)據(jù)需要從印度穿過歐洲和大西洋再最終抵達(dá)得克薩斯,那來來回回的延遲肯定令人抓狂。這就會(huì)導(dǎo)致提示節(jié)奏和輸入節(jié)奏脫節(jié),功能完成率必然會(huì)受影響。
在找到癥結(jié)之后,團(tuán)隊(duì)成員們也就釋然了。而跟得州不遠(yuǎn)的用戶們紛紛給出好評(píng),比如有人會(huì)評(píng)論說,“我不會(huì)編程,但出于工作需要,我想了解怎么編寫某個(gè) 100 行長(zhǎng)的腳本。”事實(shí)證明,AI 模型特別擅長(zhǎng)這種開發(fā)模式,而在找到模式之后,設(shè)計(jì)出來的 UI 就能派上用場(chǎng)。
后面就迎來了團(tuán)隊(duì)的“高光時(shí)刻”:發(fā)布成果,獲得市場(chǎng)好評(píng),然后盡快再更新和迭代。
“有客戶表示,他們聽說 Azure 打算在未來半年內(nèi)全面承接 OpenAI,但他們等不及了,最好下個(gè)月就開放。”Alex 說道,團(tuán)隊(duì)當(dāng)時(shí)就想辦法滿足這些要求,比如在歐洲和亞洲提供基礎(chǔ)設(shè)施,把 AI 模型拉近到西海岸、得克薩斯乃至歐洲所有用戶身邊。微軟在這方面投入了巨大努力,而在設(shè)施準(zhǔn)備就緒并投入運(yùn)行之后,Copilot 就這樣正式跟大家見面了。
”Alex 表示,“沒有 OpenAI 的天才和有原則的 VSCode 編輯人員,Copilot 是不可能的。
四、引發(fā)開發(fā)者社區(qū)的討論
Copilot 發(fā)布后,很快引發(fā)了廣泛的開發(fā)者社區(qū)討論。一方面,許多開發(fā)者對(duì)這一創(chuàng)新工具表示了歡迎和贊賞。他們認(rèn)為Copilot可以顯著提高開發(fā)效率,減少繁瑣的編碼工作,同時(shí)提供了有用的代碼片段和提示,大大減少了在互聯(lián)網(wǎng)上搜索解決方案的時(shí)間。Copilot為開發(fā)者提供了一種全新的編程體驗(yàn),使他們能夠更專注于核心邏輯的實(shí)現(xiàn)。
另一方面,也有一些開發(fā)者對(duì)Copilot表示了擔(dān)憂和質(zhì)疑。他們擔(dān)心Copilot的存在會(huì)導(dǎo)致開發(fā)者變得懶惰,依賴過度的代碼生成,從而降低編程技能和創(chuàng)造力。他們擔(dān)心Copilot生成的代碼可能存在漏洞和不完善之處,需要開發(fā)者自己進(jìn)行進(jìn)一步的檢查和修改。此外,也有人對(duì)Copilot的代碼版權(quán)和法律責(zé)任問題提出了質(zhì)疑。
針對(duì)這些擔(dān)憂和質(zhì)疑,Copilot團(tuán)隊(duì)表示他們非常重視開發(fā)者的反饋和意見,并將不斷改進(jìn)和優(yōu)化Copilot的功能。他們強(qiáng)調(diào)Copilot只是一個(gè)輔助工具,開發(fā)者仍然需要運(yùn)用自己的判斷和編程能力來審查和修改生成的代碼。此外,他們也會(huì)加強(qiáng)對(duì)版權(quán)和法律問題的考慮,確保Copilot的使用符合相關(guān)法規(guī)和規(guī)定。
五、Copilot的未來展望
對(duì)于Copilot的未來展望,Copilot團(tuán)隊(duì)充滿信心。他們計(jì)劃進(jìn)一步擴(kuò)展Copilot的語言和框架支持,使其適用于更廣泛的開發(fā)領(lǐng)域。他們還計(jì)劃引入更多的AI技術(shù)和算法,提升Copilot的代碼生成能力和質(zhì)量。
此外,Copilot團(tuán)隊(duì)還希望與開發(fā)者社區(qū)進(jìn)行更緊密的合作,收集更多的反饋和需求,不斷改進(jìn)和優(yōu)化Copilot的功能。他們鼓勵(lì)開發(fā)者積極參與到Copilot的發(fā)展中來,共同打造一個(gè)更強(qiáng)大、更智能的開發(fā)輔助工具。
六、總結(jié)
GitHub Copilot是一款由GitHub和OpenAI共同開發(fā)的基于云的人工智能工具。通過小團(tuán)隊(duì)的默默研發(fā),Copilot逐步提高了自身的代碼生成能力和質(zhì)量。它帶來了開發(fā)效率的提升和編程體驗(yàn)的改變。然而,Copilot也面臨一些挑戰(zhàn)和爭(zhēng)議。其中,一些開發(fā)者擔(dān)心Copilot的存在會(huì)降低他們的編程技能和創(chuàng)造力,使他們變得過于依賴代碼生成。此外,Copilot生成的代碼可能存在漏洞和不完善之處,需要開發(fā)者自行檢查和修改。
為了解決這些問題,Copilot團(tuán)隊(duì)承諾將繼續(xù)改進(jìn)和優(yōu)化工具的功能,并加強(qiáng)對(duì)版權(quán)和法律問題的考慮。他們強(qiáng)調(diào)Copilot只是一個(gè)輔助工具,開發(fā)者仍需運(yùn)用自己的判斷和編程能力來審查和修改生成的代碼。
在未來,Copilot團(tuán)隊(duì)計(jì)劃擴(kuò)展工具的語言和框架支持,以覆蓋更廣泛的開發(fā)領(lǐng)域。他們還打算引入更多的AI技術(shù)和算法,以提升代碼生成的能力和質(zhì)量。
與此同時(shí),Copilot團(tuán)隊(duì)也鼓勵(lì)開發(fā)者社區(qū)積極參與工具的發(fā)展,提供反饋和需求,并共同打造一個(gè)更強(qiáng)大、更智能的開發(fā)輔助工具。
總的來說,GitHub Copilot的發(fā)布引起了廣泛的討論,并帶來了開發(fā)效率的提升。然而,它也面臨一些挑戰(zhàn)和爭(zhēng)議,需要持續(xù)改進(jìn)和解決相關(guān)問題。通過與開發(fā)者社區(qū)的緊密合作,Copilot有望成為一個(gè)有益的開發(fā)工具,提升編程體驗(yàn)并促進(jìn)創(chuàng)新。