智能時(shí)代臨近:我眼中AI編程的現(xiàn)在與未來(lái)
自2022年末ChatGPT發(fā)布以來(lái),人工智能(AI)正在深刻地改變軟件開(kāi)發(fā)的格局。從簡(jiǎn)單的代碼補(bǔ)全到復(fù)雜的邏輯生成,AI正逐漸成為程序員不可或缺的助手。最近,OpenAI首席執(zhí)行官山姆·奧特曼在其個(gè)人博客中發(fā)表的文章《智能時(shí)代》(The Intelligence Age)[1]更讓我們深切體會(huì)到,超級(jí)智能似乎離我們?cè)絹?lái)越近了。
正如100年前的打孔卡編程方式與現(xiàn)今編程方式的天壤之別,如今的我們也難以完全預(yù)見(jiàn)超級(jí)AI時(shí)代的編程模式。盡管現(xiàn)階段的大語(yǔ)言模型(如ChatGPT[2]、Claude[3]等)在AI輔助編程方面已經(jīng)展現(xiàn)出強(qiáng)大的能力,并顯著提升了開(kāi)發(fā)效率,但它們?nèi)悦媾R諸多挑戰(zhàn)。不過(guò),與打孔卡時(shí)代的程序員相比,我們這一代程序員是幸運(yùn)的,因?yàn)槲覀円呀?jīng)嗅到了超級(jí)AI的氣息。
當(dāng)前AI輔助編程的現(xiàn)狀
目前,AI輔助編程主要有三種模式:
- IDE模式:通過(guò)使用工具(如Cursor[4]等)智能分析代碼上下文,僅需簡(jiǎn)單的TAB鍵操作即可生成代碼片段甚至是完整代碼,顯著提高編程效率。
- Prompt模式:開(kāi)發(fā)者提供描述性的prompt,AI據(jù)此生成代碼塊,然后開(kāi)發(fā)者將其整合到項(xiàng)目中。這種模式要求開(kāi)發(fā)者對(duì)prompt撰寫(xiě)有較高的理解與能力。
- Agent模式:在這種模式下,AI作為自主的編程助手,理解開(kāi)發(fā)者的意圖并主動(dòng)規(guī)劃(強(qiáng)化學(xué)習(xí)增強(qiáng)的思維鏈等)和執(zhí)行任務(wù)。開(kāi)發(fā)者可以與AI對(duì)話,提出問(wèn)題或請(qǐng)求功能,而AI則基于上下文自動(dòng)生成代碼、測(cè)試用例,甚至進(jìn)行調(diào)試。Agent模式更接近于超級(jí)AI的初級(jí)模擬,試圖通過(guò)自然語(yǔ)言交互與上下文理解,模擬人類(lèi)思維,自主規(guī)劃并處理復(fù)雜編程任務(wù)。
雖然IDE和Agent模式本質(zhì)上都是Prompt模式的變種,但Agent模式更像是對(duì)超級(jí)AI的初級(jí)嘗試,使開(kāi)發(fā)者能夠更專(zhuān)注于高層設(shè)計(jì),將重復(fù)性任務(wù)交給AI處理。
不過(guò),這三種模式都屬于初級(jí)輔助模式,雖然已經(jīng)能顯著提升開(kāi)發(fā)效率。這些模式的輔助效能還與多種因素相關(guān),比如:
- 人類(lèi)提示工程(Prompt engineering )[5]水平:開(kāi)發(fā)者如何有效地與AI溝通需求,直接影響輸出質(zhì)量。
- AI對(duì)不同編程語(yǔ)言的掌握和擅長(zhǎng)程度[6]這樣語(yǔ)法復(fù)雜的語(yǔ)言,AI生成的代碼可能更容易出現(xiàn)編譯錯(cuò)誤。相比之下,Go語(yǔ)言[7]生成的代碼往往更容易直接運(yùn)行。
- 編程任務(wù)的特性:不同類(lèi)型的編程任務(wù)可能更適合不同的AI輔助方式。
注:隨著AI在推理方面的提升(乃至形成獨(dú)立的推理層),“過(guò)提示工程”可能不僅無(wú)法提高推理性能,還有可能妨礙模型工作[8]。也就是說(shuō)對(duì)于推理能力越來(lái)越強(qiáng)的大模型,反倒是提示詞越簡(jiǎn)潔越好,因?yàn)樗季S鏈都隱藏到了模型內(nèi)部,如果再用思維鏈提示反而會(huì)適得其反。
當(dāng)前AI的局限性與未來(lái)展望
當(dāng)前的AI系統(tǒng)更像是一個(gè)知識(shí)數(shù)據(jù)庫(kù),主要基于已有的知識(shí)進(jìn)行推理,與現(xiàn)實(shí)世界的互動(dòng)能力仍然有限,如缺乏訪問(wèn)互聯(lián)網(wǎng)和本地系統(tǒng)的能力。這種限制導(dǎo)致AI只能生成代碼,卻無(wú)法驗(yàn)證其邏輯是否正確或者能否編譯運(yùn)行。此外,AI與人類(lèi)的交互手段仍相對(duì)初級(jí),大多局限于文本、圖片或語(yǔ)音的形式,這些方式在面對(duì)復(fù)雜需求時(shí)顯得笨拙。
那么未來(lái)理想的AI輔助編程模式應(yīng)該是什么樣的呢?我認(rèn)為應(yīng)是端到端編程,即通過(guò)多種交互手段(自然語(yǔ)言、語(yǔ)音、圖片以及將來(lái)的未知方式等)輸入需求,AI直接輸出已部署完畢且可正確運(yùn)行的完整程序。在超級(jí)AI時(shí)代,這種編程模式將成為現(xiàn)實(shí),屆時(shí)AI與程序員的交互方式將迎來(lái)革命性變化。
我們可以將當(dāng)前階段稱(chēng)為"AI的過(guò)渡時(shí)代"。正如OpenAI的Sam Altman所預(yù)言那樣,真正的智能時(shí)代可能還需要幾千天才能到來(lái)。在這個(gè)超級(jí)AI出現(xiàn)的時(shí)代,端到端的編程模式可能才會(huì)真正實(shí)現(xiàn)。
根據(jù)Sequoia Capital的最新研究報(bào)告[9],AI技術(shù)正在從"快速思考"(System 1)向"慢速思考"(System 2)演進(jìn)。System 1指的是快速、直覺(jué)性的反應(yīng),而System 2則涉及更深層次的推理和問(wèn)題解決能力。這種演進(jìn)正在推動(dòng)一種新的"推理層"的發(fā)展,這可能是通向真正智能時(shí)代的關(guān)鍵一步:
圖片
來(lái)自Sequoia Capital的最新研究報(bào)告
超級(jí)AI時(shí)代的編程模式可能包括:
- 腦機(jī)接口:通過(guò)思維直接傳達(dá)編程意圖。
- AR手勢(shì)交互:在虛擬空間中操控代碼組件,如鋼鐵俠電影中的場(chǎng)景。
- 多模態(tài)融合交互:結(jié)合語(yǔ)音、手勢(shì)、眼動(dòng)跟蹤等多種方式。
- 自適應(yīng)自然語(yǔ)言處理:AI能夠理解和解析非結(jié)構(gòu)化的自然語(yǔ)言,轉(zhuǎn)換為代碼邏輯。
這些技術(shù)的發(fā)展可能會(huì)讓未來(lái)的編程體驗(yàn)更像是與高度智能的助手協(xié)作,而非單純的工具使用。如今腦機(jī)接口、AR增強(qiáng)現(xiàn)界等技術(shù)也在快速演進(jìn),很可能與超級(jí)AI帶來(lái)的智能時(shí)代同時(shí)到來(lái)。
程序員角色的轉(zhuǎn)變
在超級(jí)AI時(shí)代,程序員的角色將發(fā)生顯著的變化。程序員基本上不再編碼,而是更多地轉(zhuǎn)變?yōu)?系統(tǒng)架構(gòu)師"、"AI協(xié)作者"和"創(chuàng)新推動(dòng)者"。他們的工作會(huì)更多地涉及高層次的問(wèn)題解決、創(chuàng)新思考和跨學(xué)科合作。技術(shù)知識(shí)仍然重要,但更重要的是理解業(yè)務(wù)需求、系統(tǒng)設(shè)計(jì)、倫理考量和用戶體驗(yàn)等更廣泛的技能。
Sequoia Capital的報(bào)告指出,隨著AI技術(shù)的進(jìn)步,軟件開(kāi)發(fā)正在從"軟件即服務(wù)"(SaaS, Software as a Service)模式轉(zhuǎn)向"服務(wù)即軟件(Service as a Software"模式。這意味著AI應(yīng)用不僅僅是提供軟件工具,而是直接提供完整的服務(wù)解決方案。這種轉(zhuǎn)變將極大地?cái)U(kuò)展AI應(yīng)用的市場(chǎng),從軟件市場(chǎng)擴(kuò)展到更廣闊的服務(wù)市場(chǎng):
圖片
來(lái)自Sequoia Capital的最新研究報(bào)告
注:怎么理解“服務(wù)即軟件”(Service as a Software)呢?想象一下,之前你的公司購(gòu)買(mǎi)了一個(gè)人力資源管理的SaaS服務(wù),這種購(gòu)買(mǎi)僅僅讓你能夠使用其功能,但誰(shuí)來(lái)操作這些功能呢?你的公司依然需要雇傭?qū)iT(mén)的HR人員來(lái)通過(guò)Web、GUI客戶端或App進(jìn)行管理。而“服務(wù)即軟件”則將這兩方面“打包”在一起。你無(wú)需再招聘專(zhuān)員來(lái)操作,只需提出你的需求即可。這種模式有點(diǎn)類(lèi)似于現(xiàn)代的HR勞務(wù)外包,但不同的是,在智能時(shí)代,這種外包的真正執(zhí)行者不再是“人”,而是AI應(yīng)用和支持AI運(yùn)行的算力。這樣一來(lái),你可以更高效地滿足業(yè)務(wù)需求,而無(wú)需擔(dān)心人力資源的管理和操作。
隨著超級(jí)AI的出現(xiàn),我們還可能會(huì)看到AI系統(tǒng)不僅能輔助編程,還能自主編寫(xiě)、維護(hù)和優(yōu)化代碼,即AI的自主性。然而,這種高度自治的系統(tǒng)也可能面臨復(fù)雜的自我管理問(wèn)題。
借鑒《黑客帝國(guó)》中的概念,未來(lái)的AI系統(tǒng)可能會(huì)像一個(gè)巨大的自維護(hù)程序,但仍需要"異常處理程序"來(lái)解決一些無(wú)法自動(dòng)修復(fù)的關(guān)鍵問(wèn)題。在這個(gè)場(chǎng)景中,人類(lèi)程序員可能扮演類(lèi)似"尼奧"的角色,成為系統(tǒng)無(wú)法自行解決問(wèn)題時(shí)的最后求助對(duì)象。
這種人機(jī)協(xié)作模式可能類(lèi)似于現(xiàn)代軟件系統(tǒng)中的"live reload"概念:當(dāng)AI遇到無(wú)法自動(dòng)解決的問(wèn)題時(shí),它會(huì)尋求人類(lèi)的幫助,重新加載并修復(fù)系統(tǒng),從而保持整個(gè)生態(tài)系統(tǒng)的穩(wěn)定運(yùn)行。
小結(jié)
AI輔助編程技術(shù)正處于一個(gè)激動(dòng)人心的過(guò)渡時(shí)期,距離完全自主的端到端編程還有一定距離。然而,隨著技術(shù)進(jìn)步和新型人機(jī)交互方式的到來(lái),編程的本質(zhì)將發(fā)生革命性的變化。未來(lái)的編程將是人類(lèi)與AI共同塑造的領(lǐng)域,一個(gè)充滿無(wú)限可能的智能時(shí)代。
參考資料
[1] 《智能時(shí)代》(The Intelligence Age): https://ia.samaltman.com/
[2] ChatGPT: https://chatgpt.com/
[3] Claude: https://claude.ai/
[4] Cursor: https://www.cursor.com/
[5] 提示工程(Prompt engineering ): https://en.wikipedia.org/wiki/Prompt_engineering
[6] AI對(duì)不同編程語(yǔ)言的掌握和擅長(zhǎng)程度: https://mp.weixin.qq.com/s/K8pao4_-YU77j7Ld1p7VLQ
[7] Go語(yǔ)言: https://tonybai.com/tag/go
[8] “過(guò)提示工程”可能不僅無(wú)法提高推理性能,還有可能妨礙模型工作: https://openai.com/index/learning-to-reason-with-llms/
[9] Sequoia Capital的最新研究報(bào)告: https://www.sequoiacap.com/article/generative-ais-act-o1/