GitHub Copilot的最佳免費(fèi)平替
在如今這個(gè)人工智能高速發(fā)展的時(shí)代,每個(gè)行業(yè)都在被AI技術(shù)影響而改變。層出不窮的AI輔助工具,讓我們看到了機(jī)器正在取代一部分基礎(chǔ)的日常工作。對(duì)于我們開發(fā)者而言,當(dāng)前最炙手可熱的就是GitHub Copilot,市面上最好的開發(fā)者輔助工具。GitHub Copilot所提供的代碼補(bǔ)全、建議、解釋等能力非常強(qiáng)大,可以有效地提高編程速度。但是,GitHub Copilot是基于OpenAI所構(gòu)建,后者的成本并不小,所以GitHub Copilot成為一款付費(fèi)工具是非常自然的。
那么,對(duì)于預(yù)算有限的開發(fā)者而言,是否有合適的免費(fèi)平替呢?答案是肯定的!今天,就給大家推薦最近我一直在用,且覺(jué)得還不錯(cuò)的插件:通義靈碼open in new window。推薦的理由,我總結(jié)為以下幾點(diǎn):
- 極低的上手門檻
- 強(qiáng)大的代碼補(bǔ)全和編碼提示
- 快捷好用的智能問(wèn)答
#極低的上手門檻
一些眾所周知的原因,相信體驗(yàn)過(guò)GitHub Copilot的開發(fā)者一定都是經(jīng)過(guò)一番折騰才用上其強(qiáng)大能力的。這對(duì)于一些初學(xué)者用戶來(lái)說(shuō)門檻非常高,同時(shí)對(duì)于一些有審查要求的環(huán)境更是不可能使用。
與此相比,通義靈碼的上手門檻極低:
- 安裝簡(jiǎn)單:用戶只需要在JetBrains系IDE或VS Code的插件市場(chǎng)里搜索:TONGYI Lingma,就能完成一鍵安裝
- 極易上手:無(wú)需配置,自動(dòng)提示。插件在開發(fā)者編碼過(guò)程中會(huì)自動(dòng)根據(jù)上下文做出提示建議,如提示建議不錯(cuò),直接按Tab采納即可。如果需要手動(dòng)喚出提示,也只需要通過(guò)快捷鍵? P快速?gòu)棾鎏崾荆╓indows快捷鍵:Alt P)。除了這兩個(gè)最常用的操作之后,還有一些操作可參見(jiàn)下表:
macOS | Windows | |
接受行間代碼建議 | Tab | Tab |
廢棄行間代碼建議 | esc | esc |
查看上一個(gè)行間推薦結(jié)果 | ? [ | Alt [ |
查看下一個(gè)行間推薦結(jié)果 | ? ] | Alt ] |
手動(dòng)觸發(fā)行間代碼建議 | ? P | Alt P |
#強(qiáng)大的代碼補(bǔ)全和編碼提示
代碼補(bǔ)全是開發(fā)者日常工作最高頻的操作,雖然很多強(qiáng)大IDE工具都自帶了代碼補(bǔ)全的能力,但這也僅限于一些語(yǔ)法層面的簡(jiǎn)單補(bǔ)全,不包含聯(lián)系編碼上下文所推理出的,更有貼近用戶編碼意圖的智能補(bǔ)全和提示。所以,這也是現(xiàn)在很多AI輔助工具吸引人的地方,它們可以提供更為出色的,甚至驚艷的補(bǔ)全效果。
那么通義靈碼在代碼補(bǔ)全方面,是否可以平替GitHub Copilot呢?這里DD根據(jù)很多博主介紹GitHub Copilot的場(chǎng)景來(lái)測(cè)試了一下,供大家參考:
#行級(jí)補(bǔ)全
之前講過(guò),行級(jí)補(bǔ)全在大部分IDE中已經(jīng)包含,但AI工具的行級(jí)補(bǔ)全更為強(qiáng)大,它的強(qiáng)大之處在于能夠根據(jù)你的輸入來(lái)推理邏輯補(bǔ)全。
比如:我要定義一個(gè)B站視頻的URL,只要參數(shù)名中含有B站視頻URL相關(guān)的描述,就會(huì)直接給出模版。這樣的能力是完全不同于IDE所提供的行級(jí)補(bǔ)全的。
#函數(shù)級(jí)補(bǔ)全
函數(shù)級(jí)補(bǔ)全是DD看到GitHub Copilot演示案例中最常見(jiàn)的強(qiáng)大能力,開發(fā)者只需要輸入有含義的函數(shù)名稱,具體的實(shí)現(xiàn)就自動(dòng)提示了:
所以,必須在通義靈碼中也嘗試一下!
先嘗試了一下簡(jiǎn)單的冒泡排序:
輕松完成!
再嘗試一下稍微有點(diǎn)難度的快排算法:
似乎失敗了?只給出了一些簡(jiǎn)單提示,并沒(méi)能得到完整的邏輯。后面,DD又嘗試了幾次,最終獲得了一個(gè)完整結(jié)果,具體如下:
所以,在函數(shù)級(jí)補(bǔ)全這個(gè)功能上,可能還存在一些差距,有待后續(xù)提高吧。
#自然語(yǔ)言補(bǔ)全
自然語(yǔ)言補(bǔ)全的主要場(chǎng)景就是寫注釋,AI工具自動(dòng)生成代碼。
這里DD也找了個(gè)場(chǎng)景測(cè)試了一下。比如下面是Spring Boot中一個(gè)文件上傳的后端處理邏輯,我嘗試通過(guò)自然語(yǔ)言的方式來(lái)描述邏輯,通義靈碼迅速補(bǔ)全了與注釋相關(guān)的代碼:
#上下文感知能力
對(duì)于上下文的感知是AI工具的重要特色,也是這類工具時(shí)不時(shí)驚艷到我們的核心。
比如,下面這種場(chǎng)景,在我第一碰到時(shí),還是有被AI的理解能力所嚇到:
可以看到,當(dāng)我要為這個(gè)Controller添加Swagger的API說(shuō)明時(shí),它居然理解了這個(gè)Controller內(nèi)做的都是微信支付的操作,所以給出了tags="微信支付"的提示。
隨著這段時(shí)間的使用,出現(xiàn)過(guò)很多驚艷到我的補(bǔ)全提示,比如當(dāng)我要寫一個(gè)操作FTP的API時(shí),出現(xiàn)了這樣一幕:
可以看到,在我創(chuàng)建了FtpController之后,通義靈碼自動(dòng)找到了同項(xiàng)目中的FtpService,并給出了依賴提示,這一操作非常符合預(yù)期。之后,通過(guò)換行操作,通義靈碼又給出了進(jìn)一步的提示,這步提示也非常神奇,因?yàn)樗膬?nèi)容已經(jīng)不僅僅是對(duì)當(dāng)前上下文的理解,而是結(jié)合上下文與依賴內(nèi)容的理解,并給出了調(diào)用依賴內(nèi)容的提示。
通過(guò)這段時(shí)間的實(shí)踐,我認(rèn)為通義靈碼的感知能力已經(jīng)非常不錯(cuò),它可以很好的理解項(xiàng)目中的各個(gè)元素,并找到它們之間的關(guān)系,然后在開發(fā)者編碼過(guò)程中給出一些可能需要的提示。同時(shí),我也發(fā)現(xiàn)養(yǎng)成良好編碼習(xí)慣的優(yōu)勢(shì)也在這里有所體現(xiàn)。因?yàn)樵趽碛辛己庙?xiàng)目結(jié)構(gòu)和命名規(guī)范的工程下編碼時(shí),此類AI工具給出的提示就相當(dāng)有水準(zhǔn),也許這樣更有助于AI理解我們的工程吧。
#快捷好用的智能問(wèn)答
通義靈碼插件在IDE中自帶一個(gè)智能問(wèn)答的窗口,具體位置和基本使用方法如下:
圖中我還問(wèn)了一個(gè)問(wèn)題:讓通義靈碼幫我寫一個(gè)文件操作類,它就給了我一個(gè)不錯(cuò)的代碼封裝和使用案例。如果你覺(jué)得不錯(cuò)的話,就可以通過(guò)回答右上方的按鈕,以不同的方式添加到工程中:
是不是很棒呢?要知道GitHub的Chat可不是直接可以用的,相信還有不少小伙伴還在排隊(duì)吧?
通義靈碼的智能問(wèn)答窗口除了處理基本問(wèn)答之外,其實(shí)還有一些更有意思的功能,比如:解釋代碼和生成單元測(cè)試
上面我們體驗(yàn)了代碼補(bǔ)全能力,但是它補(bǔ)全的內(nèi)容到底對(duì)不對(duì)呢?必須趕緊驗(yàn)證一下,順便再體驗(yàn)一下通義靈碼的另外2個(gè)實(shí)用功能:
- 解釋代碼
- 生成單元測(cè)試
下面就來(lái)看看上面生成的能否經(jīng)受住它自己的考驗(yàn) ^_^
操作很簡(jiǎn)單,只需要選中上面生成的代碼片段,點(diǎn)擊鼠標(biāo)右鍵,可以看到解釋代碼和生成單元測(cè)試:
先來(lái)試試解釋代碼,點(diǎn)擊之后會(huì)在IDE右側(cè)彈出問(wèn)答框,具體如下:
沒(méi)啥問(wèn)題,通過(guò)第一關(guān)考驗(yàn)!
下面再嘗試一下:生成單元測(cè)試。馬上就獲得了如下代碼:
直接添加文件之后,運(yùn)行起來(lái)。成功通過(guò)測(cè)試!上面自動(dòng)補(bǔ)全的代碼是正確的!
#總結(jié)
最后,聊聊這段時(shí)間使用通義靈碼的感受。其實(shí),剛開始嘗試的時(shí)候也是碰到一些問(wèn)題,尤其對(duì)于關(guān)于AI輔助的補(bǔ)全能力,會(huì)有一些不太適應(yīng)??赡苎a(bǔ)全能力與項(xiàng)目?jī)?nèi)容和自己日常的編碼習(xí)慣有關(guān),隨著每天不斷的使用,插件似乎在理解項(xiàng)目?jī)?nèi)容和我的習(xí)慣,并不斷給出更讓我滿意的提示內(nèi)容。所以,這個(gè)使用過(guò)程是越用越順的?,F(xiàn)在已經(jīng)是我必不可少的效率神器了。
雖然,通義靈碼總體能力上離GitHub Copilot還有一些差距,但大部分輔助編碼能力已經(jīng)非常接近GitHub Copilot。同時(shí),它的生成速度很快,而且跟IDE適配很好,ide里直接chat也很爽,加之阿里通義千問(wèn)模型的支持。在一眾免費(fèi)的AI編碼輔助工具之中脫穎而出,可以說(shuō)是GitHub Copilot的最佳平替了。
如果您正在尋找AI輔助編碼工具,但又覺(jué)得GitHub Copilot上手折騰麻煩或者覺(jué)得太貴,那么建議免費(fèi)嘗試一下通義靈碼,相信不會(huì)讓你失望。另外,DD看到社區(qū)有其他開發(fā)者反饋初學(xué)者使用非常絲滑,尤其是對(duì)于Python。所以,如果你是初學(xué)者或者Pyhon開發(fā),那么也推薦試試。