Injob in產(chǎn)品實(shí)踐:Agent 效果差?先別怪模型——可能是你的“上下文”被污染了

0 評(píng)論 420 瀏覽 0 收藏 7 分鐘

在構(gòu)建智能Agent時(shí),很多團(tuán)隊(duì)常常將回答不準(zhǔn)確、信息混亂等問題歸咎于模型能力不足。然而,真正的根源可能在于上下文管理不善。

很多團(tuán)隊(duì)在做Agent的時(shí)候,可能會(huì)出現(xiàn)回答飄、信息混亂、工具頻繁誤調(diào)用——體驗(yàn)爛,效果差。通常簡(jiǎn)單把問題歸咎于模型能力或參數(shù)不夠。

但可能過錯(cuò)怪了模型。真正的元問題往往在于上下文管理。當(dāng)信息在長(zhǎng)任務(wù)中被錯(cuò)誤地、冗余地或混亂地寫入模型窗口,哪怕最強(qiáng)的模型也會(huì)表現(xiàn)糟糕。

下面用「 Injob AI 寫簡(jiǎn)歷」這個(gè)實(shí)踐,從問題、成因、案例到可落地的工程策略,給出一套系統(tǒng)化的策略方案。

什么是“上下文”?為什么它會(huì)決定 Agent 的表現(xiàn)

上下文 = 模型在一次調(diào)用中能“看到”的所有 token(包括歷史對(duì)話、狀態(tài)、工具返回等)。當(dāng)這些信息被“污染”、“過載”或“混淆”時(shí),Agent 的判斷、檢索和工具調(diào)用都會(huì)失準(zhǔn)。

在長(zhǎng)任務(wù)執(zhí)行中,常見的三大核心挑戰(zhàn):

1、上下文污染:不相干或錯(cuò)誤信息混入當(dāng)前會(huì)話/狀態(tài),導(dǎo)致后續(xù)生成被“臟數(shù)據(jù)”污染。

以簡(jiǎn)歷為例:用戶上傳了三個(gè)歷史版本的簡(jiǎn)歷和多個(gè)崗位信息,Agent/大模型 在重寫“項(xiàng)目經(jīng)歷”時(shí)把不同版本的描述混合,出現(xiàn)自相矛盾或夸大事實(shí)的條目。

2、上下文過載:對(duì)話/文檔極長(zhǎng)(如 >10萬 token)時(shí),模型性能驟降,重要信息被“稀釋”或丟失。

以簡(jiǎn)歷為例:長(zhǎng)期與用戶交互記錄、歷史面試反饋、職位 JD、行業(yè)模板全部堆在一起,模型無法穩(wěn)定找到“當(dāng)前目標(biāo)職位的關(guān)鍵約束”,導(dǎo)致簡(jiǎn)歷不能準(zhǔn)確對(duì)齊 JD。

3、工具混淆:當(dāng)系統(tǒng)可用工具很多(例如幾十個(gè)以上)且沒有嚴(yán)格的工具注冊(cè)與選擇機(jī)制時(shí),工具調(diào)用的準(zhǔn)確率和效率會(huì)顯著下滑。

可落地的四個(gè)策略(Write / Select / Compress / Isolate)

1)寫入策略(Write)——把“重要的中間結(jié)果”保存到對(duì)的地方

目標(biāo):避免把所有中間產(chǎn)物一股腦塞進(jìn)主對(duì)話窗口。

實(shí)踐要點(diǎn):

  • 動(dòng)態(tài)加載:為每條長(zhǎng)任務(wù)維護(hù)獨(dú)立的草稿文檔,關(guān)鍵狀態(tài)寫入短期記憶中,而不是混合在上下文。在Injob實(shí)踐中,每次簡(jiǎn)歷生成獨(dú)立draft(id+meta),每次對(duì)話時(shí)主動(dòng)更新,保證agent知道當(dāng)前最新的簡(jiǎn)歷是什么。
  • Checkpoint:階段性把穩(wěn)定結(jié)果寫成checkpoint(例如JSON+元數(shù)據(jù)),并只把checkpoint的摘要放入主上下文。

2)選擇策略(Select)——只裝載最關(guān)鍵的信息

目標(biāo):突破“全量加載”的思維,用檢索/重排把關(guān)鍵信息動(dòng)態(tài)裝入模型窗口。

實(shí)踐要點(diǎn):

  • 重要性評(píng)分:為歷史片段計(jì)算importance=f(recency,mention_count,task_relevance),只保留top-K。
  • 分層檢索:先用向量檢索拿到候選,再用輕量語(yǔ)義打分器重排(Reranker)。
  • 時(shí)間與角色加權(quán):越新的信息權(quán)重越高。

3)壓縮策略(Compress)——在失效前把歷史“摘要化”

目標(biāo):當(dāng)上下文占用逼近窗口上限時(shí),自動(dòng)壓縮、丟地部分舊歷史,保持信息密度。

實(shí)踐要點(diǎn):

  • 觸發(fā)閾值:例如當(dāng)token使用率接近窗口的90–95%時(shí)觸發(fā)壓縮(可配參數(shù)化)。
  • 多層摘要:先做抽取式保真摘要(保留關(guān)鍵片段),再做生成式壓縮(把同類歷史合并成一段精簡(jiǎn)描述)。
  • 可驗(yàn)證壓縮:保留原段落指針和“恢復(fù)索引”,以便必要時(shí)回溯并展開(tradeoff的可控性)。

InjobAI寫簡(jiǎn)歷中:用戶 20 次迭代后會(huì)話超長(zhǎng),系統(tǒng)把前 10 次迭代壓縮成“摘要 + 關(guān)鍵信念列表”,適當(dāng)丟棄部分不重要信息。

4)隔離策略(Isolate)——架構(gòu)層面的“沙箱化”與工具治理

目標(biāo):用架構(gòu)把不同職責(zé)分開、把工具能力明確定界,防止交叉污染與誤調(diào)用。

Injob AI實(shí)踐要點(diǎn):

三元架構(gòu):對(duì)話(Conversation)— 計(jì)劃(Plan)— 執(zhí)行(Execute)

  • 多Agent沙箱(多進(jìn)程/多服務(wù)):每個(gè)子任務(wù)(規(guī)劃、執(zhí)行、驗(yàn)證)運(yùn)行在獨(dú)立運(yùn)作的agent,只通過結(jié)構(gòu)化事件總線交換必要數(shù)據(jù)。共享部分記憶,不是全部的上下文,保證每個(gè)agent關(guān)注核心的事情。
  • 核心想法:把整個(gè)“寫簡(jiǎn)歷”流程拆成多個(gè)角色(對(duì)話agent/計(jì)劃agent/執(zhí)行agent/校驗(yàn)agent)并在沙箱中彼此隔離,避免數(shù)據(jù)流互相污染。Manus、smolagents等系統(tǒng)說明了多-agent與沙箱執(zhí)行的可行性與挑戰(zhàn)。

結(jié)語(yǔ)

要把 Agent 從“偶爾好用”變成“可預(yù)測(cè)可靠”,工程化的上下文管理比盲目換模型更加劃算。建議按短中長(zhǎng)期清單逐步推進(jìn):先做選擇與寫入的低成本改造,再引入壓縮與隔離。

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

題圖來自 Unsplash,基于 CC0 協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

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