極客網(wǎng)·人工智能5月20日 事實(shí)表明,AI無法替代開發(fā)者,但更適用于優(yōu)秀的開發(fā)者。而識別大型語言模型(LLM)生成的代碼什么時候會出錯,需要開發(fā)人員具有豐富的知識和經(jīng)驗(yàn)。
軟件工程師David Showalter在談到AI編程時表示:“目前,AI模型在幫助編程人員提高工作效率方面表現(xiàn)出色。”
那么,這一觀點(diǎn)是否站得住腳?Showalter的言論實(shí)則是對AI專家Santiago Valdarrama的回應(yīng)——他認(rèn)為大型語言模型(LLM)作為編碼助手目前還不完全可靠。
Valdarrama說:“除非LLM給我們同樣的保證(就像編程語言一樣讓計(jì)算機(jī)始終響應(yīng)命令),否則它們只能被視為華而不實(shí)的‘炫技’, 對多數(shù)應(yīng)用程序的開發(fā)來說并無實(shí)際價(jià)值。”
他的觀點(diǎn)頗具見地,LLM在如何回應(yīng)提示方面顯然是不一致的,即使是同一提示可能會得到截然不同的回應(yīng)。因此,Showalter的看法可能過于樂觀:雖然AI模型在輔助開發(fā)人員編寫更多代碼方面有不俗的表現(xiàn),但這并不等同于能夠生成高質(zhì)量的可用代碼。
AI和軟件開發(fā)成功的關(guān)鍵在于敏銳地識別那些潛在的不完善之處。許多開發(fā)人員并沒有意識到這一點(diǎn),他們過于依賴LLM的輸出結(jié)果。
正如計(jì)算機(jī)科學(xué)網(wǎng)站HackerNews的一位評論員所說,“我想知道的是,用戶對于ChatGPT的信任有多少是建立在那些看似完美無缺的示例之上的……尤其是對于特定類型的用戶來說?!睘榱四軌蛟谲浖_發(fā)中有效地使用AI,開發(fā)人員需要足夠的經(jīng)驗(yàn)判斷LLM的輸出什么時候可能不夠準(zhǔn)確或存在誤導(dǎo)。
并沒有簡單的解決方案
關(guān)于LLM在軟件開發(fā)中的應(yīng)用和表現(xiàn)存在不同的看法。正如HackerNews網(wǎng)站的一些評論所展示的那樣,許多開發(fā)人員并不贊同過度依賴LLM的輸出。
他們反駁的理由通常歸結(jié)為:“當(dāng)然,開發(fā)人員不能盲目地信任LLM的輸出,就像他們不會無條件地信任在Stack Overflow上找到的代碼,或者完全依賴集成開發(fā)環(huán)境(IDE)等工具一樣?!?/p>
就目前而言,這種看法是正確的,但現(xiàn)實(shí)往往并不盡如人意。例如,雖然開發(fā)人員不應(yīng)該完全相信他們使用的集成開發(fā)環(huán)境(IDE),但I(xiàn)DE在處理基本編程任務(wù)時具備一定程度的準(zhǔn)確性和穩(wěn)定性,例如不會隨意“破壞”程序或弄亂Lisp括號。ChatGPT很可能會出錯,但是IDE很少出現(xiàn)這種情況。
對于Stack Overflow上的代碼來說,可能有不同的使用方式。有些開發(fā)人員可能會直接復(fù)制粘貼代碼,而不進(jìn)行檢查。但明智的開發(fā)人員則會采取更為審慎的態(tài)度。他們會首先查看有關(guān)代碼的評論,以評估其質(zhì)量和適用性。
LLM的輸出并不包含這樣的信號。正如一位開發(fā)人員所建議的那樣,“將Stack Overflow和LLM的輸出都視為可能是錯誤的結(jié)果,并且可能是由經(jīng)驗(yàn)不足的開發(fā)人員編寫的代碼?!边@是一種明智的做法。即使存在錯誤,這些代碼片段或建議也可能為提供有價(jià)值的啟示,幫助開發(fā)人員朝著正確的方向前進(jìn)。
同樣,這需要開發(fā)人員具備足夠的經(jīng)驗(yàn)以識別Stack Overflow的代碼示例或LLM生成的代碼是否存在錯誤?;蛘唛_發(fā)人員足夠明智,只將這些代碼用在“200行樣板文件”或“React頁面中的大表”等常見的場景中。在這些場景中,可以不必完全信任這些代碼,只需在完成之后進(jìn)行測試即可。
總之,正如一位開發(fā)人員所總結(jié)的那樣,“我對LLM的信任程度就像我對初級開發(fā)人員或?qū)嵙?xí)生的信任一樣。我會給它分配一些我知道如何完成的任務(wù),以此驗(yàn)證其準(zhǔn)確性,但不會在這些任務(wù)上花費(fèi)過多的時間。這無疑是最佳的策略。從AI中獲益最大的開發(fā)人員是那些明智的人,他們知道LLM什么時候可能會出錯,但同時也能從中得到一些好處。”
尋求正確使用的方法
開源Python工具Datasette創(chuàng)始人Simon Wilison曾經(jīng)提出這樣的觀點(diǎn),“從AI中獲得最佳結(jié)果實(shí)際上需要大量的知識和經(jīng)驗(yàn),因?yàn)楹芏喽細(xì)w結(jié)于直覺?!彼ㄗh經(jīng)驗(yàn)豐富的開發(fā)人員測試不同LLM的局限性,以衡量它們的相對優(yōu)勢和劣勢,即便一些LLM模型表現(xiàn)不盡如人意,仍然可以利用其價(jià)值。
初級開發(fā)人員如何有效利用AI進(jìn)行編程?AWS AI開發(fā)者體驗(yàn)主管Doug Seven表示,像Amazon Q Developer(前身為CodeWhisperer)這樣的編碼助手,對經(jīng)驗(yàn)不足的開發(fā)人員同樣可以提供幫助。這些工具能夠?yàn)樗麄兲峁┯袃r(jià)值的建議,幫助他們明確編程思路,從而減少編程過程中頻繁向他人求助的需求。
也許正確的答案是:取決于具體情況!
而且重要的是,軟件開發(fā)的理念通常不是“更快、更多地編寫代碼”。實(shí)際上,優(yōu)秀的開發(fā)人員編寫代碼的時間很少,而花費(fèi)更多的時間思考需要解決的問題以及如何找到最佳解決方案。
LLM可以在這方面提供幫助,正如Willison所指出的那樣:“ChatGPT(以及GitHub Copilot)為我節(jié)省了大量的‘深思熟慮’的時間。從在Bash中編寫For循環(huán)到記住如何在Javascript中進(jìn)行跨域CORS請求,我甚至不需要再查找其他資料?!?/p>
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )