機(jī)器之心報道
編輯:+0
最近「上下文工程」有多火?Andrej Karpathy 為其打 Call,Phil Schmid 介紹上下文工程的文章成為 Hacker News 榜首,還登上了知乎熱搜榜。
之前我們介紹了上下文工程的基本概念,今天我們來聊聊實(shí)操。
為什么關(guān)注「上下文工程」
我們很容易將 LLM 擬人化——把它們當(dāng)作能夠「思考」、「理解」或「感到困惑」的超級助手。從工程學(xué)的角度來看,這是一個根本性的錯誤。LLM 并不具備信念或意圖,它是一個智能的文本生成器。
更準(zhǔn)確的看法是:LLM 是一個通用的、不確定的函數(shù)。這個函數(shù)的工作方式是:你給它一段文本(上下文),它會生成一段新的文本(輸出)。
- 通用:意味著它能處理各種任務(wù)(如翻譯、寫代碼),無需為每個任務(wù)單獨(dú)編程。
- 不確定:意味著同樣的輸入,每次可能得到稍有不同的輸出。這是它的特點(diǎn),不是毛病。
- 無狀態(tài):意味著它沒有記憶。你必須在每次輸入時,提供所有相關(guān)的背景信息,它才能「記住」對話。
這個視角至關(guān)重要,因?yàn)樗鞔_了我們的工作重心:我們無法改變模型本身,但可以完全控制輸入。所有優(yōu)化的關(guān)鍵,在于如何構(gòu)建最有效的輸入文本(即上下文),來引導(dǎo)模型生成我們期望的輸出。
「提示詞工程」一度很火,但它過于強(qiáng)調(diào)尋找一句完美的「魔法咒語」。這種方法在真實(shí)應(yīng)用中并不可靠,因?yàn)椤钢湔Z」可能因模型更新而失效,且實(shí)際輸入遠(yuǎn)比單句指令復(fù)雜。
一個更精準(zhǔn)、更系統(tǒng)的概念是「上下文工程」。
兩者的核心區(qū)別在于:
- 提示詞工程:核心是手動構(gòu)思一小段神奇的指令,如同念咒。
- 上下文工程:核心是構(gòu)建一個自動化系統(tǒng),像設(shè)計一條「信息流水線」。該系統(tǒng)負(fù)責(zé)從數(shù)據(jù)庫、文檔等來源自動抓取、整合信息,并將其打包成完整的上下文,再喂給模型。
正如 Andrej Karpathy 所說,LLM 是一種新型的操作系統(tǒng)。我們的任務(wù)不是給它下達(dá)零散的命令,而是為它準(zhǔn)備好運(yùn)行所需的所有數(shù)據(jù)和環(huán)境。
上下文工程的核心要素
簡單說,「上下文工程」就是打造一個「超級輸入」的工具箱。我們聽到的各種時髦技術(shù)(比如 RAG、智能體),都只是這個工具箱里的工具而已。
目標(biāo)只有一個:把最有效的信息,用最合適的格式,在最恰當(dāng)?shù)臅r機(jī),喂給模型。
以下是工具箱里的幾種核心要素:
- 指令:下達(dá)命令這是最基礎(chǔ)的,就是直接告訴模型該做什么。比如命令它「扮演一個專家」,或者給它看幾個例子,讓它照著學(xué)。
- 知識:賦予「記憶」 模型本身沒有記憶,所以我們要幫它記住。在聊天機(jī)器人里,就是把聊天記錄一起發(fā)給它。如果記錄太長,就做個「摘要」或者只保留最近的對話。
- 工具:
- 檢索增強(qiáng)生成 (RAG):給它一本「開卷考試」用的參考書為了防止模型瞎說(產(chǎn)生幻覺),我們可以讓系統(tǒng)先從我們自己的知識庫(比如公司文檔)里查找相關(guān)資料,然后把「參考資料」和問題一起交給模型,讓它根據(jù)事實(shí)來回答。
- 智能體:讓它自己去「查資料」
這是更高級的玩法。我們不再是提前準(zhǔn)備好所有資料,而是讓一個聰明的「智能體」自己判斷需要什么信息,然后主動使用工具(比如上網(wǎng)搜索、查數(shù)據(jù)庫)去尋找答案,最后再匯總起來解決問題。
總而言之,所有這些技術(shù),無論簡單還是復(fù)雜,都是在回答這一個問題:「怎樣才能給模型打造出最完美的輸入內(nèi)容?」
上下文工程的實(shí)踐方法論
使用 LLM 更像做科學(xué)實(shí)驗(yàn),而不是搞藝術(shù)創(chuàng)作。你不能靠猜,必須通過測試來驗(yàn)證。
工程師的核心能力不是寫出花哨的提示,而是懂得如何用一套科學(xué)流程來持續(xù)改進(jìn)系統(tǒng)。這套流程分兩步:
第一步:從后往前規(guī)劃(定目標(biāo) → 拆任務(wù))
從你想要的最終結(jié)果出發(fā),反向推導(dǎo)出系統(tǒng)的樣子。
- 先想好終點(diǎn):明確定義你希望 LLM 輸出的完美答案是什么樣的(內(nèi)容、格式等)。
- 再倒推需要什么原料:要得到這個完美答案,LLM 的輸入(上下文)里必須包含哪些信息?這就定義了你的系統(tǒng)需要準(zhǔn)備的「原料包」。
- 最后設(shè)計「流水線」:規(guī)劃出能夠自動生產(chǎn)這個「原料包」的系統(tǒng)。
第二步:從前往后構(gòu)建(搭積木 → 總裝)
規(guī)劃好后,開始動手搭建。關(guān)鍵是:搭好一塊,測一塊,最后再組裝。
- 先測試「數(shù)據(jù)接口」:確保能穩(wěn)定地獲取原始數(shù)據(jù)。
- 再測試「搜索功能」:單獨(dú)測試檢索模塊,看它找資料找得準(zhǔn)不準(zhǔn)、全不全。
- 然后測試「打包程序」:檢查那個把所有信息(指令、數(shù)據(jù))組裝成最終輸入的程序是否正常工作。
- 最后才進(jìn)行「總裝測試」:當(dāng)所有零件都確認(rèn)無誤后,再連接起來,對整個系統(tǒng)進(jìn)行端到端測試。這時,你可以完全專注于評估 LLM 的輸出質(zhì)量,因?yàn)槟阒浪盏降妮斎肟隙ㄊ钦_的。
核心思想就是:通過這種「先規(guī)劃、后分步搭建和測試」的嚴(yán)謹(jǐn)流程,我們將使用 LLM 從憑感覺的藝術(shù),變成了有章可循的工程科學(xué)。
實(shí)踐
更具體的實(shí)踐方法,大家可以參考 Langchain 最新的博客和視頻,里面詳細(xì)介紹了上下文工程當(dāng)前主流的四大核心方法,并展示了 LangChain 生態(tài)中 LangGraph 和 LangSmith 如何助力開發(fā)者高效實(shí)施上下文工程。
- 博客地址:Context Engineering for Agents
- 視頻地址:Context Engineering for Agents (LangChain)
https://ai.intellectronica.net/context-engineering
https://blog.langchain.com/context-engineering-for-agents/
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.