上下文工程探秘:超越提示詞,AI產(chǎn)品經(jīng)理必須掌握的核心技能

0 評(píng)論 1567 瀏覽 25 收藏 19 分鐘

本文將深入探討為什么上下文工程是構(gòu)建可靠AI產(chǎn)品的核心,并系統(tǒng)性地介紹其兩大基礎(chǔ)原則與四大實(shí)現(xiàn)策略。無論您是產(chǎn)品經(jīng)理、工程師還是AI愛好者,理解這些概念都將幫助您構(gòu)建出更強(qiáng)大、更可靠的AI智能體?,F(xiàn)在,讓我們首先來探究,為何對(duì)上下文的管理如此至關(guān)重要。

從“提示詞工程”到“上下文工程”的進(jìn)化

在過去幾年里,我們見證了“提示詞工程”(Prompt Engineering)從一個(gè)專業(yè)術(shù)語迅速演變?yōu)锳I從業(yè)者的基本功。我們學(xué)會(huì)了如何通過精心設(shè)計(jì)的指令與大語言模型(LLM)高效對(duì)話。然而,當(dāng)我們著手構(gòu)建能夠長(zhǎng)時(shí)間運(yùn)行、處理復(fù)雜任務(wù)的AI智能體(Agent)時(shí),僅僅優(yōu)化單次提示是遠(yuǎn)遠(yuǎn)不夠的。一個(gè)更深層次、更系統(tǒng)化的挑戰(zhàn)浮出水面——“上下文工程”(Context Engineering)

為了直觀地理解這個(gè)概念,我們可以借鑒著名AI學(xué)者Andrej Karpathy提出的一個(gè)精妙類比:

將大語言模型(LLM)視為一個(gè)全新的操作系統(tǒng)。在這個(gè)系統(tǒng)中,LLM本身是CPU,負(fù)責(zé)計(jì)算和推理;而模型的“上下文窗口”(Context Window)則扮演著RAM(工作內(nèi)存)的角色。它決定了模型在執(zhí)行任務(wù)的每一步中,能夠看到哪些“恰到好處”的信息。

為什么說上下文工程是構(gòu)建AI智能體的第一要?jiǎng)?wù)?

在構(gòu)建需要長(zhǎng)時(shí)間運(yùn)行并保持連貫性的AI智能體時(shí),可靠性是首要挑戰(zhàn)。智能體在多輪對(duì)話、工具調(diào)用和任務(wù)分解的過程中,任何微小的偏差都可能被放大,最終導(dǎo)致任務(wù)失敗。正如AI新銳公司Cognition所強(qiáng)調(diào)的,對(duì)于構(gòu)建AI智能體的工程師而言,“上下文工程”實(shí)際上是他們的頭等大事。

其核心原因在于,不受控的“長(zhǎng)上下文”會(huì)帶來幾大大嚴(yán)峻挑戰(zhàn):

1)超出上下文窗口限制

這構(gòu)成了最基本的物理瓶頸。每個(gè)模型都有其token數(shù)量上限(例如200K tokens)。當(dāng)對(duì)話歷史、工具調(diào)用反饋和中間思考過程不斷累積,很容易就會(huì)超出這個(gè)限制,導(dǎo)致關(guān)鍵信息的丟失。

2)成本與延遲激增

API調(diào)用的成本與輸入的token數(shù)量直接掛鉤。上下文越長(zhǎng),單次調(diào)用的費(fèi)用就越高,同時(shí)模型的響應(yīng)時(shí)間也會(huì)顯著增加。對(duì)于生產(chǎn)環(huán)境的應(yīng)用而言,這直接影響了產(chǎn)品的經(jīng)濟(jì)效益和用戶體驗(yàn)。

3)模型性能下降

更令人擔(dān)憂的是,過長(zhǎng)的上下文不僅是資源問題,更會(huì)直接損害模型的性能。正如研究者Drew Breunig所總結(jié)的,長(zhǎng)上下文會(huì)導(dǎo)致四種具體的性能退化問題:

  • 上下文中毒(ContextPoisoning):當(dāng)模型在前一步產(chǎn)生的幻覺(錯(cuò)誤信息)被保留在上下文中,它會(huì)像毒藥一樣污染后續(xù)的推理過程,導(dǎo)致錯(cuò)誤被不斷放大。對(duì)產(chǎn)品而言,這意味著一個(gè)在任務(wù)初期表現(xiàn)良好的智能體,可能會(huì)在后期突然“變傻”,給出完全錯(cuò)誤的結(jié)論,嚴(yán)重?fù)p害用戶信任。
  • 上下文分心(ContextDistraction):當(dāng)上下文中充斥著大量信息時(shí),這些信息可能會(huì)“淹沒”模型在原始訓(xùn)練數(shù)據(jù)中學(xué)到的知識(shí),導(dǎo)致其偏離核心任務(wù),做出不相關(guān)的響應(yīng)。**對(duì)產(chǎn)品而言,這會(huì)導(dǎo)致智能體“失去焦點(diǎn)”,無法完成需要多步驟的復(fù)雜指令,讓用戶感到沮
  • 上下文混淆(ContextConfusion):當(dāng)上下文中包含與當(dāng)前任務(wù)無關(guān)的、多余的信息時(shí),模型可能會(huì)被這些信息誤導(dǎo),從而影響其最終輸出的準(zhǔn)確性。對(duì)產(chǎn)品而言,這意味著智能體可能被無關(guān)的歷史對(duì)話帶偏,導(dǎo)致輸出結(jié)果不符合用戶當(dāng)前意圖,體驗(yàn)突兀且不可靠。
  • 上下文沖突(ContextClash):當(dāng)上下文的不同部分包含相互矛盾的信息或指令時(shí),模型會(huì)陷入混亂,難以做出一致和可靠的決策。對(duì)產(chǎn)品而言,這會(huì)造成輸出結(jié)果前后矛盾,例如在生成報(bào)告時(shí),前半部分和后半部分的結(jié)論完全相反,使得交付物毫無價(jià)值。

為了克服這些挑戰(zhàn),我們不能簡(jiǎn)單地將所有信息都塞入上下文窗口,而是需要一套系統(tǒng)性的方法論來主動(dòng)管理它。這套方法論建立在兩條基礎(chǔ)原則之上。

兩大基礎(chǔ)原則:構(gòu)建可靠智能體的基石

在深入探討具體的技術(shù)策略之前,我們必須首先理解構(gòu)建智能體背后的底層哲學(xué)思想。

這就像Web開發(fā)的發(fā)展歷程:在原始的HTML/CSS時(shí)代,開發(fā)者們各自摸索。直到2013年Facebook發(fā)布React框架,它不僅提供了一套工具,更帶來了一種關(guān)于“響應(yīng)式”和“模塊化”的設(shè)計(jì)哲學(xué)。這種哲學(xué)思想深刻地影響了整個(gè)行業(yè),并成為了現(xiàn)代Web應(yīng)用開發(fā)的標(biāo)準(zhǔn)。

同樣,在構(gòu)建AI智能體時(shí),遵循正確的原則比盲目堆砌技術(shù)更為重要。Cognition公司通過大量的試錯(cuò),總結(jié)出了兩條構(gòu)建可靠智能體的核心原則:

原則一:共享上下文,且是完整的智能體追蹤記錄 (Share context, and share full agent traces)

僅僅向子任務(wù)傳遞一條簡(jiǎn)單的指令或原始任務(wù)目標(biāo)是遠(yuǎn)遠(yuǎn)不夠的。智能體需要了解任務(wù)的全貌以及其他部分已經(jīng)完成的工作。

反面案例:克隆Flappy Bird游戲(詳見最后引用鏈接)

假設(shè)一個(gè)主智能體將任務(wù)分解為:“子任務(wù)1-構(gòu)建一個(gè)帶有綠色管道和碰撞框的移動(dòng)游戲背景”和“子任務(wù)2-構(gòu)建一只可以上下移動(dòng)的小鳥”。如果這兩個(gè)子智能體之間缺乏對(duì)彼此工作進(jìn)度的了解,很可能會(huì)出現(xiàn)災(zāi)難性的結(jié)果:

  • 子智能體1錯(cuò)誤地理解了任務(wù),構(gòu)建了一個(gè)“超級(jí)馬里奧”風(fēng)格的背景。
  • 子智能體2構(gòu)建了一只小鳥,但其畫風(fēng)和運(yùn)動(dòng)方式與FlappyBird毫不相干。

最終,主智能體得到的是兩個(gè)風(fēng)格迥異、無法整合的半成品。失敗的根源在于,子智能體們沒有共享一個(gè)完整的、持續(xù)更新的上下文。

原則二:行動(dòng)承載隱性決策,沖突的決策導(dǎo)致糟糕的結(jié)果 (Actions carry implicit decisions, and conflicting decisions carry bad results)

智能體的每一步操作(action),無論是調(diào)用工具還是生成代碼,都基于某些并未明確說明的假設(shè)或決策。

繼續(xù)以Flappy Bird為例

即使兩個(gè)子智能體都清楚最終目標(biāo)是“克隆Flappy Bird”,但由于它們看不到對(duì)方的具體行動(dòng),各自做出的隱性決策很可能會(huì)發(fā)生沖突。例如,一個(gè)子智能體可能決定采用像素藝術(shù)風(fēng)格,而另一個(gè)則可能選擇了卡通渲染風(fēng)格。這些未經(jīng)協(xié)調(diào)的決策,最終會(huì)導(dǎo)致產(chǎn)品的不一致和低劣。

正是因?yàn)楫?dāng)前流行的多智能體(Multi-Agent)架構(gòu)從根本上就難以遵循上述兩條原則,所以它們的表現(xiàn)才往往很脆弱。在這些架構(gòu)中,“決策權(quán)過于分散,上下文無法在智能體之間被徹底共享”,從而極易產(chǎn)生沖突的隱性決策。正如Cognition所觀察到的,目前的多智能體協(xié)作系統(tǒng)可靠性并不高。

遵循這兩大原則,我們才能在堅(jiān)實(shí)的地基上,探索一系列具體的工程策略來管理我們寶貴的“工作內(nèi)存”。

上下文工程的四項(xiàng)核心策略

為了系統(tǒng)性地管理上下文,我們可以將主流的工程實(shí)踐歸納為四大核心策略:寫入(Write)、選擇(Select)、壓縮(Compress)和隔離(Isolate)。這些策略共同構(gòu)成了一個(gè)強(qiáng)大的工具箱,為工程師提供了精細(xì)化管理“RAM”的手段。

策略一:寫入 (Write) – 將上下文保存到窗口之外

如果把上下文窗口比作電腦的RAM(內(nèi)存),那么當(dāng)RAM即將占滿時(shí),最基本的操作就是將暫時(shí)不用的數(shù)據(jù)轉(zhuǎn)存到“硬盤”上?!皩懭搿辈呗哉茿I智能體中與此概念等價(jià)的操作,它將信息移出活躍的上下文窗口,以備后續(xù)檢索。

定義: 將信息從即時(shí)的上下文窗口中持久化保存到外部存儲(chǔ),以備后續(xù)任務(wù)或跨會(huì)話使用。

技術(shù)方法:

  • 暫存區(qū)(Scratchpads):就像人類在解決復(fù)雜問題時(shí)使用的“草稿紙”。它用于在單個(gè)任務(wù)會(huì)話中持久化關(guān)鍵信息。例如,智能體可以將深思熟慮后制定的詳細(xì)計(jì)劃保存到暫存區(qū),以確保在后續(xù)步驟中不會(huì)遺忘或偏離。
  • 記憶(Memories):這是一種跨會(huì)話的長(zhǎng)期信息存儲(chǔ)機(jī)制。通過持續(xù)學(xué)習(xí)用戶與智能體的交互,系統(tǒng)可以自動(dòng)生成并更新長(zhǎng)期記憶,從而在未來的對(duì)話中提供更具個(gè)性化和延續(xù)性的體驗(yàn)。

案例: 在Anthropic的多智能體研究員項(xiàng)目中,主智能體首先會(huì)將研究計(jì)劃寫入Memory,以防止因上下文窗口超限而被截?cái)?。我們熟知的ChatGPT、Cursor等產(chǎn)品,也都內(nèi)置了類似的長(zhǎng)期記憶機(jī)制,能夠記住用戶的偏好和歷史對(duì)話中的關(guān)鍵信息。

策略二:選擇 (Select) – 將相關(guān)上下文拉入窗口之內(nèi)

電腦不會(huì)一次性將整個(gè)硬盤的數(shù)據(jù)都加載到RAM中,而是選擇性地讀取當(dāng)前任務(wù)所需的文件。同樣地,“選擇”策略的核心在于智能地從外部存儲(chǔ)中,將最相關(guān)的信息拉回智能體的“工作內(nèi)存”中。

定義: 在需要時(shí),精準(zhǔn)地從外部存儲(chǔ)(如暫存區(qū)或記憶庫)中提取與當(dāng)前步驟最相關(guān)的信息,并加載到上下文窗口中。

技術(shù)方法:

  • 從記憶中選擇:這包括選擇用于指導(dǎo)行為的“程序性記憶”(例如,ClaudeCode會(huì)讀取一個(gè)名為CLAUDE.md的文件作為固定指令),或用于提供事實(shí)依據(jù)的“語義記憶”。
  • 工具選擇(ToolSelection):當(dāng)智能體可用的工具庫非常龐大時(shí),將所有工具的描述都放入上下文會(huì)造成混淆。此時(shí)可以利用RAG(檢索增強(qiáng)生成)技術(shù),根據(jù)當(dāng)前任務(wù)動(dòng)態(tài)檢索并只提供最相關(guān)的幾個(gè)工具描述。
  • 知識(shí)選擇(KnowledgeSelection):在處理大型代碼庫等復(fù)雜場(chǎng)景時(shí),簡(jiǎn)單的嵌入搜索往往不夠可靠。Windsurf的經(jīng)驗(yàn)表明,需要結(jié)合傳統(tǒng)的grep文件搜索、知識(shí)圖譜和重排序等多種技術(shù),才能實(shí)現(xiàn)穩(wěn)定、精準(zhǔn)的上下文檢索。

案例: 技術(shù)博主Simon Willison分享過一個(gè)生動(dòng)的失敗案例:他要求ChatGPT生成一張圖片,但模型錯(cuò)誤地從記憶中選擇了他的地理位置信息,并將其強(qiáng)行注入到圖片生成請(qǐng)求中。這說明了精準(zhǔn)選擇的挑戰(zhàn)性,錯(cuò)誤的“選擇”甚至可能讓用戶覺得“上下文窗口不再屬于自己了”。

策略三:壓縮 (Compress) – 提煉關(guān)鍵信息,減少Token占用

在將文件加載到RAM之前,我們常常會(huì)先將其“壓縮”(例如使用zip),以節(jié)省寶貴的內(nèi)存空間。“壓縮”策略在上下文工程中扮演著類似的角色,旨在減少token占用,同時(shí)保留核心信息。

定義: 在保留完成任務(wù)所需核心信息的前提下,通過總結(jié)或修剪的方式,盡可能地減少上下文的token數(shù)量。

技術(shù)方法:

  • 上下文總結(jié)(ContextSummarization):這是一種語義層面的壓縮。它利用LLM自身的能力,對(duì)冗長(zhǎng)的對(duì)話歷史或信息密集的工具輸出進(jìn)行提煉和總結(jié),生成一個(gè)更精簡(jiǎn)的版本。
  • 上下文修剪(ContextTrimming):這是一種更偏向于句法或規(guī)則層面的削減。它是一種硬編碼的啟發(fā)式方法,例如當(dāng)消息列表過長(zhǎng)時(shí),簡(jiǎn)單粗暴地“修剪”掉最早的幾條消息。

案例: 著名的編程智能體Claude Code就應(yīng)用了這一策略。當(dāng)上下文窗口的使用率超過95%時(shí),它會(huì)自動(dòng)觸發(fā)一個(gè)名為“auto-compact”的進(jìn)程,總結(jié)整個(gè)交互軌跡,釋放空間。此外,Cognition也提到,他們會(huì)使用一個(gè)經(jīng)過微調(diào)的模型,在不同智能體之間進(jìn)行信息交接時(shí),對(duì)上下文進(jìn)行總結(jié),以降低通信成本。

策略四:隔離 (Isolate) – 分割上下文以管理復(fù)雜性

現(xiàn)代操作系統(tǒng)允許我們同時(shí)運(yùn)行多個(gè)應(yīng)用程序,每個(gè)程序都在自己受保護(hù)的獨(dú)立內(nèi)存空間中運(yùn)行,互不干擾?!案綦x”策略采用了相同的思想,通過創(chuàng)建獨(dú)立的、受保護(hù)的上下文“容器”,來降低認(rèn)知負(fù)擔(dān)并防止干擾。

定義: 通過創(chuàng)建獨(dú)立的、受保護(hù)的上下文“容器”來降低認(rèn)知負(fù)擔(dān)并防止干擾。

技術(shù)方法:

  • 多智能體(Multi-agent):這是最流行的隔離方法之一。每個(gè)子智能體擁有自己獨(dú)立的上下文窗口、專屬工具和指令集,專注于解決一個(gè)更窄的子任務(wù)。
  • 環(huán)境隔離(Sandboxing):通過代碼沙箱來隔離上下文。例如,HuggingFace的CodeAgent輸出的代碼在沙箱中執(zhí)行。只有特定的結(jié)果(如返回值)會(huì)被傳回給LLM,而像圖片這類token密集型對(duì)象,可以作為變量保留在沙箱狀態(tài)中,從而避免占用寶貴的上下文窗口空間。

案例: Anthropic的多智能體研究員項(xiàng)目再次證明了隔離策略的有效性。多個(gè)擁有隔離上下文的子智能體并行工作,各自深入研究問題的不同方面,其最終表現(xiàn)顯著優(yōu)于單個(gè)智能體處理整個(gè)復(fù)雜任務(wù)。

這四項(xiàng)策略為我們構(gòu)建高級(jí)AI智能體提供了堅(jiān)實(shí)的工程基礎(chǔ),指明了通往更可靠、更高效系統(tǒng)的路徑。

總結(jié):AI產(chǎn)品經(jīng)理的新戰(zhàn)場(chǎng)

通過本文的探討,我們系統(tǒng)性地了解了上下文工程,它為所有AI產(chǎn)品領(lǐng)導(dǎo)者提供了一個(gè)強(qiáng)大的工具箱。這些策略直接對(duì)應(yīng)著產(chǎn)品的核心價(jià)值:

  • 壓縮(Compress)直接解決API成本和延遲問題,關(guān)乎產(chǎn)品的經(jīng)濟(jì)可行性。
  • 寫入(Write)選擇(Select)是實(shí)現(xiàn)長(zhǎng)期記憶和個(gè)性化的基石,能有效提升用戶留存。
  • 隔離(Isolate)是在不犧牲可靠性的前提下,構(gòu)建可擴(kuò)展、多功能智能體的關(guān)鍵。

理解和應(yīng)用上下文工程,已不再僅僅是工程師的職責(zé)。

對(duì)于AI產(chǎn)品經(jīng)理而言,這些概念直接關(guān)系到產(chǎn)品的核心體驗(yàn):可靠性、成本效益和可擴(kuò)展性。我們必須開始將這些工程思想融入產(chǎn)品設(shè)計(jì)和規(guī)劃之中,思考如何通過巧妙的上下文管理,提升用戶與AI協(xié)作的流暢度和成功率。

隨著我們從簡(jiǎn)單的聊天機(jī)器人,邁向能夠獨(dú)立完成復(fù)雜任務(wù)的AI智能體時(shí)代,對(duì)上下文的精細(xì)化管理將成為區(qū)分優(yōu)秀AI產(chǎn)品與平庸AI產(chǎn)品的關(guān)鍵戰(zhàn)場(chǎng)。希望本文介紹的原則和策略能為您帶來啟發(fā),助您在未來的工作中,打造出真正智能、可靠的新一代AI產(chǎn)品。

【參考來源】

  1. https://blog.langchain.com/context-engineering-for-agents/
  2. https://cognition.ai/blog/dont-build-multi-agents

本文由 @Tracy 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載

題圖由豆包AI生成

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒評(píng)論,等你發(fā)揮!