1. 數(shù)十億行代碼訓(xùn)練,GitHub原生AI代碼生成工具上線,網(wǎng)友:要終結(jié)編程?

        共 3417字,需瀏覽 7分鐘

         ·

        2021-07-04 20:50

        AI代碼

        轉(zhuǎn)自:機(jī)器之心

        AI 編程輔助工具 Copilot:微軟、OpenAI、GitHub 三家聯(lián)合打造。


        GitHub Copilot 是一個(gè) AI 代碼合成器,并不是搜索引擎:它提出的絕大多數(shù)代碼建議都是新生成的,此前從未出現(xiàn)過。

        簡而言之,這就是未來。


        在項(xiàng)目開發(fā)中,優(yōu)秀的代碼自動(dòng)補(bǔ)全工具可以提升工作效率。然而,傳統(tǒng)的 IDE 基本都使用搜索方法進(jìn)行補(bǔ)全,在一些場景下效果不佳。

        今日,GitHub 和 OpenAI 聯(lián)合發(fā)布了新的 AI 代碼補(bǔ)全工具 GitHub Copilot,并展示了技術(shù)預(yù)覽版。該工具可以在 VS Code 編輯器中自動(dòng)完成代碼片段,這也是 OpenAI 接受微軟 10 億美元投資以來的首個(gè)重大成果。


        目前,GitHub Copilot 項(xiàng)目還只是嚴(yán)格的技術(shù)預(yù)覽版,用戶可以在主頁注冊報(bào)名,將有機(jī)會(huì)訪問試用。


        GitHub Copilot 注冊地址:https://github.com/features/copilot/signup

        對于 GitHub 和 OpenAI 推出的這款全新 AI 代碼補(bǔ)全工具,網(wǎng)友們給出了極高的評價(jià)。下面這位用戶大致可以代表大多數(shù)試用者的心聲。ta 表示:「我使用 Alpha 版兩周了,Copilot 似乎能夠準(zhǔn)確地知道我接下來要輸入的內(nèi)容,這令我大受震撼。有時(shí)它甚至建議我要查找的內(nèi)容,例如選擇隨機(jī)十六進(jìn)制隨機(jī)碼的片段或者使用所有常見圖像 mime-types 完成數(shù)組。此外,Copilot 在處理 React 組件時(shí)也特別有用,可以做出非常準(zhǔn)確的預(yù)測。最后,Copilot 改變了程序員記錄自己代碼的方式。如果你在實(shí)現(xiàn)代碼之前編寫了非常好的描述性注釋,它能夠更好地給出正確代碼建議,有時(shí)甚至可以為你編寫整函數(shù)?!?/span>


        MSFTResearch 高級研究員 Alex Polozov 更是表示:不夸張的講,Copilot 將成為本世紀(jì) 20 年代排名前三的技術(shù)進(jìn)展!


        甚至有網(wǎng)友表示:這是要終結(jié)編程?


        不過,雖然使用者對 Copilot 提供的生產(chǎn)力提升贊不絕口,GitHub 也表示:并不是所有使用的代碼都經(jīng)過了漏洞、不安全實(shí)踐或個(gè)人數(shù)據(jù)的審查。因此,他們也設(shè)置了一些過濾器來防止 Copilot 生成攻擊性的語言,并可能效果并不完美,需要后續(xù)完善。

        Copilot 背后的技術(shù)

        首先,訓(xùn)練數(shù)據(jù)上,GitHub Copilot 是在數(shù)十億行公共代碼上訓(xùn)練的。


        從技術(shù)角度來看,GitHub Copilot 工具由 OpenAI 開發(fā)的全新 AI 系統(tǒng) OpenAI Codex 提供支持。OpenAI 的聯(lián)合創(chuàng)始人兼首席技術(shù)官 Greg Brockman 說:Codex 是 GPT-3 的后代。


        OpenAI Codex 在人們?nèi)绾问褂么a方面擁有廣泛的知識,并且在代碼生成領(lǐng)域顯著優(yōu)于 GPT-3 了,部分原因在于該系統(tǒng)是在包含大量公開源代碼的數(shù)據(jù)集上訓(xùn)練的。更具體地,Codex 的訓(xùn)練集中包含了提取自 GitHub 的 TB(terabyte)級公開可用代碼以及英語語言示例。

        由于是在公開可用源代碼和自然語言上訓(xùn)練,Codex 可以同時(shí)理解編程語言和人類語言。因此,在整個(gè)實(shí)現(xiàn)過程中,Copilot 編輯器擴(kuò)展將開發(fā)者的注釋和代碼發(fā)送至 Copilot 服務(wù)端,然后使用 Codex 生成和建議單行代碼和整個(gè)函數(shù)。


        此外,據(jù) OpenAI 的一位代表透露:OpenAI 計(jì)劃今年夏季推出基于其 API 的 Codex 版本,這樣開發(fā)者們就可以利用該技術(shù)創(chuàng)建自己的 app 了。

        在具體實(shí)現(xiàn)中,GitHub Copilot 從編寫的代碼中提取上下文,并給出整行代碼或整函數(shù)的建議。該工具可以幫助開發(fā)者快速發(fā)現(xiàn)解決問題、編寫測試和搜索全新 API 的替代方法,而不需要在網(wǎng)上繁瑣地定向搜索答案。

        另外,使用 GitHub Copilot,開發(fā)者始終可以掌控一切,既可以循環(huán)查看 Copilot 給出的代碼建議,選擇接收或者拒絕,并能夠手動(dòng)地編輯這些代碼。Copilot 會(huì)適應(yīng)開發(fā)者所做的編輯,并適配編碼風(fēng)格。

        GitHub Copilot 適用于多種框架和語言,但本次展示的技術(shù)預(yù)覽版尤其適用于 Python、JavaScript、TypeScript、Ruby 和 Go 語言。GitHub 認(rèn)為該工具是結(jié)對編程(pair programming)的重大進(jìn)展,程序員在編寫代碼時(shí)有了一個(gè)「虛擬的幫手」,它可以捕捉到程序員的錯(cuò)誤,加速開發(fā)過程。

        那么,Copilot 效果如何?

        最近,Github 針對一組在開源存儲(chǔ)庫中具有良好測試覆蓋率的 Python 函數(shù)進(jìn)行了基準(zhǔn)測試,測試團(tuán)隊(duì)清除了函數(shù)體并要求 GitHub Copilot 填充它們。模型在第一次嘗試正確率是 43% ,經(jīng)過 10 次嘗試后,正確率達(dá)到了 57%。之后 GitHub Copilot 還將進(jìn)行多次訓(xùn)練和測試,準(zhǔn)確率會(huì)進(jìn)一步提升。

        下面,我們就看一下 GitHub 給出的具體 demo 展示。

        Copilot 的補(bǔ)全效果

        相比于市面上一些編程輔助工具,Copilot 的上下文理解能力要強(qiáng)大得多。無論是在文檔字符串、注釋、函數(shù)名還是代碼主體中,Copilot 都能根據(jù)編程者已寫出的上下文生成匹配的代碼。

        先來看一下 Copilot 的主要功能——代碼補(bǔ)全的效果,以 TypeScript 語言為例,給出函數(shù)名和參數(shù),Copilot 就能自動(dòng)補(bǔ)全代碼。


        除了補(bǔ)全函數(shù),Copilot 還能根據(jù)注釋寫出代碼。編程者給出一條描述代碼邏輯的注釋,GitHub Copilot 就能自動(dòng)生成代碼:


        在編程過程中,有些代碼的格式和內(nèi)容非常相似,重復(fù)編寫耗時(shí)且無聊。現(xiàn)在 GitHub Copilot 能夠幫編程者解決這個(gè)問題,將簡單重復(fù)的代碼編寫部分自動(dòng)化:


        在軟件開發(fā)的過程中,除了編寫代碼,軟件測試也是非常重要的,對一個(gè)代碼項(xiàng)目起到支撐的作用。導(dǎo)入一個(gè)測試包,其余的測試代碼 GitHub Copilot 就能夠幫開發(fā)者完成。


        在編程中,同一個(gè)函數(shù)常有多種實(shí)現(xiàn)方法,編程者通常會(huì)根據(jù)代碼的實(shí)現(xiàn)效果和運(yùn)行性能選擇最合適的方法。編寫多種實(shí)現(xiàn)需要花費(fèi)時(shí)間和精力,現(xiàn)在使用 GitHub Copilot 一鍵就能搞定,如下圖所示,點(diǎn)擊 Next 和 Previous 就能查看多種實(shí)現(xiàn)方法,點(diǎn)擊 Accept 選中其中一種。


        今天 GitHub 推出的 Copilot 技術(shù)預(yù)覽版本,還僅限于 Python、JavaScript、TypeScript、Ruby 和 Go 語言。此外,開發(fā)團(tuán)隊(duì)表示,在努力使其變得更好的同時(shí),GitHub Copilot 補(bǔ)全的代碼應(yīng)該像其他任何代碼一樣經(jīng)過仔細(xì)審查和測試。這些仍需要人類編程者的監(jiān)督和優(yōu)化,但 AI 自動(dòng)編程的愿景已指日可待。

        參考鏈接:
        https://github.blog/2021-06-29-introducing-github-copilot-ai-pair-programmer/
        https://news.ycombinator.com/item?id=27676266
        https://www.reddit.com/r/MachineLearning/comments/oaambv/n_github_and_openai_release_copilot_an_ai_pair/
        https://www.theverge.com/2021/6/29/22555777/github-openai-ai-tool-autocomplete-code

        往期精彩:

         男人30歲,不該有暮氣

        【原創(chuàng)首發(fā)】機(jī)器學(xué)習(xí)公式推導(dǎo)與代碼實(shí)現(xiàn)30講.pdf

        【原創(chuàng)首發(fā)】深度學(xué)習(xí)語義分割理論與實(shí)戰(zhàn)指南.pdf

         談中小企業(yè)算法崗面試

         算法工程師研發(fā)技能表

         真正想做算法的,不要害怕內(nèi)卷

         算法工程師的日常,一定不能脫離產(chǎn)業(yè)實(shí)踐

         技術(shù)學(xué)習(xí)不能眼高手低

         技術(shù)人要學(xué)會(huì)自我營銷

         做人不能過擬合

        求個(gè)在看

        瀏覽 82
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 亚洲欧美中文日韩在线 | 成人H无码视频在线观看免费 | 国产TS变态重口人妖 | 国产精品久久久久久久成人午夜 | 69网站在线观看 |