提示詞工程、RAG之后,LangChain:上下文工程開始火了!
AI 時代,你可能聽說過提示詞工程、RAG、記憶等術語。但是很少有人提及上下文工程(context engineering)。
其實,這一術語并不新鮮,近兩年很多智能體構(gòu)建者一直在關注這個事情。至于重要性,下面這張圖很好地概括了上下文工程與提示詞工程、RAG 等的關系。
在傳統(tǒng)的提示工程中,開發(fā)者通常側(cè)重于精心設計提示語,以期得到更好的答案。然而,隨著應用的復雜度不斷增加,逐漸顯現(xiàn)出單純依賴提示已無法滿足現(xiàn)代智能體的需求。如今,提供完整且結(jié)構(gòu)化的上下文信息比任何巧妙的提示詞更為重要。
上下文工程就是為此誕生的。
上下文工程是構(gòu)建動態(tài)系統(tǒng),以正確的格式提供合適的信息和工具,從而使得 LLM 能夠合理地完成任務。
大多數(shù)時候,當一個智能體沒有很好地執(zhí)行任務時,根本原因是沒有向模型傳達適當?shù)纳舷挛?、指令和工具。LLM 應用正在從單一的提示演變?yōu)楦鼜碗s、動態(tài)的智能系統(tǒng)。
因此,上下文工程正在成為 AI 工程師可以發(fā)展的最重要技能。
什么是上下文工程?
上下文工程是指構(gòu)建動態(tài)系統(tǒng),以合適的格式提供準確的信息和工具,使 LLM 能夠合理完成任務。
上下文工程是一個系統(tǒng)。復雜的智能體可能需要從多個來源獲取上下文。這些上下文可能來自應用開發(fā)者、用戶、先前的交互記錄、工具調(diào)用結(jié)果或其他外部數(shù)據(jù)。將這些內(nèi)容整合起來需要一個復雜的系統(tǒng)。
上下文工程是動態(tài)的。許多上下文信息是動態(tài)生成的。因此,構(gòu)建最終提示的邏輯也必須是動態(tài)的,而不僅僅是一個靜態(tài)模板。
必須提供準確的信息。智能體系統(tǒng)表現(xiàn)不佳的常見原因往往是缺乏正確的上下文。LLM 無法「讀心」—— 因而你必須為它們提供準確的信息。輸入的是垃圾,輸出的也只會是垃圾。
需要提供合適的工具。并不是在所有情況下,LLM 僅憑輸入就能夠解決任務。在這些情況下,如果你希望賦能 LLM 來完成任務,你需要確保它擁有合適的工具。這些工具可以是用來查找更多信息、采取行動,或者介于兩者之間的任何東西。為 LLM 提供合適的工具和提供正確的信息一樣重要。
格式很重要。就像與人類溝通一樣,如何與 LLM 溝通也很重要。在確保 LLM 能夠使用這些工具時,工具的輸入?yún)?shù)非常重要。
為什么上下文工程很重要
當智能體系統(tǒng)出錯時,通常是因為 LLM 出錯。從第一性原理思考,LLM 出錯有兩個原因:
- 底層模型本身出錯,模型的能力不夠;
- 底層模型沒有傳遞適當?shù)纳舷挛囊陨烧_的輸出。
隨著技術的不斷優(yōu)化,更多情況下(尤其是當模型變得更強大時)模型的錯誤是由第二個原因造成的。傳遞給模型的上下文可能由于以下幾種原因?qū)е滦阅芟陆担?/p>
- 缺少上下文,模型做出正確決策所需的上下文沒有被傳遞。模型不是心靈感應的,如果沒有給它正確的上下文,它就無法知道該信息的存在。
- 上下文格式不當。就像與人類溝通一樣,溝通方式非常重要!當你將數(shù)據(jù)傳遞給模型時,數(shù)據(jù)的格式絕對會影響模型的響應。
上下文工程與提示工程有何不同?
為什么要從提示工程到上下文工程轉(zhuǎn)變?早期,開發(fā)者專注于巧妙地給出提示以引導模型給出更好的答案。但隨著應用變得更加復雜,現(xiàn)在越來越明顯的是,提供完整且結(jié)構(gòu)化的上下文比任何巧妙的措辭更為重要。
我們可以將提示工程視為上下文工程的一個子集。即使你擁有所有的上下文,如何在提示中組裝它仍然至關重要。區(qū)別在于,你不僅僅是在設計一個與單一輸入數(shù)據(jù)有效的提示,而是要處理一組動態(tài)數(shù)據(jù)并將其正確格式化。
上下文的一個關鍵部分通常是關于 LLM 應該如何表現(xiàn)的核心指令。這通常也是提示工程的一個重要部分。
好的上下文工程應該包括:
- 工具使用:當一個智能體訪問外部信息時,需要擁有能夠訪問這些信息的工具。當工具返回信息時,需要以 LLM 最容易理解的方式對其進行格式化。
- 短期記憶:如果對話持續(xù)一段時間,可以創(chuàng)建對話摘要,并在未來使用該摘要。
- 長期記憶:如果用戶在之前的對話中表達了偏好,需要獲取這些信息。
- 提示工程:在提示中清楚地列舉智能體應該如何操作的說明。
- 檢索:動態(tài)地獲取信息,并在調(diào)用 LLM 之前將其插入到提示中。
原文鏈接:https://blog.langchain.com/the-rise-of-context-engineering/