上下文工程(Context Engineering)

本內容根據李宏毅老師的 YouTube 影片 「【生成式人工智慧與機器學習導論2025】第 2 講:上下文工程— AI Agent 背後的關鍵技術」 製作。

學習卡 (Flashcards)

點擊卡片即可翻面查看答案。

簡單 (10)

什麼是「上下文工程」(Context Engineering)?
一種自動化管理語言模型輸入(上下文)的技術,旨在提供最相關的資訊,讓模型產生更準確的輸出。它專注於修改輸入,而非模型本身。
影片中提到的 RAG 是什麼意思?
RAG (Retrieval-Augmented Generation),意指「檢索增強生成」。它指的是在生成答案前,先從外部資料庫(如網路)搜尋相關資訊,並將這些資訊放入上下文中,以提高答案的準確性。
什麼是 System Prompt (系統提示詞)?
由模型開發者設定的指令,會在每次互動時自動載入。它定義了模型的身份、能力、限制和行為準則。
什麼是「上下文學習」(In-context Learning)?
在提示詞中提供範例,讓模型「學會」如何執行特定任務。這過程不改變模型參數,只是利用模型的文字接龍能力。
對話歷史紀錄在語言模型中扮演什麼角色?
它扮演著「短期記憶」的角色,讓模型能夠理解和回應與之前對話相關的內容,保持對話的連貫性。
AI Agent (AI 代理人) 的核心概念是什麼?
AI Agent 不僅僅是一問一答,它能自主規劃解決問題的步驟,並根據環境回饋靈活調整計畫,以完成更複雜的目標。
上下文(Context)的長度上限稱為什麼?
Context Window Size (上下文視窗大小)。它限制了模型一次能處理的 token 數量。
語言模型如何使用「工具」(Tools)?
透過在上下文中提供工具的使用說明和範例,模型學會生成特定格式的指令文本來「呼叫」工具。
上下文工程的核心目標是什麼?
避免塞爆 Context,想辦法只放需要的東西進入 Context,並清理掉不需要的內容。
影片提到的「電腦使用」(Computer Use) 功能是什麼?
讓語言模型能夠直接操作滑鼠和鍵盤來控制電腦,執行如訂票、搜尋等真人操作的任務。

中等 (10)

上下文工程與提示工程 (Prompt Engineering) 的主要差異是什麼?
提示工程早期更關注特定格式或「神奇咒語」。上下文工程則更宏觀,專注於自動化地、系統性地管理所有輸入資訊(包括歷史、工具、RAG結果等),是AI Agent時代的關鍵技術。
為什麼早期的「神奇咒語」(如 Let's think step by step) 現在效果越來越不顯著?
因為現代語言模型越來越強大,開發者已經將這些最佳實踐內建到模型中。一個好的模型本來就應該要盡全力、有條理地思考,而不需要使用者特別提醒。
解釋「Lost in the middle」現象。
指語言模型在處理長篇上下文時,對開頭和結尾的資訊記憶較深刻,但容易忽略或忘記中間部分的內容,導致效能下降。
上下文工程中的「選擇」(Selection) 策略是什麼?舉一個例子。
指從大量可用資訊中,只挑選與當前任務最相關的內容放入上下文。例如,在 RAG 中,使用 reranking 模型從搜尋到的100篇文章中,挑選最相關的5篇提供給語言模型。
上下文工程中的「壓縮」(Compression) 策略是什麼?為什麼它很重要?
指將冗長的歷史對話或工具使用過程進行摘要,保留關鍵資訊並縮短長度。這對於需要長時間運作的 AI Agent 至關重要,可以防止上下文視窗被瑣碎細節塞爆。
模型呼叫工具的實際流程是怎樣的?模型本身能「執行」工具嗎?
模型本身不能執行工具。流程是:1. 模型生成一段符合預定格式的文字指令。2. 外部程式捕捉這段文字。3. 外部程式真正去執行工具。4. 將工具的執行結果回傳,放入上下文中。5. 模型看到結果後繼續生成。
什麼是「Context Rot」(上下文腐爛)?
指隨著上下文變得越來越長,裡面充滿了過時、無關或瑣碎的資訊,導致模型的處理能力下降,就像資訊在上下文中「腐爛」了一樣。
AI Agent 如何實現「長期記憶」?
並非將所有歷史紀錄都放入上下文。而是將記憶儲存在外部資料庫,當需要時,透過 RAG 的方式檢索相關的記憶片段,再放入當前的上下文中。
模型「深度思考」的過程是怎樣的?使用者看得到嗎?
模型在給出最終答案前,會先在內部生成一個「腦內小劇場」,進行規劃、嘗試不同解法並自我驗證。這個過程產生的文字也會成為其上下文的一部分。使用者通常看不到完整的思考過程,只能看到摘要或最終結果。
為什麼說「能輸入百萬個token,不代表能讀懂百萬個token」?
因為即使上下文長度在模型的視窗大小限制內,過長的輸入仍然會導致「Lost in the middle」和「Context Rot」等問題,模型的效能會顯著下降,無法有效利用所有資訊。

困難 (10)

從上下文工程的角度,解釋「多代理人」(Multi-agent) 系統的優勢。
它是一種分散式管理上下文的策略。每個代理人只處理自己任務相關的上下文,避免單一代理人因處理所有細節而導致上下文過長和腐爛。例如,總召代理人只記錄「餐廳已訂」,而將訂餐過程的繁瑣上下文交給專門的訂餐代理人處理。
影片提到,給模型看過去「答錯的範例」有什麼潛在風險?
可能會產生負面影響。就像對人說「不要想白熊」,反而讓人更容易想到白熊。給模型看錯誤的答案,即使標明是錯的,也可能干擾模型,使其更容易產生類似的錯誤,反而降低準確率。
在一個需要長時間運行的 AI Agent (如寫論文) 中,你會如何結合「選擇」、「壓縮」和「多代理人」這三種策略來管理上下文?
1. **多代理人**: 設立「研究規劃 agent」、「文獻搜尋 agent」和「實驗撰寫 agent」。 2. **選擇**: 文獻搜尋 agent 使用 RAG 找出最相關的論文。 3. **壓縮**: 每個 agent 定期將自己的詳細互動歷史壓縮成簡潔的工作日誌,只保留關鍵結論。 4. 最終,規劃 agent 根據各 agent 的日誌來撰寫最終論文。
史丹佛小鎮的 AI Agent 如何決定要從記憶中提取哪些資訊放入上下文?
它們根據三個分數來排序記憶:1. **新近性(Recency)**:最近發生的事分數更高。 2. **重要性(Importance)**:每條記憶儲存時都會被評估一個重要性分數。 3. **相關性(Relevance)**:與當前情境或問題的相關程度。綜合分數最高的記憶會被選入上下文。
如果一個任務可以一次性給出所有指令,為什麼分步、互動式地給指令(擠牙膏式)可能會讓模型表現更差?
因為互動式的指令會產生冗長的對話歷史,這會增加「上下文腐爛」的風險。模型在長篇對話中可能會迷失最初的目標,或被中間的對話干擾,導致最終表現不如一次性接收完整、清晰指令的情況。
即使有了 RAG,為什麼模型仍然可能產生像「在披薩上加膠水」這樣的錯誤答案?
因為語言模型的核心是「文字接龍」,它並不真正「理解」內容。如果 RAG 檢索到的資料本身是網路上的玩笑或諷刺性內容,模型可能會把它當作事實來學習和引用,導致產生荒謬的答案。
多代理人系統在簡單任務上表現可能不如單一代理人,試分析其原因。
在簡單任務中,上下文很短,不易腐爛。此時,單一代理人掌握所有資訊,沒有溝通成本,決策更直接。而多代理人系統需要額外的溝通和協調成本,且存在資訊不對稱的風險(A不知道B的資訊),反而可能降低效率。
如何設計一個工具檢索系統,以避免在 system prompt 中放入上千個工具的說明?
可以建立一個「工具版的RAG」。將每個工具的說明文件當作一個資料庫。當模型需要執行任務時,先根據任務描述去檢索最相關的幾個工具,然後只將這幾個工具的說明放入上下文中。
為什麼說 AI Agent 更像是語言模型現有能力的「應用」,而非一項「新技術」?
因為 AI Agent 的運作核心並未改變,它始終是在做「文字接龍」。它只是巧妙地將模型的文字接龍能力應用在一個循環中:觀察(Observation) -> 生成行動(Action) -> 新的觀察...。其強大的能力源自於模型本身卓越的語言理解和生成能力,而非全新的技術架構。
遞迴式壓縮 (Recursive Compression) 記憶如何運作,它有什麼優缺點?
運作方式:模型互動一段時間後 (如100回合),將這段歷史壓縮成摘要。接著繼續互動,下一次壓縮會包含「上次的摘要」和「新的互動歷史」。優點:有效控制上下文長度。缺點:越久遠的記憶會被反覆壓縮,細節會逐漸遺失,可能導致「失憶」。

測驗 (Quiz)

選擇您認為最正確的答案,並分別提交各難度的答案。

簡單 (Part 1)

1. 根據影片,當語言模型的輸出不理想時,如果我們選擇修改模型的輸入 (x),這個過程稱為什麼?

2. 影片中用哪個例子來展示「上下文學習 (In-context Learning)」的強大能力?

3. Claude 模型的 System Prompt 中明確指示它,當知識截止日期之後的問題時,應該如何回答?

4. 什麼是 AI Agent 與傳統一問一答模式最主要的區別?

5. 影片中,李老師用哪個 AI Agent 工具來示範製作貪食蛇遊戲?

簡單 (Part 2)

6. 影片提到的 RAG 技術,主要是為了解決語言模型的哪個問題?

7. 為什麼模型需要「長期記憶」功能?

8. 上下文工程的三大基本操作(套路)不包含以下哪一項?

9. 在 Colab 範例中,要讓模型輸出的工具指令(如 `multiply(3,4)`)被真正執行,需要使用哪個 Python 函數?

10. 根據影片,AI Agent 運作的循環是什麼?

中等 (Part 1)

11. 「Lost in the middle」現象說明了什麼?

12. 為什麼在 RAG 的過程中加入「reranking」步驟是有益的?

13. 影片中提到,當 AI Agent 執行「Computer Use」(例如訂票)任務時,會產生大量瑣碎的互動紀錄。這時最適合使用哪種上下文工程策略來處理?

14. 根據影片中的實驗,當 RAG 提供的參考資料過多時,模型的表現會如何變化?

15. 多代理人系統如何幫助解決「Context Rot」(上下文腐爛) 的問題?

中等 (Part 2)

16. 在 Colab 範例中,如果沒有寫一個迴圈來捕捉模型生成的工具指令並實際執行它,會發生什麼事?

17. 影片中提到,一個好的 System Prompt 會包含哪些內容?

18. 為什麼說 ChatGPT 的「代理人模式」相對安全,而 Gemini CLI 相對危險?

19. 根據影片,模型「深度思考」時產生的「腦內小劇場」,對它最終的回答有什麼作用?

20. 「擠牙膏」式地給予指令,為什麼可能導致模型表現變差?

困難 (Part 1)

21. 即使一個模型的 Context Window 達到200萬個 token,為什麼在處理僅1萬個 token 的任務時就可能出錯?

22. 假設你要設計一個 AI Agent 來擔任專案經理,它需要追蹤多個子任務的進度。你會選擇單一 Agent 還是多 Agent 架構?為什麼?

23. 影片中的研究指出,給模型看過去的「正面範例」(答對的題目)比看「負面範例」(答錯的題目)效果更好。這對設計 AI Agent 的學習機制有何啟示?

24. 結合「遞迴式壓縮」和「長期記憶RAG」,你如何設計一個能平衡記憶細節和上下文長度的 AI Agent?

25. 為什麼即使在簡單任務上,多代理人系統的表現也可能不如單一代理人?

困難 (Part 2)

26. 語言模型在執行 Computer Use 時,是如何理解螢幕畫面的?

27. 如果一個 AI Agent 在執行任務時,其上下文視窗已滿,最不建議的做法是什麼?

28. 為什麼說上下文工程是一種「人機協同」的過程?

29. 假設一個語言模型在 RAG 任務中,即使正確答案在提供的文件中,它仍然回答錯誤。根據「Lost in the middle」理論,最可能的原因是什麼?

30. 在多代理人寫 overview paper 的例子中,每個只讀一篇論文的 agent 之間需要直接溝通嗎?這體現了什麼優勢?