編譯 | 言征
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
生成式人工智能是否會(huì)取代人類(lèi)程序員?
可能不會(huì)。但使用生成式人工智能的人類(lèi)可能會(huì),可惜的是,現(xiàn)在還不是時(shí)候。
目前,我們正在見(jiàn)證LLM領(lǐng)域的激烈競(jìng)爭(zhēng)。僅僅是谷歌的生成式人工智能產(chǎn)品就已經(jīng)變得非常豐富——其最新的開(kāi)放模型Gemma就是LLM快速縮小的最新例證(是時(shí)候稱它們?yōu)樾⌒驼Z(yǔ)言模型了嗎?)。
對(duì)于DevOps社區(qū)來(lái)說(shuō),更重要的是我們看到專門(mén)針對(duì)代碼生成的其他LLM的開(kāi)發(fā)速度非??欤鏜eta最近更新的Code Llama 70B。自然,生成式人工智能讓不少開(kāi)發(fā)者感到緊張。最近的一項(xiàng)研究中,近一半的開(kāi)發(fā)者表示擔(dān)心自己當(dāng)前的技術(shù)能力集在生成式人工智能世界中能否成功。
但這種擔(dān)憂真的有必要嗎?人類(lèi)程序員消亡的報(bào)道可能言過(guò)其實(shí)了。人類(lèi)甚至可能比他們意識(shí)到的有更多的時(shí)間為生成式人工智能主導(dǎo)的世界做準(zhǔn)備。
事實(shí)上,開(kāi)發(fā)者應(yīng)該問(wèn)的更恰當(dāng)?shù)膯?wèn)題不是“生成式人工智能會(huì)取代我的工作嗎?”而是“我應(yīng)該使用哪個(gè)LLM?”
1.對(duì)于編程而言,大模型太大
大型語(yǔ)言模型(LLM)對(duì)軟件開(kāi)發(fā)世界的承諾正在將程序員轉(zhuǎn)變?yōu)榧軜?gòu)師。然而,并非所有LLM都完全相同,探討為什么甚至出現(xiàn)了更小型的LLM是值得的。
更強(qiáng)大的主流模型,如GPT-4和Claude 2,仍然幾乎無(wú)法解決不到5%的實(shí)際GitHub問(wèn)題。ChatGPT仍然有很多幻覺(jué):假變量,甚至是已經(jīng)被棄用十多年的概念。此外,它讓無(wú)意義的東西看起來(lái)非常棒。你可以嘗試通過(guò)“提示工程”擺脫這種無(wú)意義,但對(duì)有益于上下文的數(shù)量有一個(gè)最佳點(diǎn)——過(guò)多會(huì)導(dǎo)致更混亂和隨機(jī)的結(jié)果,同時(shí)犧牲更多的處理能力。
2.大型語(yǔ)言模型在編程中的信任問(wèn)題
大型語(yǔ)言模型(LLM)在編程中面臨的最大問(wèn)題是信任。從歷史上看,主流LLM像大型數(shù)字吸塵器一樣不加選擇地吸收網(wǎng)上的一切,而沒(méi)有太多透明度來(lái)源數(shù)據(jù)。如果公司運(yùn)輸?shù)拇a中包含另一組織的版權(quán)代碼,即使只有百分之一,這也是一個(gè)問(wèn)題。你可以想象一個(gè)噩夢(mèng)般的召回場(chǎng)景,已經(jīng)賣(mài)出的產(chǎn)品沒(méi)有可靠的功能來(lái)解決掉可疑代碼。
不過(guò),LLM領(lǐng)域正在迅速變化。也許不久會(huì)搞定這個(gè)問(wèn)題。
3.定制LLM方法的缺陷
不論是否存在缺陷,Meta的定制LLM方法已經(jīng)引起了人們的重要關(guān)注,即大型語(yǔ)言模型并不是AI輔助代碼生成的唯一成功途徑。我們看到這一點(diǎn)在行業(yè)中得到了體現(xiàn),行業(yè)正在為更小、更專注于編程的LLM(如BigCode、Codegen和CodeAlpaca)積聚動(dòng)力。StarCoder是另一個(gè)例子,盡管它只有155億個(gè)參數(shù),但在評(píng)估基準(zhǔn)測(cè)試中發(fā)現(xiàn)它比最大的模型(如PaLM、LaMDA和LLaMA)表現(xiàn)更好。
這些選項(xiàng)各有優(yōu)缺點(diǎn),但最重要的是,小型模型將比大型模型更安全。如果你正在使用C++編程,你真的需要你的LLM充滿與“美國(guó)第三任總統(tǒng)是誰(shuí)?”等無(wú)關(guān)的知識(shí)嗎?數(shù)據(jù)池越小,保持內(nèi)容的相關(guān)性就越容易,模型的訓(xùn)練成本就越低,你無(wú)意中竊取他人版權(quán)數(shù)據(jù)的可能性就越小。
2024年的DevOps團(tuán)隊(duì)?wèi)?yīng)該徹底研究市場(chǎng)上所有可用的LLM選項(xiàng),而不是默認(rèn)選擇最顯眼的。甚至可能值得為不同的用例使用多個(gè)LLM。
4.回到當(dāng)前存在的問(wèn)題:編碼不等于開(kāi)發(fā)
如果生成式人工智能能夠完全勝任端到端的開(kāi)發(fā)和構(gòu)建人機(jī)界面,不會(huì)很快到來(lái)。
誠(chéng)然,LLM能夠很好地與文本和圖像的元素進(jìn)行交互。甚至還有一些工具可以將網(wǎng)頁(yè)設(shè)計(jì)轉(zhuǎn)換為前端代碼。然而,與編碼相比,人工智能單獨(dú)承擔(dān)與圖形和UI/UX工作流程相關(guān)的設(shè)計(jì)要困難得多(盡管并非不可能)。
編碼也只是開(kāi)發(fā)的一部分。剩下的部分是投資于一些新穎的東西,弄清楚受眾是誰(shuí),將想法轉(zhuǎn)化為可構(gòu)建的東西,以及進(jìn)行完善。這就是人為因素的作用。
無(wú)論LLM變得多好,程序員都應(yīng)該始終遵循一個(gè)原則:將每段代碼都視為自己的代碼。進(jìn)行同行評(píng)審,并問(wèn)你的同事:“這是好代碼嗎?”永遠(yuǎn)不要盲目信任它。