程序員真的會被AI取代嗎?我們如何理性看待AI變革之路
發(fā)布時間:2024-01-26 13:39:49
針對AI對程序員的影響,我們不應過于悲觀和焦慮,而是要積極看待AI變革對我們產生的影響。只有不斷提升自己,擁抱AI,才能讓自己立于不敗之地。雖然AI 技術可能會影響程序員的部分工作,但不太可能完全取代他們。程序員應關注技能提升和專業(yè)發(fā)展,以適應不斷發(fā)展的技術環(huán)境。
AI 能否替代軟件?
Chat UI:適合業(yè)務導向的需求,例如打車、買票,用戶要的是結果,也就是最適合秘書干的活。
Traditional UI:適合體驗導向的需求,例如淘寶、抖音,用戶要的是過程,秘書可以幫你買東西,但是不能代替你逛街。
Super UI:所有生產力工具都會增加 AI 能力,跟 AI 的交互包括但不限于聊天。
你可以把大模型比作人腦,傳統(tǒng)程序比作計算器。雖然人腦也能做加減乘除,但是人腦能取代計算器嗎?大家都知道神經網絡模擬的是人腦,雖然現(xiàn)在還不能完全作證這個模擬到了什么程度,但起碼出發(fā)點是模擬人腦,那按理說人腦有的缺點大模型也會有。目前的實踐也證明了大模型不善于計算,無法精準地存取信息,存在隨機性,這些恰恰也是人腦的弱點,卻正好是傳統(tǒng)程序的強項。
所謂程序,其實就在干兩件事“數據的存儲,數據的處理”,無它。為什么數據庫軟件這么牛逼,賺這么多錢?因為數據的存儲和處理少不了數據庫。人類創(chuàng)造的大量高價值軟件都是某個行業(yè)的信息系統(tǒng),比如航空機票、鐵路調度、ERP、銀行賬戶、股票交易等,都極大地依賴數據庫以及精準的數據處理。
我很難想象把 12306 干掉,放一個大模型在那里,所有人訂票都跟 12306 聊天,然后這個大模型記錄了一切。起碼在目前的 AI 范式下,這個事情不可行。所以大模型更多的是取代人腦,而非取代軟件。要讓大模型很好地工作,需要給它工具,軟件工具,正如 ChatGPT Plugins 所做的那樣。所以編程不會被終結,反而會越來越重要,因為不光要給人做軟件,還要給 AI 做軟件。
軟件和模型的區(qū)別大致可以總結為:確定的交給程序,動態(tài)的交給模型。但這個格局會不會發(fā)生變化?兩件事情的發(fā)生會打破這個格局:
On-deman UI,即 UI 界面可以按需實時生成。例如在和 ChatGPT 聊天過程中,它不但會用語言、圖片、視頻來回應,還可以彈出一個界面讓你做一些操作,例如在調色板上選取心儀的顏色。再比如文字編輯場景,實時生成一個編輯器讓你設置段落和文字樣式。On-deman UI 的出現(xiàn),可以根據當下的場景,實時生成具有交互能力的界面,充分利用攝像頭、麥克風、鍵盤鼠標等交互能力。
Model as Database,指大模型徹底解決了“記憶力”的問題。大模型可以像數據庫一樣實時、高效、精準地存取數據,相當于大模型內置了一個數據庫,或者想象一下你的大腦內植入了一個數據庫。
這兩個技術的出現(xiàn)可以讓我們徹底拋棄現(xiàn)有的軟件,這才是編程的終結。我不知道怎樣才能發(fā)展出這兩樣技術,但起碼對于目前的 AI 而言,需要新一輪的范式升級才有可能實現(xiàn)。未來的事情 who knows,關注當下,軟件依然重要,比以前更加重要。
AI 是否會替代程序員的工作機會?
要回答這個問題,我們得搞清楚 AI 帶來了什么——AI 是智力革命,是對智力的替代。工業(yè)革命讓英國的農業(yè)人口從 60% 降低到 10%,信息革命讓美國的工業(yè)人口從 40% 降到了 8%。按照這個思路,如果說 AI 是智力革命,白領在就業(yè)市場的占比會從 60%+ 變成個位數。從這個角度說,長期來看,AI 的確會替代程序員的工作機會。
如果 AI 可以替代人,那就意味著它替代了一種生產要素。這對于生產力的影響是巨大的,將釋放更多的人類創(chuàng)造力,消滅舊崗位,創(chuàng)造新崗位,對大家的生活造成極大的影響。
GPT-4 的智力水平已經相當高,GPT-5 可能超越 80% 的人類智力。在這樣的背景下,問題就變成了如何讓 AI 真正去替代某一個工種。但當前來看,AI 技術仍然更偏向于輔助者,而非驅動者。市場上出現(xiàn)的完全由 AI 構建應用的產品,仍停留在玩具階段。而輔助型的 AI 助手則更加成熟,如 GitHub Copilot,這樣的工具并不能替代程序員,只能作為生產工具的增益,無法替代生產力本身。
LLM 能力本身提高
Semantic Kernel 團隊曾總結過:人類覺得有困難的工作,對于 LLM 同樣困難。這點出了 LLM 的本質:一個類似于人腦,可以理解意圖、代替腦力勞動的工具。那這個人腦本身的水平,自然限制了其是否可以在復雜場景下處理復雜問題。
對于復雜應用來說,LLM 需要在如下三個方面達到一定標準:
1. Context Length(上下文長度)
上下文長度可以說是新時代的內存。正是因為上下文長度不夠,所以目前構建 LLM 應用需要各種復雜的 Prompt Engineering(提示工程)來做各種召回、切換、調度等工作,有點像當年的虛擬內存。但同樣的上下文長度,質量卻是不一樣的。不能光看模型聲明的上下文長度,而要實測有效的上下文長度。例如,GPT-4 默認的上下文長度是 8K,但也有 32K 版本。在實際測試時,會發(fā)現(xiàn) 32K 版本在上下文超過 8K 的情況下能力驟降,很多內容會被忽略。我理解這是 LLM 的注意力不夠導致的,額外的上下文長度沒有意義。所以 Context-Length 這個指標核心考察的是該 LLM 的有效上下文長度,得分越高說明處理長文本的能力越強。
2. Reasoning Depth(推理深度)
推理深度可以理解為 LLM 的“聰明”程度,能否舉一反三、理解隱含意圖、基于中間答案推斷出最終答案。比如:
You are an AI software requirement analyst. Please make a judgement if the following requirements needs persistent storage. YES or NO, no explanations. Requirements: I want to hold a party tomorrow night. Please send invitation emails to my friends. My friends emails: Ella: ella@gmail.com, jack: jack@gmail.com.
In the email, give them a link that shows a web page, ask them what kind of alcohol they prefer, whisky, wine or beer. I also need a web page to see their choices.
這是一個簡單的信息收集應用的需求,在需求描述中是沒有提到存儲或者數據庫這樣的字眼,但是實現(xiàn)這個應用需要用到存儲或者數據庫。這就要求 LLM 理解這個需求的意圖,并且推斷實現(xiàn)這個意圖必須有持久化的存儲,正確答案是 YES。
3. Instruction Compliance(指令遵循)
指令遵循可以理解為 LLM 聽話的程度。跟 LLM 打交道的過程中往往會遇到你讓它不要干啥,但它壓根不理你,還是會輸出一些你不想要的內容的情況。比如你跟它說不能討論政治,但在聊天過程中還是會回答政治相關的問題。我們還是拿上面那個信息收集的應用舉例。我們在 Prompt 中明確了回答只要 YES or NO,但是我們來看看 LLM 的表現(xiàn):
可以看到 Claude 的理解是對的,但答案的格式是錯的,也就是沒有按照我們的指令生成答案。
指令遵循的能力是 LLM 結構化輸出的基礎,例如輸出 YAML 或者 JSON。如果這個能力不好,不按照格式要求輸出,會導致輸出結果很難被下游的程序所使用。所以 Instruction Compliance 這個指標得分越高,說明 LLM 結構化輸出的能力越好。
以上是在構建復雜應用的場景中必備的三個能力,恰好對應了“輸入-處理-輸出”三個環(huán)節(jié),任何一項的薄弱都會導致很難實際使用這個 LLM。所以 LLM 能力本身的大發(fā)展,是可以替代人的基礎。
工作內容 DSL 化
當我們提到 LLM 在工業(yè)代替人進行工作時,除了和人打交道,往往還要和具體行業(yè)的知識、數據、系統(tǒng)進行交互。給 LLM 灌輸行業(yè)知識,當前有兩種方式,一種是 Fine Tuning(微調),另外一種是 Prompt Engineering。就目前實際的行業(yè)發(fā)展而言,F(xiàn)ine Tuning 還未形成共識,并且成本巨高,實際目前的大量應用都是基于 Prompt Engineering 做的——當前世界上應用最廣泛的模型 GPT-4 并不提供 Fine Tuning 的選項。
但無論是 Fine Tuning 還是 Prompt 工程,都對結構化數據有一定要求。這方面我認為最值得參考的是微軟的一篇論文,來自 Office Copilot 團隊所著的“Natural Language Commanding via Program Synthesis”,這篇論文提到的工程實踐有一個核心點就是 ODSL(Office DSL),是 Office 團隊為這個場景定制的一套 DSL(領域特定語言),這也是控制大模型輸出的主要手段,就是結構化,事實證明“大模型喜歡結構化”。
成熟的、給 AI 設計的工具
盡管人類和人工智能(AI)都擁有一定的智力能力,但在現(xiàn)階段,大多數產品設計仍然以人類為中心,而非 AI。
以協(xié)作為例,單個人的工作能力有其天然的限制,因此需要與他人協(xié)同合作。這就導致了人類工作的異步性。在軟件工程領域,我們使用 Git 這樣的工具來解決異步協(xié)作帶來的問題。
再比如,任何一個工程項目都需要經過生產和測試兩個環(huán)節(jié)??紤]到確保工作的誠信性,通常我們不會讓生產者和測試者是同一個人。但你完全可以讓一個 AI 同時進行生產和測試,因為 AI 本身不存在誠信問題。
此外,人類和 AI 在交互方式上也存在著顯著差異。比如,大部分的軟件操作都需要使用鼠標,因為這種人類和 AI 在輸入和輸出(I/O)方式上的區(qū)別,導致 AI 其實很難操作現(xiàn)有的軟件。
小結
AI 未來會怎樣,沒有辦法預知,但是可以確定,它目前的編碼水平不會威脅到程序員。
雖然現(xiàn)在的情況不太好,但等過了低谷期,經濟恢復了,程序員的需求就會上升。
你的工作今年是有保障的。如果你努力的話,明年也是有保障的,而且很可能從此都是有保障的。因為如果一直不斷學習 AI,你會越來越熟練地掌握它,讓它為你工作,達到你的目的。也就是說,它會放大你的生產力。這就是很關鍵的地方,AI 與人類不是競爭關系,
它未必會減少機會,反而可能帶來更多的機會。
因此,當前AI的編碼水平不會對程序員構成威脅,并且通過不斷學習和掌握AI的使用方法,可以將其作為工具來提高生產力。
以上為本次所有分享內容
關注“盛圖科技”公眾號
私信“寒假編程訓練營”即可免費報名參加!