1. 從「隨性編碼」到「代理工程」的轉變 [1]

Andrej Karpathy 探討了從直覺式的「隨性編碼」到更嚴謹的「代理工程」的轉變,以及大型語言模型 (LLM) 如何改變軟體開發。

1.1. 程式設計師的感受與軟體 3.0 的興起 [9]

  1. Andrej Karpathy 提到,在過去幾個月中,他作為程式設計師從未感到如此落後,這種感覺既令人振奮又不安 [9]。
    1. 他觀察到,自從 2023 年 12 月以來,最新的模型在處理程式碼區塊時表現出色,他幾乎不再需要修正它們 [13]。
    2. 這種轉變讓他開始「隨性編碼」,即更信任系統的輸出,並將更多時間投入到個人專案中 [19]。
  2. 他將大型語言模型 (LLM) 視為一種新型電腦,代表著軟體開發的「軟體 3.0」典範 [29]。
    1. 軟體 1.0 是指手寫程式碼的時代 [34]。
    2. 軟體 2.0 是透過建立資料集和訓練神經網路來進行程式設計 [35]。
    3. 軟體 3.0 則將程式設計轉變為「提示工程」,其中上下文視窗成為控制 LLM 解譯器並執行運算的工具 [37]。
  3. 他以 OpenAI Claw 的安裝為例,說明軟體 3.0 的強大之處 [41]。
    1. 傳統上,安裝軟體需要複雜的 Bash 腳本來適應不同平台,這屬於軟體 1.0 的範疇 [43]。
    2. 然而,OpenAI Claw 的安裝方式是將一段文字複製貼上給 AI 代理,讓代理根據環境智慧地執行安裝和除錯 [47]。
    3. 這種方式更強大,因為程式設計師無需精確指定所有細節,代理會利用其智慧來完成工作 [48]。

1.2. MenuGen 案例與軟體開發的未來 [53]

  1. Andrej Karpathy 舉了 MenuGen 專案為例,說明軟體 3.0 如何簡化應用程式開發 [53]。
    1. 他最初開發的 MenuGen 應用程式需要複雜的程式碼來上傳照片、執行光學字元辨識 (OCR)、使用圖像生成器獲取菜品圖片並重新渲染菜單 [58]。
    2. 然而,軟體 3.0 的版本只需將菜單照片提供給 Gemini,並提示它使用「Nano Banana」將菜品疊加到菜單上,即可直接生成帶有圖片的菜單 [60]。
    3. 這讓他意識到,許多應用程式在新的典範下可能不再需要存在,因為神經網路可以完成大部分工作,而提示或圖像本身就是輸入和輸出 [63]。
  2. 他強調,人們需要重新思考,不應僅將 AI 視為加速現有工作的方式,而應視為創造新事物的機會 [68]。
    1. AI 不僅僅是讓程式設計更快,它還能自動化更廣泛的資訊處理 [70]。
    2. 例如,他的 LLM 知識庫專案可以讓大型語言模型為組織或個人建立維基,這在以前是無法透過程式碼實現的 [72]。
    3. 他認為,AI 帶來的真正興奮點在於那些以前不可能實現的新機會 [80]。
  3. 展望 2026 年,他預測未來將出現「完全神經網路電腦」 [84]。
    1. 這種設備可以直接接收原始影片或音訊作為神經網路的輸入,並使用擴散模型渲染出獨特的用戶介面 [88]。
    2. 他指出,在早期計算機時代,人們曾困惑電腦會像計算機還是神經網路,最終走向了經典計算機的路徑 [90]。
    3. 未來,神經網路可能成為主機程序,而 CPU 則成為協同處理器,神經網路將承擔大部分繁重工作,並透過工具使用來處理確定性任務 [93]。

2. 可驗證性與代理工程的挑戰 [101]

Andrej Karpathy 探討了 AI 在可驗證領域的自動化能力,以及「代理工程」如何協調強大但易犯錯的 AI 代理以維持軟體品質。

2.1. 可驗證性與 AI 模型的「鋸齒狀」智慧 [101]

  1. Andrej Karpathy 認為,傳統電腦可以自動化程式碼中可明確指定的事物,而最新的大型語言模型則可以自動化可驗證的事物 [103]。
    1. 這是因為大型語言模型在訓練時會獲得驗證獎勵,使其在數學和程式碼等可驗證領域的能力達到高峰 [105]。
    2. 然而,在不可驗證的領域,模型的能力會停滯不前,表現較為粗糙,這導致了模型能力的「鋸齒狀」特性 [109]。
  2. 他舉例說明了模型的「鋸齒狀」智慧 [115]。
    1. 過去,模型會錯誤地回答「草莓」這個詞有多少個字母,但現在已經解決了這個問題 [115]。
    2. 然而,最新的模型在判斷「距離 50 公尺的洗車場應該開車還是走路」時,會建議走路,儘管它能重構十萬行程式碼或發現零日漏洞 [117]。
    3. 這種矛盾表明模型可能存在問題,或者使用者需要參與其中,將模型視為工具並密切關注其行為 [119]。
  3. 他指出,模型能力的「鋸齒狀」特性部分歸因於實驗室的訓練方式和資料分佈 [111]。
    1. 某些領域(如程式碼)在經濟上更有價值,因此實驗室會投入更多資源進行訓練 [113]。
    2. 例如,GPT-3.5 到 GPT-4 之間西洋棋能力的顯著提升,是因為訓練資料集中包含了大量的西洋棋相關數據 [122]。
    3. 這意味著使用者在探索模型時,必須了解它在哪些「電路」中表現出色,哪些「電路」則會遇到困難,並在必要時進行微調 [127]。

2.2. 創業者建議與「代理工程」的定義 [135]

  1. 對於創業者,Andrej Karpathy 建議專注於可驗證的領域,即使實驗室沒有直接關注這些領域 [135]。
    1. 如果能在可驗證的環境中建立強化學習環境或範例,就有機會進行自己的微調,並從中受益 [138]。
    2. 這種技術是可行的,只要有大量的多樣化資料集和強化學習環境,就可以透過微調框架獲得良好的結果 [140]。
  2. 他認為,最終幾乎所有事物都可以在某種程度上變得可驗證,只是難易程度不同 [147]。
    1. 即使是寫作等任務,也可以透過大型語言模型組成的評審團來獲得合理的結果 [148]。
  3. 他區分了「隨性編碼」和「代理工程」 [154]。
    1. 隨性編碼 旨在提高所有軟體開發者的能力下限,讓每個人都能更輕鬆地進行程式設計 [155]。
    2. 代理工程 則旨在在加速軟體開發的同時,維持專業軟體原有的品質標準,例如避免引入漏洞 [158]。
    3. 代理工程是一門工程學科,它研究如何協調這些強大但易犯錯、具有隨機性的 AI 代理,以在不犧牲品質的情況下提高開發速度 [159]。
    4. 他認為代理工程的能力上限非常高,優秀的代理工程師可以將開發速度提升超過 10 倍 [164]。

2.3. 代理時代的人類技能與模型限制 [170]

  1. Andrej Karpathy 認為,在 AI 輔助編碼的時代,程式設計師需要充分利用所有可用工具,並投入時間建立自己的開發環境 [173]。
    1. 他指出,許多公司在招聘時仍未調整流程以適應代理工程師的能力 [178]。
    2. 理想的招聘方式應該是讓應徵者完成一個大型專案,例如建立一個安全的 Twitter 複製版,然後使用 AI 代理嘗試破壞它,以評估應徵者利用工具和構建大型專案的能力 [180]。
  2. 隨著代理承擔更多工作,人類的「品味」、「判斷力」和「監督」能力變得更加寶貴 [185]。
    1. 他以 MenuGen 專案為例,說明代理在處理不同電子郵件地址關聯帳戶資金時會犯錯,因為它們無法理解人類設計中的任意性 [189]。
    2. 因此,人類需要負責制定詳細的規範和計畫,並進行監督,而代理則負責執行底層工作 [197]。
    3. 程式設計師不再需要記住所有 API 的細節(例如 PyTorch、NumPy 中的張量操作),因為代理可以處理這些細節 [200]。
    4. 然而,人類仍需理解基本原理,例如記憶體管理,並負責設計、工程和判斷,確保代理執行正確的任務,例如指定使用唯一的用戶 ID [206]。

3. AI 的「鋸齒狀智慧」:動物還是幽靈? [213]

Andrej Karpathy 探討了 AI 的「鋸齒狀智慧」本質,將其比喻為「幽靈」而非「動物」,並強調在 AI 時代理解的重要性。

3.1. AI 作為「幽靈」而非「動物」 [213]

  1. Andrej Karpathy 認為,AI 的「品味」和「判斷力」可能會隨著時間改進,但目前仍是人類負責的領域 [213]。
    1. 他觀察到 AI 生成的程式碼有時會「令人心臟病發作」,因為它可能臃腫、充滿複製貼上,且抽象化脆弱,儘管能運作但品質不佳 [218]。
    2. 他曾嘗試提示 LLM 簡化 MicroGPT 專案的程式碼,但模型無法做到,這讓他感覺自己「脫離了強化學習的電路」 [222]。
    3. 他相信這並非根本性限制,而是實驗室尚未將這些「品味」和「判斷力」納入訓練 [228]。
  2. 他將 AI 的「鋸齒狀智慧」比喻為「幽靈」而非「動物」 [231]。
    1. AI 是由資料和獎勵函數塑造的「鋸齒狀智慧」,缺乏內在動機、樂趣、好奇心或賦權等透過演化而來的特質 [234]。
    2. 這種比喻有助於理解 AI 的本質,從而更有效地使用它們 [236]。
    3. 他強調,AI 並非動物智慧,對它們大吼大叫不會改變其表現 [240]。
    4. AI 本質上是基於預訓練統計數據和強化學習的「統計模擬電路」,理解這一點有助於判斷哪些方法可能有效,哪些可能無效 [242]。

3.2. 代理優先的世界與理解的重要性 [248]

  1. Andrej Karpathy 預見一個「代理優先」的世界,其中所有基礎設施都將為代理重新設計 [248]。
    1. 他抱怨目前的框架和函式庫文件仍是為人類編寫的,他更希望直接將指令複製貼上給代理 [255]。
    2. 未來的工作負載將被分解為「世界感測器」和「世界致動器」,並以代理優先的方式進行描述 [261]。
    3. 他以 MenuGen 的部署為例,說明目前部署應用程式需要手動配置各種服務,這非常繁瑣 [265]。
    4. 在代理優先的世界中,他希望能直接向 LLM 提出建立 MenuGen 的請求,然後應用程式就能自動部署到網路上,無需人工干預 [268]。
    5. 最終,他認為我們將走向一個個人和組織都有代理代表的世界,例如「我的代理會和你的代理協商會議細節」 [271]。
  2. 在 AI 時代,當智慧變得廉價時,深入學習「理解」仍然至關重要 [278]。
    1. 他引用了一條推文:「你可以外包你的思考,但你不能外包你的理解」 [280]。
    2. 他認為,人類仍然是指導思考和處理過程的瓶頸,因為我們需要理解要建立什麼、為什麼值得做以及如何指導代理 [283]。
    3. 他對知識庫專案感到興奮,因為這是一種處理資訊和增強理解的方式,透過生成合成資料和提問來獲得洞察 [287]。
    4. 由於 LLM 在理解方面並不擅長,人類仍然獨自負責這項任務,因此增強理解的工具變得非常重要 [293]。