備(五十四):智能體線上實(shí)驗(yàn)與效果歸因體系——上線決策科學(xué))
智能體面試準(zhǔn)備五十四智能體線上實(shí)驗(yàn)與效果歸因體系——上線決策科學(xué)引言為什么離線評(píng)測(cè)高分不等于線上能發(fā)B31 講過(guò) Agent 評(píng)測(cè)體系軌跡指標(biāo)、LLM-as-Judge、benchmarkB20 講過(guò)可觀測(cè)性。但評(píng)測(cè)高分只是門票——真正決定一個(gè)智能體能不能上線的是線上實(shí)驗(yàn)?zāi)懿荒茏C明它比舊版好且好在哪里、壞在哪里可解釋。本篇是工程實(shí)戰(zhàn)深化的收官講講清智能體上線前的實(shí)驗(yàn)設(shè)計(jì)A/B、影子、漸進(jìn)和上線后的效果歸因因果分解、bad case 漏斗、上線門禁。這是大廠面試?yán)镉袥](méi)有真把 Agent 跑過(guò)生產(chǎn)的分水嶺。讀完本篇你應(yīng)當(dāng)能說(shuō)清Agent 的線上實(shí)驗(yàn)和普通推薦系統(tǒng) A/B 有何不同、指標(biāo)該怎么設(shè)計(jì)才不會(huì)騙自己、出問(wèn)題時(shí)怎么歸因到具體環(huán)節(jié)。普通模型上線: 輸入X - 模型 - 輸出Y, 可隨機(jī)分流做 A/B Agent 上線: 輸入X - 多步規(guī)劃/工具調(diào)用/環(huán)境交互 - 輸出Y 差異: 路徑非確定(同輸入不同軌跡)、狀態(tài)有副作用(調(diào)了API/改了數(shù)據(jù))、成本隨步數(shù)變 所以: 實(shí)驗(yàn)設(shè)計(jì)要管軌跡和副作用, 不只管最終 Y第一節(jié) 離線到在線的鴻溝Agent 特有的三類落差1.1 分布落差離線 benchmark 是靜態(tài)題集線上請(qǐng)求是真實(shí)、長(zhǎng)尾、帶噪的。離線答得好的 Agent線上遇到?jīng)]見(jiàn)過(guò)的工具報(bào)錯(cuò)、用戶亂輸入可能直接崩。所以離線只能證偽差的一律不過(guò)不能證真高分不代表線上穩(wěn)。1.2 路徑落差A(yù)gent 同一個(gè)輸入可能走出不同軌跡離線評(píng)測(cè)只采樣了幾條線上千奇百怪。要看成功率而非某次對(duì)不對(duì)更要看最壞軌跡會(huì)不會(huì)造成破壞。1.3 副作用落差普通模型輸出文本無(wú)副作用Agent 會(huì)調(diào)接口、寫庫(kù)、發(fā)消息。線上實(shí)驗(yàn)必須隔離副作用影子模式/沙箱否則 A/B 實(shí)驗(yàn)本身就在制造事故。離線評(píng)測(cè) - 線上實(shí)驗(yàn) 的鴻溝 分布: 靜態(tài)題集 vs 真實(shí)長(zhǎng)尾 路徑: 采樣軌跡 vs 全軌跡分布 副作用: 無(wú) vs 有(必須隔離) 結(jié)論: 離線過(guò)線只是允許進(jìn)實(shí)驗(yàn), 不是允許全量第二節(jié) 三種線上實(shí)驗(yàn)形態(tài)及其在 Agent 上的特殊性2.1 A/B 實(shí)驗(yàn)在線分流把流量按比例分給實(shí)驗(yàn)組新 Agent和對(duì)照組舊版對(duì)比指標(biāo)。Agent 的特殊性在于不能只看最終答案準(zhǔn)確率還要看過(guò)程成本平均步數(shù)、工具調(diào)用次數(shù)、token 消耗和安全指標(biāo)錯(cuò)誤動(dòng)作率、需人工接管的次數(shù)。一個(gè)答案略好但成本是舊版 3 倍、且多調(diào)了兩次危險(xiǎn)接口的版本不能算贏。2.2 影子模式Shadow新 Agent 在線上跑但不執(zhí)行——它和實(shí)際請(qǐng)求一起推理、生成動(dòng)作但動(dòng)作不真正落地只記錄它會(huì)怎么做并與真實(shí)結(jié)果對(duì)比。這是上線前最安全的驗(yàn)證零副作用卻能拿到真實(shí)分布下的軌跡和指標(biāo)。2.3 漸進(jìn)發(fā)布Canary / 漸進(jìn)先放 1% 流量看住指標(biāo)逐檔放量到 5%、20%、100%。Agent 上線尤其需要漸進(jìn)因?yàn)殚L(zhǎng)尾問(wèn)題往往在量起來(lái)后才暴露。配合自動(dòng)熔斷指標(biāo)越界立即回滾把事故半徑控制在最小。形態(tài)副作用能看什么適用階段A/B有需隔離/分流真實(shí)效果成本安全已較有信心要定勝負(fù)影子無(wú)真實(shí)分布下的軌跡上線前最后一道關(guān)漸進(jìn)小限流內(nèi)放量后的長(zhǎng)尾表現(xiàn)正式上線過(guò)程第三節(jié) 指標(biāo)設(shè)計(jì)別被準(zhǔn)確率騙了3.1 四組指標(biāo)缺一不可效果指標(biāo)任務(wù)成功率、最終答案準(zhǔn)確率、用戶滿意度過(guò)程指標(biāo)平均規(guī)劃步數(shù)、工具調(diào)用次數(shù)、重試次數(shù)成本指標(biāo)平均 token 消耗、平均延遲TTFT/TPOT、單位請(qǐng)求成本安全指標(biāo)錯(cuò)誤動(dòng)作率、需人工接管率、危險(xiǎn)操作次數(shù)、越權(quán)嘗試。面試??贾欢⒊晒β视惺裁磫?wèn)題 答可能掩蓋成本爆炸或安全隱患。一個(gè)成功率 95% 但每次都調(diào)危險(xiǎn)接口、成本是舊版 5 倍的版本全量上線就是事故。3.2 指標(biāo)要分層、要可歸因每個(gè)指標(biāo)應(yīng)當(dāng)能下鉆到是哪類子任務(wù)拖的。例如成功率按單跳/多跳有無(wú)工具報(bào)錯(cuò)長(zhǎng)尾 query分桶才能知道新版到底在哪變好、在哪變差。# 指標(biāo)分桶記錄示意defrecord(run):bucketf{run.hop_type}/{run.has_tool_error}/{run.is_longtail}metrics[bucket].successrun.okmetrics[bucket].costrun.token_costmetrics[bucket].safe(0ifrun.danger_actionelse1)第四節(jié) 因果歸因出問(wèn)題時(shí)知道壞在哪4.1 bad case 漏斗把失敗按發(fā)生在哪一步建漏斗規(guī)劃錯(cuò)檢索錯(cuò)工具調(diào)用錯(cuò)結(jié)果組裝錯(cuò)這樣一次失敗能定位到具體環(huán)節(jié)而不是籠統(tǒng)的Agent 不行。失敗歸因漏斗 任務(wù)失敗 100 ├─ 規(guī)劃階段錯(cuò) 40 (子問(wèn)題拆分/路由錯(cuò)) ├─ 檢索階段錯(cuò) 25 (召回不準(zhǔn)/模態(tài)選錯(cuò)) ├─ 工具調(diào)用錯(cuò) 20 (參數(shù)錯(cuò)/超時(shí)/報(bào)錯(cuò)未處理) └─ 生成組裝錯(cuò) 15 (幻覺(jué)/格式錯(cuò))4.2 因素分解與對(duì)照用 A/B 的對(duì)照數(shù)據(jù)做因素分解實(shí)驗(yàn)組成功率比對(duì)照組低 5 個(gè)點(diǎn)是所有桶都低模型整體退化還是只在多跳長(zhǎng)尾桶低特定能力缺口前者要回退后者可以針對(duì)性補(bǔ)數(shù)據(jù)或加檢索。歸因結(jié)論要能指導(dǎo)下一步動(dòng)作而不是只給一個(gè)數(shù)字。4.3 可觀測(cè)性支撐歸因B20 講的可觀測(cè)性在這里是關(guān)鍵基建每一次 Agent 運(yùn)行都要有完整 trace每步輸入/輸出/工具調(diào)用/耗時(shí)/錯(cuò)誤信息歸因才能從猜變成查日志。沒(méi)有 trace 的 Agent線上出問(wèn)題就是黑盒。第五節(jié) 上線門禁與回滾把發(fā)不發(fā)變成規(guī)則5.1 門禁清單上線不是拍腦袋而是一組硬性門禁效果不顯著劣于對(duì)照、成本增幅在預(yù)算內(nèi)、安全指標(biāo)零越線、長(zhǎng)尾桶無(wú)異常退化。任一門禁不達(dá)標(biāo)即攔截。5.2 自動(dòng)熔斷與回滾實(shí)驗(yàn)跑起來(lái)后實(shí)時(shí)監(jiān)控門禁指標(biāo)一旦越界立即把流量切回舊版自動(dòng)回滾并告警。Agent 上線尤其要快回滾因?yàn)楦弊饔每赡茈S時(shí)間累積如錯(cuò)誤數(shù)據(jù)越寫越多。上線決策流 離線過(guò)線 - 影子驗(yàn)證(零副作用看軌跡) - 漸進(jìn)1% - 門禁監(jiān)控 ├─ 全部門禁達(dá)標(biāo) - 逐檔放量 - 100% 全量 └─ 任一越界 - 自動(dòng)熔斷回滾 - 歸因 - 修復(fù) - 重進(jìn)實(shí)驗(yàn)第六節(jié) 工程骨架一個(gè)最小實(shí)驗(yàn)與歸因框架classAgentExperiment:def__init__(self,control,treatment,gate):self.control,self.treatment,self.gatecontrol,treatment,gatedefroute(self,req):returnself.treatmentifhash(req.id)%100self.rolloutelseself.controldefevaluate(self,runs):repsummarize(runs)# 四組指標(biāo)分桶ifnotself.gate.pass_(rep):# 任一門禁不達(dá)標(biāo)self.rollback();self.alert(rep)# 自動(dòng)回滾告警return(BLOCKED,attr_breakdown(runs))# 返回歸因return(PASS,rep)這段代碼把分流—評(píng)估—門禁—回滾—?dú)w因串成閉環(huán)面試?yán)锬軐懗鰜?lái)就說(shuō)明你真做過(guò)上線而不只是調(diào) prompt。第七節(jié) 五個(gè)上線實(shí)驗(yàn)踩坑坑一用平均成功率掩蓋長(zhǎng)尾崩壞。整體成功率只掉 1%但多跳長(zhǎng)尾桶掉了 20%全量后投訴爆了。必須分桶看長(zhǎng)尾桶單獨(dú)設(shè)門禁??佣白幽J酵烁綦x寫操作。以為不執(zhí)行就安全但 Agent 還是調(diào)了帶副作用的接口發(fā)消息/寫庫(kù)。影子必須走只讀副本或沙箱寫操作一律 mock??尤鼳/B 兩組環(huán)境不一致。實(shí)驗(yàn)組用了新的檢索器、對(duì)照組是舊的指標(biāo)差異分不清是誰(shuí)的功勞。上線實(shí)驗(yàn)要保證除被比較的變量外其他全一致。坑四回滾不及時(shí)副作用累積。指標(biāo)越界后沒(méi)自動(dòng)熔斷Agent 繼續(xù)往生產(chǎn)庫(kù)寫錯(cuò)數(shù)據(jù)半小時(shí)?;貪L觸發(fā)條件要前置、要快寧可誤攔不可漏攔??游鍤w因只給數(shù)字不給動(dòng)作。復(fù)盤說(shuō)成功率降了 5%但沒(méi)人知道降在哪、怎么改。歸因的終點(diǎn)必須是下一步具體動(dòng)作回退/補(bǔ)數(shù)據(jù)/加檢索/改規(guī)劃否則等于沒(méi)歸因。面試速答本篇可直接背的 3 句Agent 上線實(shí)驗(yàn)和普通 A/B 的根本差異Agent 路徑非確定、有副作用、成本隨步數(shù)變所以實(shí)驗(yàn)必須管軌跡副作用成本安全不能只看最終答案。離線評(píng)測(cè)只能證偽不能證真上線前要過(guò)影子模式零副作用看真實(shí)分布軌跡再漸進(jìn)放量配合自動(dòng)熔斷回滾。效果歸因靠 bad case 漏斗規(guī)劃/檢索/工具/生成分步定位 指標(biāo)分桶對(duì)照結(jié)論要能指導(dǎo)回退還是針對(duì)性補(bǔ)靠完整 trace 支撐。高頻追問(wèn)清單Agent 的 A/B 實(shí)驗(yàn)怎么保證同輸入分到同組以便對(duì)照提示按請(qǐng)求 id 哈希分流影子模式下 Agent 不執(zhí)行動(dòng)作那它調(diào)用的工具要不要真打提示打只讀/沙箱禁寫成功率提升 2% 但成本漲 3 倍發(fā)不發(fā)你的門禁怎么設(shè)bad case 漏斗里規(guī)劃錯(cuò)占比最高下一步具體怎么改漸進(jìn)發(fā)布從 1% 到 100%每檔要看多久、看哪些指標(biāo)才放量沒(méi)有可觀測(cè)性 trace歸因只能靠什么為什么這是硬傷