第 3 章 · Context 工程:管理模型的「工作記憶」
上一章教你「這一次要說什麼」。但真實應用裡,你要塞給模型的不只是一句問題——還有對話歷史、使用者資料、一整份文件、工具說明……全部都要擠進那個有限的上下文窗口。怎麼決定「放什麼、放多少、放哪個位置」,就是 Context 工程(Context Engineering)。
💡 一句話區分:Prompt 工程是「把話講好」;Context 工程是「在有限的桌面上,擺對該擺的東西」。前者關心措辭,後者關心資源管理。
把上下文窗口想成「一張有限的桌面」
回憶第 1 章:模型一次能看到的 token 有上限(context window)。把它想成一張桌面——你要處理的所有文件都得攤在這張桌上,模型才「看得到」。桌子再大也有邊界,而且:
東西擺太滿,模型反而找不到重點。
這不是比喻而已,是真實現象,有兩個常被提到的名字:
- Lost in the middle(迷失在中間):模型對開頭和結尾的內容記得最清楚,塞在正中間的資訊最容易被忽略。
- Context rot(脈絡腐化):塞的東西越多、越雜,模型的表現反而下降——雜訊稀釋了訊號。
⚠️ 新手直覺是「把所有資料全部貼給它最保險」。錯。該給的精準地給,不該給的堅決不給,才是高手。塞好塞滿常常讓結果變差、還變貴。
桌上通常要擺哪幾類東西?
一個實際的請求,context 通常由這幾塊組成,順序也有講究:
flowchart TB
A["系統指令 / 人設<br/>(幾乎不變)"] --> B["工具說明<br/>(這次能用哪些工具)"]
B --> C["外部知識<br/>(查到的資料、貼上的文件)"]
C --> D["對話歷史<br/>(前面聊過什麼)"]
D --> E["這一輪的問題<br/>(最新、最重要)"]
原則:穩定的放前面、易變的放後面、最重要的問題放最後(結尾記得最清楚)。這個排法還有一個省錢的好處,等一下講快取時會提到。
記憶:模型天生「金魚腦」,記憶是外掛的
第 1 章說過,模型沒有跨對話的記憶。你上次跟它說的話,這次它完全不記得——除非你把歷史再塞進 context。所以「記憶」在 AI 應用裡,其實是你幫它管理的外掛,分兩種:
| 記憶類型 | 是什麼 | 怎麼做 |
|---|---|---|
| 短期記憶 | 這場對話的來龍去脈 | 把對話歷史一起送進 context |
| 長期記憶 | 跨越多場對話的事實(使用者偏好、專案背景) | 存進資料庫/檔案,需要時再撈出來塞進 context |
對話太長怎麼辦?—— 摘要壓縮(Compaction)
對話一長,歷史就會把桌面塞爆。常見解法是壓縮(compaction):當歷史快滿時,讓模型把前面的對話濃縮成一段摘要,用摘要取代冗長的原文,騰出空間繼續聊。
你在長對話裡看到 AI「還記得很久以前講的事」,背後往往就是這種摘要記憶在運作,而不是它真的記得每個字。
Prompt 快取:省錢又加速的小魔法
如果每次請求的開頭都一樣(例如固定的長 system prompt、固定的工具說明),可以用 prompt caching(提示快取):把這段固定的開頭「快取」起來,下次相同開頭就不用重算,又快又便宜(快取命中的部分成本可低到原價的十分之一)。
這也是為什麼前面說「穩定的放前面、易變的放後面」——因為快取是從開頭比對的,只要前面的內容一個字都沒變就能命中;一旦你把「今天日期」這種每次都變的東西塞在開頭,後面全部就快取失效了。
💡 你不用現在就會實作,只要記住兩件事:①固定內容放前面、②別把每次都變的東西(時間戳、亂數 ID)塞進開頭。這是省錢的關鍵習慣。
動態組裝:Context 不是寫死的,是「臨場拼出來的」
高階應用的 context 不是一段固定文字,而是每次請求前臨場組裝的:
- 看使用者這次問什麼;
- 去資料庫/文件庫撈出最相關的幾段;
- 把「系統指令 + 撈到的資料 + 對話摘要 + 這次問題」拼成最終的 context;
- 才送進模型。
其中第 2 步「根據問題,撈出最相關的資料塞進 context」,正是下一步要專門講的技術——RAG(檢索增強生成)。你可以把 RAG 看成「Context 工程的自動化資料補給站」。
重點回顧
- Context 工程 = 在有限的上下文窗口裡,決定放什麼、放多少、放哪裡。
- 塞越多不一定越好:小心 lost in the middle 與 context rot——精準供給勝過塞好塞滿。
- 擺放順序:穩定的放前、易變的放後、最重要的問題放最後。
- 模型是金魚腦,記憶是你外掛的:短期靠對話歷史,長期靠外部儲存;對話太長用摘要壓縮。
- Prompt 快取能省錢加速——固定內容放開頭、別把易變內容塞前面。
- 進階應用會動態組裝 context,而自動撈資料的那一步,就是第 6 章的 RAG。
到這裡,你已經懂了「模型是什麼、怎麼跟它講話、怎麼餵它資料」。接下來要讓它動手做事——下一章,我們把 AI 從「會聊天」升級到「會呼叫工具」。