用ai算法幫程式員寫ai算法?或許不少程式員“你已經是一個成熟的ai了,該學會自己補全代碼了”的心願就要實作。
在今年6月份,github與open ai一同合作,推出了一款名為“github copilot”的ai工具,copilot可以根據上下文自動補全代碼,包括文檔字元串、注釋、函數名稱、代碼,隻要程式設計者給出一定提示,這款ai工具就可以補全出完整的函數。
令人震驚的是copilot還在不斷進化。在近日舉行的github universe 2021開發者大會上,github官方表示copilot已開始支援java、c、c++和c#等語言的多行代碼完成,并增加了neovim和jetbrains ide,包含開發者常用的intellij idea、pycharm等編輯器的支援。
github表示,如今新寫的30%代碼都是在ai程式設計工具copilot的幫助下完成的,copilot真的如此強大嗎?在社交網絡中,已有不少早早拿到了copilot試用資格的部落客分享了他們使用copilot的感受。
當然,除了認真寫copilot使用體驗的部落客,還有偷偷摸魚被抓個現着的程式員……
copilot雖然強大,但就和大部分人工智能工具一樣,它仍是建立在openai codex算法的基礎上,需要通過海量的代碼來訓練其智能程度。這對同樣有着微軟血統的openai以及github來說不是問題,微軟在2018年斥資75億美元收購了全球約有5000萬使用者的代碼共享網站github,這意味着copilot所依托的codex算法接受了數十億行公共代碼的訓練。
事實早在copilot誕生之前,openai就推出1750億參數的ai模型gpt-3,gpt-3耗費了千萬美元對人類的詩歌、小說、新聞等海量自然語言進行訓練(主要是英語),也是以gpt-3對自然語言具備了一定程度的了解能力。神經網絡之父geoffrey hinton在gpt-3出現後,曾這樣感慨:“生命、宇宙和萬物的答案,其實隻是4.398萬億個參數而已。”
codex就是基于gpt-3進行訓練,openai 的聯合創始人兼首席技術官greg brockman曾表示codex是 gpt-3 的後代。是以codex也具備了将部分指令清晰的英語翻譯成代碼的能力,甚至有部分媒體宣傳codex已經讓程式員門檻降低到了隻要會英語就能寫代碼的地步。
在官方示例的codex效果展示中,程式員隻需要在編輯界面寫下“make it be smallish”示例上圖中的大型飛船就會如下圖一般縮小,而在這個過程中程式員并不需要輸入一行代碼,codex會自動編寫車程式。
如今,codex經過無數代碼與金錢訓練出來的強大能力應用到了ai工具copilot上,這雖然造就了copilot神奇的代碼補全、給出函數建議等功能,但同時也使得copilot陷入了系列輿論争議風波。
當copilot受到越來越多程式員的歡迎,github的ceo nat friedman興奮地表示:“每天都有數百名github的開發者在使用copilot,如果預覽版進展順利的話,我們将計劃在未來某個時候将其擴充為付費産品。”
nat friedman的這番話讓copilot一下沒那麼香了,這意味着經過github和openai的一波神操作後,收費的copilot白嫖了全球最大的代碼共享網站github5000萬使用者的知識成果用來商業化。<b>這其中引起争議的焦點就在于copilot的版權存在開源代碼衍生品商業化gpl版權問題。</b>gpl(general public license)即通用公共許可證,是一系列自由軟體許可證的統稱,它可以用來保證使用者運作、研究、共享和修改軟體的自由。與此對應的是,任何複制、遷移gpl版權的衍生作品都必須遵循相同或等效的許可條款。
簡單來說就是,我是開源軟體、開源代碼你随便用沒問題,但你隻要用了就也得支援開源,其它任何人也可以免費使用你的代碼或軟體。copilot引起github社群人們公憤的關鍵就是其把開源代碼洗成商業産品,無視了早期促程序式語言世界豐富、開放的開源精神,已有不少程式員在社交媒體上公開表示未來将不再使用github來托管自己的代碼。
github官方則解釋copilot“通常不會精确複制代碼塊”,也有人認為copilot通過海量代碼ai訓練最後得出來的結果就如同人類一樣,人類前期也需要通過學習其他人的相關知識來内化成為自己的,很難把ai模型訓練出來的代碼簡單的了解為複制粘貼。
然而已有不少人否定了這個說法,在通過copilot解決程式中的一些經典問題時,會發現copilot幾乎一字不差的複制粘貼了github上的某段經典代碼。這意味着在copilot成為商業産品後,使用copilot的使用者在把其代碼應用到自家産品時一不小心就會中招違反gpl協定,面臨被人起訴的風險,是以,已有一些科技公司已明确要求禁止員工使用copilot。
copilot在實際應用中面臨的問題不止如此,随着程式員們對copilot了解的逐漸加深,他們發現copilot并不完美,仍然存在着不少缺陷。copilot背後的codex既經過大量文本語言訓練,也吸收了網絡世界中魚龍混雜的海量代碼,是以copilot輸出的部分代碼或許看出去沒有那麼美好,有着隐私洩露、安全風險等問題。b站大佬陳睿就躺槍了一次,雖然立刻有網友表示其中出生年月日資訊有誤。
也有網友表示“copilot 一時爽,調試火葬場”,因為想要清楚、清晰的描述出目标函數想要實作的功能并不簡單,同時在使用copilot的過程中,需要不斷去回顧檢查ai生成的代碼是否正确,這反而容易幹擾到程式設計時的原有思路。
目前,github copilot還處于未收取任何費用的申請試用階段,網際網路上關于它的争論也還在繼續,随着ai工具日益強大,人類将來面對的類似問題隻會越來越多。