Logo
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. 存取私密數據:代理能夠接觸敏感資訊
  2. 接觸不可信內容:代理會處理來自外部的未驗證資料
  3. 對外通訊能力:代理具備向外部傳送數據的功能

攻擊手法範例 攻擊者可以在網頁上放置極小的(1 像素)白色文字指令,這些指令肉眼幾乎看不見,但 LLM 代理在讀取網頁內容時會處理這些隱藏指令,可能被誘騙執行惡意操作

瀏覽器環境的特殊風險 當代理在瀏覽器中運行時,風險尤為嚴重

  • 代理可能在讀取攻擊者網頁後被植入惡意指令
  • 被誘騙開啟使用者的銀行帳戶分頁
  • 執行未經授權的轉帳操作
  • 洩露敏感的個人或企業資訊

Simon Willison 甚至認為,代理瀏覽器擴充功能這個「概念本身就存在致命缺陷,無法安全地建構」

安全建議

  • 限制 LLM 代理的權限範圍
  • 建立嚴格的數據存取控制
  • 實施內容驗證和過濾機制
  • 避免讓代理同時具備上述三種能力
  • 對代理的行為進行持續監控

個人反思

裡面有蠻多觀點都值得一再的思考,我覺得對於在使用 AI 上面,又多了一些新的想法,例如

  • 任何聲稱能預測這些問題答案 (LLM 是否會淘汰初級工程師) 的人都是不負責任的。
  • LLM 所做的,本質上就是產生各種形式的「幻覺」
  • 當前的 AI 產業就是一個泡沫,而像網路泡沫破裂時,雖然許多公司倒閉,但 Amazon 這樣的公司不僅存活下來,還蓬勃發展至今

除了我的整理重點之外,原本的文章也是蠻值得一看的

文章連結


支持創作

如果這篇文章對您有幫助,歡迎透過 贊助連結 支持我持續創作優質內容。您的支持是我前進的動力


圖片來源:AI 產生