14.1 模型即 Agent:RL 內化工具呼叫決策#
從框架兜底到模型自主#
回顧本書第二篇,我們在第八章建立了「Agent = LLM + 上下文 + 工具」的基本公式,在第九章透過 Harness(約束、驗證、糾正)為 Agent 裝上安全機制。在目前的實踐中,大量決策由框架或 Prompt 模板承擔:什麼時候該呼叫工具、呼叫哪個工具、如何組裝參數,這些策略主要靠工程師在 Prompt 中指示、在 Harness 中約束。
這代表一個重要事實:模型本身尚未「學會」做 Agent——它只是在框架引導下扮演 Agent。
但研究與產業界正在快速推進另一條路:Model as Agent——透過強化學習(Reinforcement Learning),把工具呼叫的決策策略直接內化進模型參數。模型不再只是被動地「被框架推著走」,而是主動「學會什麼時候該拿工具」。
RL 內化的是決策,不是執行#
這裡有一個關鍵區分,值得反覆強調:
強化學習內化的是「決策策略」,不是「工具執行能力」。
模型透過 RL 學會的,是「在這個狀態下,呼叫搜索工具比直接回答更可能得到正確答案」這類判斷。但工具本身——搜索引擎、程式碼解釋器、資料庫查詢引擎——仍然由外圍框架提供。模型不直接執行 SQL、不直接發 HTTP 請求,它只是輸出一個結構化的「呼叫請求」,由框架代為執行後將結果回傳。
用一個比喻:RL 內化的是「知道何時該打電話」的能力,而不是「電話線路」本身。線路屬於基礎設施,永遠在模型之外。
這為什麼重要?因為它界定了模型能力的邊界。即使模型的決策策略再精準,工具的執行仍然受限於外圍環境。安全性、可靠性、可觀測性——這些仍然需要 Harness 來保障。
訓練流程:從環境回饋中學習#
Model as Agent 的訓練流程大致如下:
flowchart LR
S[模型觀察狀態<br/>對話 + 任務] --> D{決策:直接回答<br/>或呼叫工具?}
D -->|直接回答| R[環境回饋<br/>正確/錯誤/獎勵]
D -->|呼叫工具| E[框架執行工具<br/>回傳結果]
E --> S2[模型觀察新狀態] --> D
R --> U[策略更新<br/>PPO / GRPO]
U --> S在每一個決策點,模型嘗試不同的策略組合。環境(或模擬器)根據最終結果給予回饋。透過大量迭代,模型逐漸學會哪些情境適合直接回答、哪些情境需要工具輔助、哪些工具組合能更有效地完成任務。
這與第九章的 Harness 工程形成一個有趣的張力:Harness 是人工設計的規則,RL 訓練是從經驗中萃取的策略。 兩者解決的是同一個問題——「Agent 什麼時候該做什麼」——但路徑截然不同。
當前邊界與實務意義#
目前,Model as Agent 仍處於早期階段,但已有幾個明確的趨勢:
- 模型自主決策的範圍在擴大:從簡單的單工具選擇,到多步驟的工具鏈編排
- 訓練數據的品質決定了策略上限:垃圾數據訓練出的決策策略,會導致模型在錯誤時機呼叫工具
- Harness 不會消失,但角色在轉變:從「替模型做決策」轉為「為模型的決策設定安全邊界」
對軟體工程師而言,這意味著你現在設計的 Agent Harness——那些約束、驗證、糾正機制——將來可能成為模型訓練環境的一部分。你今天寫的規則,明天可能變成模型學會的直覺。
本章小結#
- Model as Agent 透過 RL 把工具呼叫策略內化進模型參數
- RL 內化的是決策策略,工具執行仍在模型之外
- Harness 與 RL 解決同一問題,但路徑不同:人工規則 vs 經驗萃取
- 未來趨勢:模型自主決策範圍擴大,Harness 角色從「決策者」轉為「安全邊界守護者」
想一想#
- 如果模型透過 RL 學會了「何時該呼叫工具」,那第九章的 Harness 約束機制是否變得不再必要?為什麼?
- 「RL 內化決策」與「Prompt 工程引導決策」在本質上有什麼不同?各自的優劣是什麼?
- 想像一個場景:模型學會在回答數學題前先呼叫計算器。如果計算器工具有一天壞了,模型會如何表現?這暴露了什麼風險?