作者 | 張俊寶
近年來,隨著AI/ target=_blank class=infotextkey>人工智能技術(shù)進(jìn)步和基礎(chǔ)設(shè)施建設(shè)的不斷完善,人工智能應(yīng)用場(chǎng)景不斷豐富,各類 AI 產(chǎn)品和工具層出不窮。其中,面向開發(fā)者的 AI 編程工具也在不斷迭代,并因宣稱能“幫開發(fā)者寫代碼”而引發(fā)關(guān)注。粗放來看,現(xiàn)在可以為開發(fā)者提供編程建議的常用工具有兩類,一類是以 Kite、Github Copilot 為代表的 AI 代碼補(bǔ)全工具,另一類是以 ChatGPT 為代表的生成式 AI。
前一種 AI 代碼補(bǔ)全工具在上個(gè)月又有新勢(shì)力入場(chǎng)—— 亞馬遜云科技正式推出實(shí)時(shí) AI 編程助手 Amazon CodeWhisperer,免費(fèi)提供給所有開發(fā)人員使用。作為后起之秀,Amazon CodeWhisperer 有哪些不同?是否在實(shí)戰(zhàn)中具備提高效率的能力?為了獲得更多開發(fā)者真實(shí)反饋,提供給開發(fā)者更加友好的 AI 代碼補(bǔ)全工具,亞馬遜云科技《云上探索實(shí)驗(yàn)室》近期推出 Amazon CodeWhisperer 產(chǎn)品體驗(yàn)活動(dòng),廣邀開發(fā)者參與測(cè)評(píng)。讓我們一起來看看 Amazon CodeWhisperer 在實(shí)測(cè)中的表現(xiàn)。
Amazon CodeWhisperer 使用實(shí)測(cè)
我們綜合整理了開發(fā)者們?cè)谑褂瞄T檻、代碼建議能力(上下文聯(lián)系能力)、安全掃描以及在實(shí)戰(zhàn)中是否真的具備提效能力方面的反饋。
開發(fā)者容易上手嗎?
Amazon CodeWhisperer 官方 教程 簡(jiǎn)單明了,開發(fā)者安裝亞馬遜云科技的工具包插件,在 Amazon CodeWhisperer 彈出窗口使用電子郵件地址注冊(cè)并使用亞馬遜云科技賬戶登陸即可開始功能測(cè)試。部分開發(fā)者通過 Jetbrains 的 plugin 功能,查找亞馬遜云科技工具包插件,點(diǎn)擊“install”完成安裝,均反饋安裝過程比較方便。有新用戶覺得賬戶注冊(cè)、填寫 secret key 的過程還是有些麻煩,但大部分的開發(fā)者都可以通過原有亞馬遜云科技的賬號(hào)授權(quán)順利登陸。
部分開發(fā)者使用 Goland 的插件功能安裝,也可以一鍵順利安裝。少數(shù)開發(fā)者覺得登陸入口有點(diǎn)深:如果錯(cuò)過了登錄的彈窗,用戶就需要使用 config 配置登陸憑證。總體來看,基本上所有開發(fā)者都可以順利安裝并開始使用。
代碼建議速度和實(shí)用性怎么樣?
代碼建議能力是 AI 編程工具的核心能力,廣受開發(fā)者關(guān)注。絕大多數(shù)開發(fā)者都對(duì)此項(xiàng)能力進(jìn)行了專項(xiàng)測(cè)試。
代碼建議能力測(cè)試
在現(xiàn)有代碼中,輸入一行注釋,“create a function,get response from OpenAI”,測(cè)試 Amazon CodeWhisperer 會(huì)給出怎樣的反饋。
測(cè)試小結(jié): Amazon CodeWhisperer 可以完成整個(gè)功能的書寫,做到以下幾點(diǎn):
- 自動(dòng)生成方法名稱,命名比較符合規(guī)范
- 可以基于上下文,獲取引用的項(xiàng)目,有較強(qiáng)的上下文聯(lián)系能力
- 可以讀取到上下文的配置文件,在這個(gè)例子里,可以正確拿到 open_ai_key
上下文聯(lián)系能力測(cè)試
測(cè)試小結(jié):聯(lián)系上下文,Amazon CodeWhisperer 的代碼建議用上了開發(fā)者自定義的函數(shù)。
有開發(fā)者表示:“當(dāng)我遺漏了一個(gè)括號(hào)、忘記了引入某個(gè)模塊或使用了錯(cuò)誤的函數(shù)參數(shù)時(shí),它會(huì)立即給出相應(yīng)的警告。” 大部分開發(fā)者認(rèn)為 Amazon CodeWhisperer 編輯器功能很實(shí)用,不僅能夠根據(jù)使用的變量、函數(shù)和類名提供相應(yīng)的補(bǔ)全選項(xiàng),還可以提示潛在的錯(cuò)誤和問題。有開發(fā)者談道:“Amazon CodeWhisperer 讓我們可以 實(shí)時(shí)共享代碼并進(jìn)行編輯,這樣可以減少文件來回傳輸?shù)穆闊惶峁┑陌姹究刂乒δ埽屛夷軌蜉p松創(chuàng)建分支、合并更改和回滾代碼, 讓團(tuán)隊(duì)在開發(fā)過程中更加靈活和有序。”
參加測(cè)試的開發(fā)者們普遍反饋: 開發(fā)者的注釋描述越準(zhǔn)確,Amazon CodeWhisperer 生成的代碼質(zhì)量越高。整體而言,Amazon CodeWhisperer 給出代碼建議的能力和速度基本達(dá)到開發(fā)者預(yù)期,也可以根據(jù)聯(lián)系上下文給出符合開發(fā)人員開發(fā)風(fēng)格的代碼建議,只是對(duì)于中文的理解和交互體驗(yàn)上還可以進(jìn)一步優(yōu)化。
彈窗有些遮擋代碼
安全掃描能否提高代碼可靠性?
一些開發(fā)者對(duì)于 AI 編程工具持觀望或者“不信任”態(tài)度,原因之一可能是擔(dān)心代碼安全無法保證。 Amazon CodeWhisperer 內(nèi)置的安全掃描,是一些 AI 編程工具沒有的功能。這個(gè)功能可以幫助開發(fā)者掃描 JAVA、Java 和 Python/ target=_blank class=infotextkey>Python 編程語言中難以發(fā)現(xiàn)的漏洞。安全檢查功能不僅檢測(cè)開發(fā)者自己寫出的代碼,還會(huì)檢測(cè) Amazon CodeWhisperer 給出的建議代碼,力求最大程度上保證代碼的安全準(zhǔn)確。
在實(shí)際測(cè)試時(shí),Amazon CodeWhisperer 安全檢查功能使用簡(jiǎn)單方便,很快就可以給出修改意見,只需開發(fā)人員點(diǎn)擊開始檢測(cè)即可。如果安全檢測(cè)后的反饋是“nothing to show”,就表示安全檢測(cè)順利通過。開發(fā)人員可以在編寫代碼時(shí)隨時(shí)使用 Amazon CodeWhisperer 的安全檢查功能保證代碼質(zhì)量。
測(cè)試小結(jié):Amazon CodeWhisperer 提示開發(fā)者將此處的標(biāo)識(shí)設(shè)置改為“True”。
是否具備實(shí)戰(zhàn)中的提效能力?
大部分開發(fā)者給出的反饋是肯定的。有開發(fā)者表示:“有個(gè)很實(shí)用的功能,就是語法檢查。我寫代碼的時(shí)候, 它會(huì)實(shí)時(shí)檢查語法錯(cuò)誤,并給我標(biāo)記或提示。這樣我就能及時(shí)發(fā)現(xiàn)和改正錯(cuò)誤,避免在編譯或者運(yùn)行時(shí)出現(xiàn)麻煩。尤其是在大型項(xiàng)目里,這個(gè)功能對(duì)于代碼的穩(wěn)定性和一致性非常重要。”其實(shí)已經(jīng)有不少開發(fā)者正在使用不同的 AI 編程工具了,比如 Amazon CodeWhisperer 已經(jīng)幫助埃森哲 Velocity 團(tuán)隊(duì)的開發(fā)工作量減少了 30%。
除了參加產(chǎn)品體驗(yàn)活動(dòng)的開發(fā)者外,我們還特意邀請(qǐng)了 3 位長(zhǎng)期使用 AI 編程工具的開發(fā)者進(jìn)行體驗(yàn)。他們表示, Amazon CodeWhisperer 可以解決簡(jiǎn)單的編程需求,提高開發(fā)效率,期待 Amazon CodeWhisperer 交互體驗(yàn)提升、安全掃描方面支持更多語言等方面還可以更進(jìn)一步。
“人人都可以是開發(fā)者”
回到開篇的問題:AI 編程工具可以成倍提效嗎?答案是肯定的。根據(jù)對(duì)社區(qū)開發(fā)者的走訪,我們發(fā)現(xiàn), 部分開發(fā)者已經(jīng)開始使用 ChatGPT 等類似產(chǎn)品生成大段代碼建議,再使用 AI 編程工具來進(jìn)行精細(xì)化調(diào)整。可以看到,各類 AI 開發(fā)工具的出現(xiàn)正在進(jìn)一步降低開發(fā)門檻,不少非 IT 開發(fā)人員已經(jīng)也可以經(jīng)過快速學(xué)習(xí),嘗試使用 AI 工具進(jìn)行簡(jiǎn)單但是可以滿足自用的軟件開發(fā)了。