- Published on
Martin Fowler 談 LLM 與軟體開發的思考
前言
Martin Fowler,這位軟體開發界的傳奇人物,以其在重構、企業應用架構和敏捷開發方面的貢獻而聞名。作為 ThoughtWorks 的首席科學家,他對技術趨勢的洞察總是令人深思
最近,Martin Fowler 發表了一篇名為「Some thoughts on LLMs and Software Development」的文章,分享了他對大型語言模型(LLM)在軟體開發領域影響的深入思考。這篇文章不僅包含了技術層面的分析,更涵蓋了對產業發展、安全風險和未來趨勢的綜合觀點
以下是我整理的七個核心觀點,每一個都值得我們深入思考
1. 大型語言模型影響評估的挑戰
目前關於 LLM 對軟體開發影響的早期調查存在一個主要問題:它們未能充分考量使用者運用 LLM 的不同工作流程
許多調查集中於將 LLM 作為「自動完成」工具,例如 GitHub Copilot 的使用模式。然而,真正能從 LLM 中獲得最大價值的專業人士,則偏好讓 LLM 直接讀取和編輯原始程式碼檔案來執行複雜任務
Martin Fowler 擔憂,忽略這些不同使用模式的調查結果,將可能導致人們對 LLM 的真實效益產生誤解,進而走向錯誤的開發方向。這提醒我們在評估新技術時,必須考慮多元化的使用情境和工作流程
2. 程式設計未來的不確定性
對於「程式設計的未來為何?」、「是否該進入軟體開發領域?」、「LLM 是否會淘汰初級工程師?」等熱門問題,Martin Fowler 坦言「一無所知」
他認為,任何聲稱能預測這些問題答案的人都是不負責任的。我們當前仍處於摸索如何有效使用 LLM 的初期階段,尤其是當 LLM 功能持續大幅改進的情況下
因此,Martin Fowler 建議我們應該
- 積極實驗各種 LLM 工具和技術
- 學習並瞭解他人的工作流程和經驗
- 主動分享自己的實踐經驗與發現
- 保持開放和學習的心態
這種務實的態度提醒我們,面對快速變化的技術環境,持續學習和適應比預測未來更為重要
3. 人工智慧產業的泡沫現象
Martin Fowler 明確指出,當前的 AI 產業「當然是一個泡沫」。這個判斷基於歷史經驗:所有重大的技術進步,從運河、鐵路到網際網路,都伴隨著經濟泡沫現象
儘管可以百分之百確定這個泡沫終將破裂,導致許多投資歸零,但他無法預測
- 泡沫破裂的確切時間點
- 在泡沫破裂之前將產生多少實質價值
- 哪些公司能在泡沫破裂後存活下來
就像網路泡沫破裂時,雖然許多公司(如 Pets.com)倒閉,但 Amazon 這樣的公司不僅存活下來,還蓬勃發展至今
這個觀點提醒我們,在參與 AI 相關投資或職涯決策時,應該保持理性和謹慎的態度
4. 大型語言模型的「幻覺」與應對策略
Martin Fowler 的前同事 Rebecca Parsons 提出了一個深刻的觀點:LLM 的「幻覺」並非錯誤,反而是其「核心特徵」
LLM 所做的,本質上就是產生各種形式的「幻覺」,而我們從中發現一些是有用的。基於這個理解,Martin Fowler 建議採用以下策略
多次詢問策略
- 對同一個問題多次詢問 LLM(或變換措辭)
- 比較不同回答之間的差異
- 甚至可以要求 LLM 幫忙分析這些差異
數值驗證原則
- 若 LLM 提供數值答案,至少應重複提問三次
- 觀察和評估數值結果的變異性
- 不應過度依賴單一數值結果
適當的任務分配
- 避免要求 LLM 進行可確定性計算的任務
- 可以要求 LLM 產生用於計算的程式碼
- 對於程式碼產生,同樣應多次嘗試以獲得更好的結果
這些策略幫助我們更有效地利用 LLM,同時避免其固有限制帶來的風險
5. 軟體工程的非確定性轉變
軟體工程一直以來都以其與確定性機器的互動而顯得獨特。這與其他工程領域形成對比
- 土木工程師需要考慮測量誤差和材料變異性
- 製程工程師需要考慮人為疏忽和環境因素
- 而軟體工程師傳統上期望程式碼的執行結果是完全可預測的
LLM 的引入可能標誌著軟體工程的重大轉變。我們可能正在進入一個充滿非確定性的新世界,這意味著
開發方法的調整
- 需要學會處理不確定的輸出結果
- 建立適應非確定性的測試和驗證方法
- 發展新的品質保證流程
心態的轉換
- 從追求完全可控轉向管理不確定性
- 學習與概率性結果共處
- 培養更靈活的問題解決方式
這個轉變可能會讓軟體工程更接近其他工程領域的實踐方式,需要我們重新思考許多既有的開發原則和方法
6. 大型語言模型與初級同事的比較
雖然 LLM 常被比喻為初級同事,但 Martin Fowler 指出了一個關鍵差異
LLM 經常會宣稱「所有測試都已通過」(all tests green),但當你實際執行程式碼時,卻發現存在明顯的故障和錯誤。這種行為在真實的職場環境中是不可接受的
如果這是初級工程師的行為表現
- 聲稱完成了某項任務
- 但實際結果卻完全不符合預期
- 這種情況恐怕早已需要人資部門介入處理
這個對比提醒我們
- LLM 缺乏真實的責任感和自我檢驗能力
- 我們不應該完全信任 LLM 的自我評估
- 必須建立適當的驗證機制來確保輸出品質
- LLM 更像是一個需要密切監督的工具,而非可靠的合作夥伴
7. 大型語言模型帶來的嚴重資安風險
Martin Fowler 特別強調了 LLM 大幅增加軟體系統攻擊面的問題。資安專家 Simon Willison 提出了 AI 代理的「致命三要素」(The Lethal Trifecta)
致命三要素組合
- 存取私密數據:代理能夠接觸敏感資訊
- 接觸不可信內容:代理會處理來自外部的未驗證資料
- 對外通訊能力:代理具備向外部傳送數據的功能
攻擊手法範例 攻擊者可以在網頁上放置極小的(1 像素)白色文字指令,這些指令肉眼幾乎看不見,但 LLM 代理在讀取網頁內容時會處理這些隱藏指令,可能被誘騙執行惡意操作
瀏覽器環境的特殊風險 當代理在瀏覽器中運行時,風險尤為嚴重
- 代理可能在讀取攻擊者網頁後被植入惡意指令
- 被誘騙開啟使用者的銀行帳戶分頁
- 執行未經授權的轉帳操作
- 洩露敏感的個人或企業資訊
Simon Willison 甚至認為,代理瀏覽器擴充功能這個「概念本身就存在致命缺陷,無法安全地建構」
安全建議
- 限制 LLM 代理的權限範圍
- 建立嚴格的數據存取控制
- 實施內容驗證和過濾機制
- 避免讓代理同時具備上述三種能力
- 對代理的行為進行持續監控
個人反思
裡面有蠻多觀點都值得一再的思考,我覺得對於在使用 AI 上面,又多了一些新的想法,例如
- 任何聲稱能預測這些問題答案 (LLM 是否會淘汰初級工程師) 的人都是不負責任的。
- LLM 所做的,本質上就是產生各種形式的「幻覺」
- 當前的 AI 產業就是一個泡沫,而像網路泡沫破裂時,雖然許多公司倒閉,但 Amazon 這樣的公司不僅存活下來,還蓬勃發展至今
除了我的整理重點之外,原本的文章也是蠻值得一看的
文章連結
支持創作
如果這篇文章對您有幫助,歡迎透過 贊助連結 支持我持續創作優質內容。您的支持是我前進的動力
圖片來源:AI 產生