iT邦幫忙

2025 iThome 鐵人賽

DAY 26
1
DevOps

初探 LLM 可觀測性:打造可持續擴展的 AI 系統系列 第 26

【Day 26】探討 Context Engineering:打造新一代 AI 應用的核心引擎

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20251010/20149562fGs661inHG.jpg

前言

在過去幾年,大型語言模型 (LLM) 的浪潮席捲全球,「提示工程 (Prompt Engineering)」迅速成為 AI 開發者與愛好者人人都需掌握的顯學。我們致力於鑽研如何撰寫精煉、巧妙的提示詞,期望在一次的互動中,就能引導模型產出最精準、最驚豔的結果。這門技藝無疑是重要的,它教會了我們如何與 AI 進行有效的「對話」。

然而,從單純的「問答機器」或「內容產生器」,邁向能夠自主規劃、執行多步驟複雜任務的「AI 代理 (AI Agents)」,一個更深層、更根本的挑戰浮現出來:單次的完美提示已遠遠不足。真正的挑戰不再是如何問出一個好問題,而是如何為 AI 在漫長的任務執行過程中,持續提供一個乾淨、相關且高效的資訊環境。

這就是典範轉移的開端:我們的焦點,正從「Prompt Engineering」轉向「Context Engineering (上下文工程)」。這是一場從「對話」到「資訊流管理」的必然演進。

什麼是 Context Engineering?

https://ithelp.ithome.com.tw/upload/images/20251010/20149562IGt6DZd8NE.png
https://www.projectpro.io/article/context-engineering-in-ai/1152

如果說 Prompt Engineering 是在為一位聰明的演員寫下一句完美的台詞;那麼 Context Engineering 則是作為一名導演,需要管理整個舞台上的一切:包含劇本的主線、演員的記憶、手邊的道具、以及舞台燈光的變化。

更精確地說,Context Engineering 是一門系統性地策劃、組裝與維護 LLM 在每一次推理時所需完整資訊集合的工程學科。這個「資訊集合」或稱「上下文 (Context)」,其範疇遠遠超越了使用者輸入的那一行指令。它是一個動態的、多層次的資訊體,可能包括:

  • 系統級指令 (System Prompt):定義 AI 的角色、個性和核心目標。
  • 任務目標 (Task Goal):當前需要完成的具體任務。
  • 對話歷史 (Conversation History):過去的互動記錄與中間結論。
  • 外部知識 (Retrieved Knowledge):從文件、資料庫或 API 中即時檢索的相關資料。
  • 工具集 (Tool Suite):AI 可用的工具描述與其功能。
  • 短期記憶 (Scratchpad):AI 在思考過程中的中間步驟、自我修正與筆記。

Context Engineering 的核心目標,並非盲目地將所有資訊塞滿模型的上下文視窗 (Context Window),而是要在每一個決策點,為模型提供「能引導出期望結果的、最小但訊號最強的 token 集合」。

https://ithelp.ithome.com.tw/upload/images/20251010/20149562O6EF5h0eFV.png
https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents

為何 Context Engineering 在今日至關重要?

我們正處於一個以 AI Agents 為核心的應用爆發時代。無論是能自主修復程式碼的開發助理、能規劃並執行完整行銷活動的策略夥伴,還是能長期管理個人專案的智慧秘書,這些應用的共同點是它們都需要處理長期、多步驟且充滿不確定性的任務。

在這樣的場景下,上下文管理變得極為棘手:

  • 資訊爆炸:任務過程中產生的對話、工具回傳結果、檢索到的文件,會迅速撐爆模型的上下文視窗。
  • 訊號衰減:當無關的資訊不斷湧入,真正關鍵的「訊號」會被「噪聲」所淹沒,導致模型做出錯誤判斷。
  • 成本失控:每一個送入模型的 token 都意味著計算成本和時間延遲。失控的上下文將直接導致應用程式變得昂貴且緩慢。

因此,Context Engineering 不再是一個可有可無的「優化選項」,而是決定一個複雜 AI Agent 應用程式能否可靠、高效、且經濟地運作的核心基礎設施

為何必須重視 Context Engineering

https://ithelp.ithome.com.tw/upload/images/20251010/20149562hux3DXx7mC.png
https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents

在理想的世界裡,我們可以將所有相關資訊像數百頁的技術文件、長達數月的對話紀錄、整個程式碼庫全部提供給 AI,然後期待它能像全知的神一樣,瞬間給出完美的答案。然而,現實是,大型語言模型的運作原理使其與這個夢想之間存在一道鴻溝。強行將所有資訊塞入上下文,不僅效率低下,甚至會適得其反。

Context 的計算成本

https://ithelp.ithome.com.tw/upload/images/20251010/20149562T92wPGnsit.png

如果 Context Window 太小,直接加大不就好了?

首先,我們必須將 Context 視為一種「有限的注意力預算 (Attention Budget)」。儘管我們看到模型廠商不斷推出擁有百萬、甚至千萬級 Token 的上下文視窗,但這帶來了一個巨大的誤解:「更大」並不總是等於「更好」。

Transformer 架構的核心是「注意力機制」,模型在產生下一個字詞時,會回顧整個上下文並為每個部分分配注意力權重。當上下文充滿了大量低相關性的「噪聲」時,真正關鍵的「訊號」就很容易被稀釋。這就像在一個極度嘈雜的房間裡試圖聽清一個人的耳語一樣困難。卓越的 Context Engineering 追求的不是最大的上下文,而是「能引導出期望結果的、最小但訊號最強的 Token 集合」。

Context 腐爛現象(Context Rot )

https://ithelp.ithome.com.tw/upload/images/20251010/20149562FTPwfTvMgl.png
https://research.trychroma.com/context-rot

更令人警惕的是一種被稱為「Context Rot (上下文腐爛)」的現象。研究顯示,隨著輸入上下文長度的增加,即使答案明確地存在於文本中,頂尖模型找到並正確使用該答案的能力也會顯著下降。

我們可以將其想像成一個「大海撈針 (Needle-in-a-Haystack)」的測試。當「大海 (Haystack)」即上下文變得越來越龐大時,模型找到那根「針 (Needle)」即關鍵資訊的成功率會急劇下降。資訊不僅僅是被忽略,有時甚至會被模型錯誤地解讀,導致其產生幻覺。這意味著,一個龐大但未經管理的上下文,反而會讓你的 AI 應用變得極不可靠。

常見的失敗模式

管理不善的上下文會在實際應用中引發一連串的具體問題:

  • 上下文混淆 (Context Confusion):當上下文中包含多個相似但不完全相同的資訊來源時(例如,兩個版本的產品規格書或多個功能類似的工具),模型很容易感到困惑,將它們的細節混為一談,給出事實錯誤的答案。
  • 上下文干擾 (Context Distraction):這比混淆更為陰險。有時,上下文中包含了與主題相關但錯誤或過時的資訊,這些資訊會成為強力的「干擾項 (distractors)」。模型可能會被這些看似可信的干擾項誤導,即使正確的資訊也存在於上下文中。
  • 資訊遺忘 (Information Forgetting):這是一個被廣泛驗證的問題,稱為「迷失在中間 (Lost in the Middle)」。模型對位於上下文視窗最開頭和最末尾的資訊記憶最深刻,而夾在中間的大段內容則很容易被「遺忘」或忽略。對於需要追蹤長期對話或分析長篇文件的任務來說,這是致命的。
  • 成本與延遲 (Cost and Latency):最後,也是最現實的商業考量。每一個被送入模型的 Token 都直接轉化為 API 費用和使用者等待的時間。一個臃腫、未經優化的上下文,會讓你的應用程式變得既昂貴又遲緩,嚴重影響使用者體驗和營運效益。

Context Engineering 的常見策略

https://ithelp.ithome.com.tw/upload/images/20251010/20149562vdhoJo5Iad.png
https://blog.langchain.com/context-engineering-for-agents/

LanChain 團隊以自身對於 Agent 的經驗與了解,提出了以下四種策略來實踐 Context Engineering

理解了「上下文失控」的種種弊病後,我們需要一個系統性的框架來駕馭它。與其將 Context Engineering 視為一門單一的技術,不如將其看作一個工具箱,裡面包含了四種相輔相成的核心策略:寫入 (Write)、選取 (Select)、壓縮 (Compress) 和 隔離 (Isolate)。 一個高效的 AI Agent,正是在任務的每個階段,靈活地運用這些策略來動態建構其「思維空間」。

1. 「寫入 (Write)」:將知識持久化於視窗之外

https://ithelp.ithome.com.tw/upload/images/20251010/20149562PVNsiiL3rS.png
https://blog.langchain.com/context-engineering-for-agents/

最直接的上下文管理策略,就是將非必要的資訊移出上下文視窗,將其「寫入」到一個外部的、更持久的儲存空間。這就像我們人類會做筆記或建立檔案一樣,目的是為了清空大腦的「工作記憶」,同時確保資訊不會丟失。

  • 短期記憶:這是 Agent 在執行單一任務時的「思考筆記本」。Agent 可以將中間的推論或臨時發現「寫入」草稿本,避免過程性的資訊佔用寶貴空間,同時也能在需要時回溯檢查,提升推理的穩定性。
  • 長期記憶:對於需要跨越多個工作階段的任務,Agent 必須能記住關鍵知識或使用者偏好。透過將資訊「寫入」到外部檔案或資料庫,Agent 就能夠逐步學習和演化。Anthropic 推出的 Memory Tool 正是此策略的典型實現,它允許 Agent 讀寫外部檔案,建立自己的知識庫。

2. 「選取 (Select)」:即時注入高訊號的資訊

如果說「寫入」是將資訊移出上下文,那麼「選取」則是在最需要的時候,將最關鍵的資訊精準地注入上下文。這是一個「Just-in-Time」的動態過程,確保模型在做決策的當下,擁有最相關的資訊,同時又不會被無關的細節所淹沒。選取的來源可以是多樣的,主要包括以下四種類型:

  • 從短期記憶 (Scratchpad) 中選取

    Agent 在執行多步驟任務時,會將中間的思考或觀察記錄在「草稿本」中。當後續步驟需要參考這些中間結論時,便可以透過工具呼叫或由開發者以程式化方式,將草稿本的特定內容「選取」並放入當前的上下文中。

  • 從長期記憶 (Memories) 中選取

    為了讓 Agent 展現連貫性與個人化,它需要從儲存的長期記憶中選取相關資訊。這包括選取過去的成功案例作為「少樣本範例」、選取儲存的特定指令來指導行為,或是選取事實知識來完成任務。通常會使用嵌入向量 (Embeddings) 或知識圖譜來輔助檢索,但這也充滿挑戰,錯誤的記憶選取可能會導致非預期的結果。

  • 從工具集 (Tools) 中選取

    當 Agent 擁有過多工具時,直接提供所有工具描述會導致模型混淆。更高效的策略是對工具描述本身應用 RAG,根據當前任務,動態地「選取」一小部分最相關的工具,並只將它們的描述放入上下文,這能顯著提高工具選擇的準確性。

  • 從外部知識 (Knowledge) 中選取

    這是「選取」策略最核心的應用場景,而 RAG (Retrieval-Augmented Generation) 正是為此而生的黃金標準。當 Agent 需要基於大量外部文件(如技術手冊、內部 wiki)來完成任務時,RAG 能夠從中高效地檢索出最相關的文件片段,並將其「選取」出來以增強提示詞。

3. 「壓縮 (Compress)」:最大化資訊密度

https://ithelp.ithome.com.tw/upload/images/20251010/20149562YzwI3pmNEx.png
https://blog.langchain.com/context-engineering-for-agents/

既然上下文視窗的大小有限,我們的目標就是最大化這個容器內資訊的「密度」。「壓縮」策略正是為此而生。

  • 對話摘要 (Compaction):定期使用 LLM 將冗長的對話歷史進行提煉,生成一段簡潔的摘要,用這段高密度的摘要來取代原始的對話紀錄。
  • 結果修剪 (Trimming/Pruning):在將工具返回的結果(如 API 回應)放入上下文之前,先進行「修剪」,只提取出任務真正需要的核心數值,丟棄所有雜訊。

4. 「隔離 (Isolate)」:透過分治法簡化問題

https://ithelp.ithome.com.tw/upload/images/20251010/20149562LDWoqjUFpw.png
https://blog.langchain.com/context-engineering-for-agents/

當面對極其複雜的任務時,更智慧的方法是採用「分治法 (Divide and Conquer)」,將問題分解,並在隔離的環境中處理。

  • 多代理架構 (Multi-Agent Architecture):將任務分解給一個協作的代理團隊。例如,設立一個專職的「研究代理」,它在自己獨立的 Context 中執行複雜的資料檢索,最後只將精煉後的「研究報告」回報給主代理,避免主代理的上下文被過程中的海量資訊所污染。
  • 沙箱環境 (Sandboxed Environments):對於那些必然會產生大量 Token 的操作(例如執行程式碼),可以在一個「沙箱」中執行,只有最終的、最重要的結果會被傳回給 LLM。

https://ithelp.ithome.com.tw/upload/images/20251010/201495623yM36tDBkk.png
https://blog.langchain.com/context-engineering-for-agents/

Context Engineering 實踐準則

我們已經探討了 Context Engineering 的核心困境與四大技術策略。現在,讓我們將這些理論轉化為在日常開發中可以遵循的最佳實踐。這些準則將幫助你打造出更穩定、更高效、也更具成本效益的 AI 應用:

  • 從最簡單可行的方法開始 (Start Simple):在投入複雜的架構之前,先從一個基礎的 RAG 流程開始。先確保基礎設施可靠運作,再逐步引入更高級的技術。
  • 追求高信噪比 (High Signal-to-Noise Ratio):在將任何資訊放入上下文之前,都應審慎評估其必要性。你的目標永遠是建構一個精簡但資訊豐富 (smallest set of high-signal tokens) 的上下文。
  • 善用結構化標記 (Use Structured Markup):使用像 XML 標籤或 Markdown 標頭來組織上下文,可以幫助模型更準確地分配注意力。
  • 設計原子化、單純的工具:確保每個工具的功能單一、清晰。如果兩個工具功能重疊,模型就容易在選擇上產生混淆,污染上下文。

RAG 在 Context Engineering 中扮演的重要角色

在我們探討的四大策略中,一個核心模式反覆出現:RAG (Retrieval-Augmented Generation) 正是實踐高效 Context Engineering 的關鍵引擎

我們所討論的許多場景,例如從海量文件中提取知識、從眾多工具中挑選合適的選項,本質上都是 RAG 技術最擅長發揮的舞台。大型語言模型 (LLM) 的核心使用場景是處理自然語言,而 RAG 的核心優勢,正是利用自然語言的語意理解能力,從龐大的資料庫中進行精準檢索。這兩者形成了完美的互補。

RAG 的價值不僅在於提升準確性,更在於大幅優化成本與效率。與其將成千上萬個 tokens 組成的龐大文件或對話歷史,直接拋給模型進行昂貴的推理,不如先透過 RAG 進行一次低成本、高效率的檢索。RAG 就像一個智慧的前處理層,它將「大海撈針」的繁重工作從昂貴的 LLM 身上卸下,只將最關鍵的幾根「針」遞交給它。這不僅能幫助我們顯著減少向 LLM 發出的昂貴請求,更能確保模型收到的上下文是乾淨、相關且高信噪比的。

可以說,Context Engineering 提出了「問題」,而 RAG 提供了核心、系統化的「答案」

  • 當我們需要從外部知識庫中「選取」最相關的資訊時,我們談論的是 RAG
  • 當我們將 Agent 的思考和發現「寫入」長期記憶,以供未來檢索時,我們正在為 RAG 建立一個動態的知識源。
  • 當我們對檢索出的多份文件進行摘要「壓縮」時,我們在實踐 Advanced RAG
  • 當我們將檢索流程「隔離」到一個專門的代理中時,我們在建構 Agentic RAG

結論

我們從 Prompt Engineering 的戰術性技巧出發,逐步意識到,建構下一代 AI 應用的真正戰場,在於對 Context 的戰略性管理。一個管理不善的上下文,會讓最頂尖的模型也陷入混亂、遺忘和幻覺的泥潭;而一個經過精心設計的上下文,則能讓模型發揮出其全部潛力。

我們學習了四大核心策略——寫入、選取、壓縮、隔離——它們共同構成了一個完整的上下文管理工具箱。更重要的是,我們反覆看到,這些策略都以不同的方式指向同一個強大的解決方案。

至此,我們面臨一個清晰的困境:我們擁有海量的潛在有用資訊,但我們無法透過「暴力破解」的方式將其全部塞給模型。這樣做只會引發上下文腐爛、混淆、干擾與高昂的成本。

這個困境,恰恰凸顯了 RAG (Retrieval-Augmented Generation) 技術的核心價值。

RAG 的出現,正是為了解決這個「如何從龐大知識庫中,精準、即時地提供小而美的上下文」的問題。它代表了一種根本性的思維轉變:從試圖建立一個「更大」的上下文,轉向建立一個「更智慧」的上下文供給機制。

與其說 RAG 是一種特定的技術,不如說它是一種哲學:不要把整個圖書館都搬給模型,而是派一位專業的圖書管理員,在模型需要的時候,精準地找到並遞上最相關的那一頁


References:


上一篇
【Day 25】從可觀測性到持續優化:深入 LLM Evaluation 的藝術與實踐
系列文
初探 LLM 可觀測性:打造可持續擴展的 AI 系統26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言