iT邦幫忙

2026 iThome 鐵人賽

DAY 7
0

Prompt Engineering(這系列的 L1)講了六天,工具全部在桌上了:注意力機制、token 成本、兩層快取、結構化輸出、自動優化。今天要回答的是:這些全做好,為什麼還是做不出穩定的系統?

先說清楚:prompt 不是不重要。L1 是地基,後面每一層都建立在「你知道模型怎麼讀 prompt」之上。但地基不是房子。

先看 prompt 可以被推到多極致

HolmesGPT(CNCF 的 SRE 事故調查 agent)的 system prompt 可以當 L1 工程的極限展示:它把完整的調查方法論直接寫進 prompt,分成多個 phase、每個 phase 結束強制自問「有沒有跟到真正的 root cause」,用「INVESTIGATION FAILURE」這種強制字眼防止模型提前收工。連領域語義都硬編碼進去:看到 authentication failed 代表這個用戶存在,看到 role does not exist 才代表不存在,直接用 prompt 堵住模型已知的推理錯誤。

這份 prompt 證明了 L1 能承載的遠比多數人寫的多。但把它攤開細看,裡面混著兩種本質不同的規則,它們的命運完全不同。

兩種規則,兩種命運

一種是行為補丁:「不准提前收工」「違規後果」這類強制語言,補的是模型判斷力的不足。這種規則有保鮮期。Anthropic 給 Claude 5 世代模型的 context engineering 指引(連結在文末)給了反向的證據:他們把自家 system prompt 砍掉八成以上,coding 評測沒有明顯下降。模型變強之後,過多的規則反而干擾它的判斷。這裡有一條清楚的軸線:模型越弱,行為補丁越必要;模型越強,同一批補丁越接近包袱。Claude Code 的創始人 Boris Cherny 在訪談中分享過他們的做法:每逢新模型發布,先把大部分 prompt 刪掉,再逐行加回、確認每一行都還必要;甚至有個無 system prompt 的隱藏 simple mode,有時表現反而更好。「模型換代就重新盤點」在這個團隊是排進日常的例行工程。

另一種是領域知識:「authentication failed 代表用戶存在」這種規則不會過時,因為它給模型的是它不具備的事實。模型再強,也不會天生知道你的系統語義。但注意它的本質:它是披著規則外衣的內容。寫下這種規則的時候,你其實是在決定模型看到什麼。

帶著這個區分,來看三類 L1 碰不到、又在 production 最常見的故障。

第一類:模型不知道的事,指令生不出來

你的模型沒看過你公司的內部文件、昨天剛更新的規格、客戶的合約條款。這些東西不在訓練資料裡,再精緻的 instructions 也生不出它沒看過的事實,逼急了它就開始編。

Day 6 的自動優化在這裡也無能為力:GEPA 改的終究是指令,而知識缺口是內容問題。解法的方向很明確:把模型需要知道的事,在呼叫之前放進窗口。問題馬上變成:放什麼、放多少、放哪裡。這已經不是 prompt engineering 的問題了。

第二類:對話一長,同一句 prompt 開始失效

第一輪表現很好的 system prompt,跑到第三十輪開始被無視。指令一個字沒改,效果卻衰退了。

機制在 Day 2(Prompt 為什麼有效)就講過:注意力是零和的。窗口裡累積的對話歷史、工具輸出、中間結果,每一個 token 都在稀釋你的指令能分到的注意力,而且塞在中間段的內容還有 Lost in the Middle 的天然劣勢。Day 3(成本的物理學)補了另一刀:這些累積的歷史每一輪都要重新付費,成本隨輪數膨脹。

注意這類故障的特徵:prompt 品質沒變,變的是窗口的組成。你要管理的範圍,早就超出那句指令,擴大到指令周圍的一切。什麼該留、什麼該壓縮、什麼該丟,這是另一個層次的決策。

第三類:模型記不住任何事

每一次 LLM 呼叫都是一次獨立的前向計算(forward pass):輸入進去、輸出出來,呼叫結束,中間的計算全部釋放,模型沒有任何機制記得上一次說過什麼。你跟 ChatGPT 對話時感覺它記得前文,那個「記得」是工程做出來的:有人把歷史重新塞進了這次的窗口。

這件事在 prompt 層面沒有解。你不可能用指令讓一個無狀態的函數產生狀態。「模型的記憶」完全是工程做出來的:由模型外面的系統決定這次呼叫讓它看到什麼。誰來決定、憑什麼決定、記錯了怎麼辦,這些問題連問法都不屬於 L1。

怎麼判斷你卡在哪一層

下次系統輸出不對,先別急著改 prompt,用三個問題分流:

「正確答案需要的資訊,在這次呼叫的窗口裡嗎?」 不在,就是第一類問題。改指令沒有用,你缺的是檢索或注入的機制。

「同樣的 prompt,在短對話裡表現正常嗎?」 短的正常、長的走樣,就是第二類問題。指令沒壞,是窗口的雜訊淹過了它,你缺的是壓縮和取捨的策略。

「這個功能是不是預設模型記得之前的事?」 是的話,就是第三類問題。先接受模型什麼都不記得,再設計由誰、在什麼時機、把什麼放回窗口。

三個問題都答「否」,才是真正的 L1 問題,Day 2 到 Day 6 的工具箱才是對的藥。我的經驗是,上線後的問題大多數在前三個問題就分流掉了,只會調 prompt 的團隊覺得「LLM 不穩定」,往往是因為手上只有第一層的工具。

三類問題,指向同一個地方

把三類故障排在一起看:知識不在窗口裡、窗口被雜訊塞滿、窗口之間沒有連續性。共同點很清楚:三類問題全部出在窗口的內容,指令的寫法從頭到尾沒有壞。HolmesGPT 的 prompt 裡活得最久的規則是領域知識,因為它們本來就是內容,只是被塞在指令的位置。

L1 教你的是「怎麼對模型說話」;但穩定系統的瓶頸在「模型每次睜開眼睛看到什麼」。每一次呼叫,都有人要替模型決定這個窗口的全部內容:哪些知識、哪些歷史、哪些指令,各放多少、排在哪裡。這個決策沒有人做,就是預設由「把所有東西全塞進去」來做,而那正是系統越跑越歪、越跑越貴的起點。

這個決策有自己的名字:Context Engineering,四層地圖的第二層。明天開始講它的第一課,窗口經濟學:把 context window 當成要編預算的稀缺資源,別當成越大越好的置物櫃。


參考:The new rules of context engineering for Claude 5 generation models(Anthropic)


上一篇
Day 6|讓錯誤來寫 Prompt:DSPy 與 GEPA 的自動優化
下一篇
Day 8|Context Engineering:窗口經濟學
系列文
模型動不了,那你能動什麼?AI Engineering 四層工程觀:Prompt、Context、Harness、Loop11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言