前言
剛開始接觸 AI 的時候,最常聽到的詞是 prompt engineering,
好像只要 prompt 下得夠好,什麼問題都能解決。
但真的天天用 agent 一陣子之後,我發現 prompt 只是最內層,
真正決定一個 agent 好不好用的東西,大部分在它外面 XD
這篇把我自己對「單一 agent 的優化」理解整理成三層,
由內到外:prompt、context、harness。
prompt 決定一次回答的品質,context 決定它知道什麼,harness 決定系統可不可靠。
第一層:Prompt engineering(這一句話怎麼問)
最內層,管的是「單次輸入的品質」。
心法其實就那幾條:
- 把角色、任務、限制、輸出格式講清楚
- 給 1~2 個範例(few-shot),通常比空口白話好很多
這層的效果立竿見影,投資報酬率很高,
但天花板也很明顯:再好的問法,也救不了模型根本不知道的事。
問一個它沒看過相關資料的問題,prompt 寫得再漂亮,
它還是只能憑「印象」回答,而憑印象回答就是幻覺的溫床。
第二層:Context engineering(模型此刻知道什麼)
往外一層,管的是「模型看到的世界」。
模型每次回答時,眼裡只有當下被塞進 context 的東西,
所以這層要解的問題是:怎麼讓它「此刻剛好知道該知道的事」。
我自己實際在用的做法有幾個:
- 餵對資料:回答要對得回資料來源,不讓模型憑記憶亂掰(RAG 是這個方向的代表作法,我自己建的是檔案型的出處鏈,同一個精神)
- 記憶分層與按需載入:常用的規則常駐、細節做成目錄按需要載入,不要什麼都一次塞進去(context 有限,塞爆了反而抓錯重點)
- SSOT(單一真相源):同一份知識只住在一個地方,其他地方只放指標。過時的複本就是幻覺溫床,模型讀到舊資料講出來的錯話,跟幻覺一樣難分辨
這層做好之後,agent 的回答品質會有感提升,
因為它不再「猜」,而是「查」。
第三層:Harness engineering(整套系統怎麼跑得穩)
最外層,也是我覺得最容易被略過、但最關鍵的一層。
prompt 跟 context 管的都是「這次回答好不好」,
harness 管的是「整套系統長期跑起來可不可靠」:
- 工具執行與權限:agent 能動哪些東西、不能動哪些東西,用規則跟環境約束住,不靠它自覺
- 靜態與動態驗證:產出用程式實際檢查(能執行的就真的跑跑看,執行結果是事實,不會幻覺)
- SOP 規則與機械閘門:踩過的坑寫成規則自動載入,能程式檢查的就不靠自覺;agent 忘記是常態,閘門不會忘記
- Human in the loop:不可逆的那一步(發布、刪除、對外送出)留給人把關
這層的核心思想是:
不要優化「它這次有沒有做對」,要優化「它做錯時系統會不會擋住」。
三層放在一起看
| 層 | 管什麼 | 一句話 |
|---|---|---|
| Prompt | 單次輸入的品質 | 這一句話怎麼問 |
| Context | 模型看到的世界 | 它此刻知道什麼 |
| Harness | 系統的可靠性 | 整套怎麼跑得穩 |
我自己的使用重心,是一路從內層往外層移動的:
一開始狂研究怎麼下 prompt,後來花更多時間整理知識庫跟記憶分層,
到現在大部分心力都放在 harness:寫規則、建閘門、設計驗證流程。
因為用得越深越發現,單次回答的品質有上限,系統的可靠性沒有,
每修一個坑,整套系統就永久性地變穩一點。
這篇講的是單一 agent 的內部分層,
至於「使用者跟 AI 的關係」怎麼分層(從聊天網頁到指揮多個 agent),
在上一篇:【AI Agent 觀念理解 #1】AI 使用的三個層級。
一樣是個人使用經驗的整理,不敢說是標準答案,
有不同的分法歡迎跟我分享!