用 —— 第 14 章 可觀測(cè)與效果評(píng)估)
Flink Agents 與 AI 流式應(yīng)用 —— 第 14 章 可觀測(cè)與效果評(píng)估章節(jié)定位第 13 章把防線(xiàn)建好了本章解決看得見(jiàn)的問(wèn)題。傳統(tǒng)流處理監(jiān)控看吞吐、延遲、反壓——Agent 系統(tǒng)還要多回答三個(gè)問(wèn)題它為什么這么決策Trace、決策得對(duì)不對(duì)效果、花了多少錢(qián)成本。本章落地決策 Trace 全鏈路還原、四維效果評(píng)估體系、成本歸因到每個(gè) Agent 每個(gè)工具、人工反饋閉環(huán)以及 Agent 版監(jiān)控五件套配置。版本基線(xiàn)Apache Flink 2.3.0 Flink Agents 0.3.xJDK 17章節(jié)導(dǎo)讀14.1 決策 Trace全鏈路還原14.2 四維效果評(píng)估準(zhǔn)確、成本、時(shí)效、穩(wěn)定14.3 成本歸因到每個(gè) Agent 每個(gè)工具14.4 人工反饋閉環(huán)從糾錯(cuò)到資產(chǎn)14.5 監(jiān)控五件套Agent 版落地配置14.6 實(shí)戰(zhàn)效果評(píng)估周報(bào)自動(dòng)化14.7 本章小結(jié)與下章預(yù)告14.1 決策 Trace全鏈路還原14.1.1 Trace 的數(shù)據(jù)源第 12.3 章的 Paimon 審計(jì)表就是 Trace 的素材庫(kù): 每個(gè)事件的完整 prompt、工具調(diào)用序列、決策、成本、版本 trace_id 串聯(lián)規(guī)則(第 10 章埋的線(xiàn)): 輸入事件生成 trace_id → 全鏈路事件繼承(分診/專(zhuān)科/工單同 trace_id) → MCP 調(diào)用透?jìng)?5.5.2 審計(jì)日志同 trace_id) → 一個(gè) trace_id 查出這條告警從進(jìn)入到建單的全部足跡14.1.2 Trace 查詢(xún)工具-- 還原單事件決策鏈(排查它為什么這么判)SELECTstep,action_type,content,cost_tokens,latency_msFROMaudit.agent_decision_detailWHEREtrace_idalm-ALM001ORDERBYstep;-- 結(jié)果示例:-- step1 ChatReq prompt(記憶注入版) 1200 tok-- step2 ToolCall dtc://P0AA6 120ms-- step3 ChatResp ThoughtAction 300 tok-- ...-- step8 Output P2工單 confidence0.8214.1.3 典型排查場(chǎng)景問(wèn)題Trace 排查路徑誤判看每步 Thought 注入的記憶 → 定位被帶偏的環(huán)節(jié)成本異常按 step 看 token 分布 → 找出失控的循環(huán)延遲超標(biāo)看每步 latency → 慢在 LLM 還是工具幻覺(jué)引用對(duì)照 refs 與 ToolCall 記錄6.4.2 的生產(chǎn)復(fù)核14.2 四維效果評(píng)估準(zhǔn)確、成本、時(shí)效、穩(wěn)定14.2.1 指標(biāo)體系┌──────────┬────────────────────────────┬──────────────────┐ │ 維度 │ 核心指標(biāo) │ 數(shù)據(jù)源 │ ├──────────┼────────────────────────────┼──────────────────┤ │ 準(zhǔn)確性 │ 復(fù)檢推翻率 / refs 真實(shí)率 │ 工單復(fù)檢結(jié)果回填 │ │ │ 分診準(zhǔn)確率 / 轉(zhuǎn)人工合理率 │ 抽樣人工核對(duì) │ ├──────────┼────────────────────────────┼──────────────────┤ │ 成本 │ 單事件 token / 日總成本 │ 審計(jì)表 cost_tokens │ │ │ 成本分布(分診/專(zhuān)科/工具) │ 14.3 歸因 │ ├──────────┼────────────────────────────┼──────────────────┤ │ 時(shí)效 │ 端到端 p50/p99 │ 審計(jì)表 latency_ms │ │ │ 平均決策步數(shù) │ step 計(jì)數(shù) │ ├──────────┼────────────────────────────┼──────────────────┤ │ 穩(wěn)定性 │ 步數(shù)打滿(mǎn)率 / 降級(jí)率 │ 13.4/6.2 標(biāo)記統(tǒng)計(jì) │ │ │ 同癥狀決策一致率(8.5.3 AB) │ 對(duì)照實(shí)驗(yàn) │ └──────────┴────────────────────────────┴──────────────────┘14.2.2 準(zhǔn)確性的特殊難題Agent 準(zhǔn)確性 ≠ 模型準(zhǔn)確性: 模型對(duì) 工具錯(cuò) 決策錯(cuò)(檢索回了錯(cuò)的案例) 模型對(duì) 記憶臟 決策錯(cuò)(8.4 記憶污染) 模型錯(cuò) 校驗(yàn)攔 決策對(duì)(6.4 語(yǔ)義校驗(yàn)救回來(lái)) → 評(píng)估必須歸因到環(huán)節(jié),否則優(yōu)化無(wú)從下手 → 這就是 14.1 Trace 的價(jià)值: 每個(gè)環(huán)節(jié)獨(dú)立打分14.2.3 基線(xiàn)與紅線(xiàn)上線(xiàn)前定基線(xiàn),運(yùn)行中守紅線(xiàn)(示例值,按業(yè)務(wù)定): 復(fù)檢推翻率 基線(xiàn) 15% 紅線(xiàn) 25% refs 真實(shí)率 基線(xiàn) 100% 紅線(xiàn) 100%(不可妥協(xié)) 單事件成本 基線(xiàn) 4k tok 紅線(xiàn) 15k tok 端到端 p99 基線(xiàn) 45s 紅線(xiàn) 90s 步數(shù)打滿(mǎn)率 基線(xiàn) 1% 紅線(xiàn) 2%(6.6.3 驗(yàn)收值) 轉(zhuǎn)人工率 基線(xiàn) 15% 紅線(xiàn)區(qū)間 10%~25% (過(guò)低 校驗(yàn)失效不敢轉(zhuǎn);過(guò)高 Agent 能力不行)14.3 成本歸因到每個(gè) Agent 每個(gè)工具14.3.1 歸因維度-- 成本熱力圖: 哪個(gè) Agent 哪類(lèi)事件最燒錢(qián)SELECTagent_name,alert_category,COUNT(*)ASevents,SUM(cost_tokens)AStotal_tokens,AVG(cost_tokens)ASavg_tokens,AVG(step_count)ASavg_stepsFROMaudit.agent_decision_logWHEREdtDATE_SUB(CURDATE(),7)GROUPBYagent_name,alert_categoryORDERBYtotal_tokensDESC;14.3.2 典型發(fā)現(xiàn)與優(yōu)化動(dòng)作發(fā)現(xiàn) 1: 絕緣告警 avg_tokens 是其他的 3 倍 → 排查: 專(zhuān)科工具描述差,LLM 反復(fù)試錯(cuò)(4.1.1) → 動(dòng)作: 重寫(xiě)工具描述,avg 降回基線(xiàn) 發(fā)現(xiàn) 2: 分診占 token 總量 40% → 排查: 分診誤用了大模型 → 動(dòng)作: 切小模型(10.5.2),成本降 60% 發(fā)現(xiàn) 3: 5% 事件消耗 40% 成本 → 排查: 長(zhǎng)尾疑難事件步數(shù)打滿(mǎn) → 動(dòng)作: 該類(lèi)事件直接轉(zhuǎn)人工,ROI 更高的資源分配14.4 人工反饋閉環(huán)從糾錯(cuò)到資產(chǎn)14.4.1 閉環(huán)設(shè)計(jì)人工處置(復(fù)核/糾偏/補(bǔ)償) │ ▼ 反饋結(jié)構(gòu)化: {event_id, agent結(jié)論, 人工結(jié)論, 差異類(lèi)型} │ ├─→ 差異誤診 → 病程庫(kù) recheck_ok0(8.4 降權(quán)) ├─→ 差異分診錯(cuò) → 分診 badcase 集(提示詞優(yōu)化素材) ├─→ 差異工具錯(cuò) → 工具契約修復(fù)(4.1 描述重寫(xiě)) └─→ 人工結(jié)論優(yōu) → 提煉為知識(shí)庫(kù)新案例(前作 RAG 入庫(kù))14.4.2 反饋回流實(shí)現(xiàn)// 人工處置結(jié)果從工單系統(tǒng)回流(Kafka 事件)Action(listenEventTypes{feedback.submitted})publicEventonFeedback(ActionContextctx,FeedbackEvente){// ① 差異分類(lèi)(確定性規(guī)則,不用 LLM)DiffTypediffclassify(e.agentResult,e.humanResult);// ② 按差異類(lèi)型回流到對(duì)應(yīng)資產(chǎn)switch(diff){caseMISDIAGNOSIS-doris.upsert(recheckFail(e.eventId));// 病程降權(quán)caseTRIAGE_ERROR-badcaseStore.append(triage,e);// badcase 集caseBETTER_SOLUTION-knowledgePipeline.submit(e);// 新案例入庫(kù)}metrics.feedback.labels(diff.name()).inc();returnnull;}紀(jì)律: □ 反饋必須結(jié)構(gòu)化——判錯(cuò)了沒(méi)有用, 哪一步錯(cuò)、正確答案是什么才是資產(chǎn) □ 反饋處理零 LLM(分類(lèi)規(guī)則化),只有知識(shí)提煉用 LLM □ badcase 積累到閾值(如 50 例)→ 觸發(fā)提示詞版本迭代14.5 監(jiān)控五件套Agent 版落地配置14.5.1 五件套清單① Metrics(指標(biāo)): 四維指標(biāo)全部暴露 Prometheus ② Logging(日志): 結(jié)構(gòu)化 JSON,trace_id 必帶 ③ Tracing(鏈路): 14.1 決策鏈查詢(xún)工具 ④ Alerting(告警): 紅線(xiàn)觸發(fā) 熔斷觸發(fā)(13.5.2) ⑤ Dashboard(看板): Grafana 四維分屏14.5.2 關(guān)鍵指標(biāo)暴露// Agent 作業(yè)內(nèi)暴露(在前作監(jiān)控規(guī)范上擴(kuò)展 AI 維度)agentDecisionLatency.labels(agent,category)// 時(shí)效agentTokenUsage.labels(agent,model)// 成本agentStepCount.labels(agent)// 推理深度agentDegradedTotal.labels(agent,reason)// 降級(jí)agentGuardTripped.labels(agent,guard)// 三道閘觸發(fā)agentRefsValidity.labels(agent)// 引用真實(shí)率(紅線(xiàn))costBreakerTripped.labels(job)// 成本熔斷(13.5)14.5.3 告警規(guī)則示例# Prometheus 告警規(guī)則(紅線(xiàn) 14.2.3)-alert:AgentRefsHallucinationexpr:agentRefsValidity 1.0for:1mannotations:summary:幻覺(jué)引用出現(xiàn)!refs 真實(shí)率跌破 100%severity:P0# 不可妥協(xié)的紅線(xiàn)-alert:AgentCostSurgeexpr:rate(agentTokenUsage[1h])1.5 * rate(agentTokenUsage[1h]offset 1d)annotations:summary:Agent 成本環(huán)比突增 50%severity:P114.6 實(shí)戰(zhàn)效果評(píng)估周報(bào)自動(dòng)化14.6.1 設(shè)計(jì)每周一 09:00,評(píng)估 Agent(12.4 數(shù)倉(cāng)任務(wù)玩法)自動(dòng)生成周報(bào): ① 跑四維指標(biāo) SQL(只讀白名單) ② 對(duì)比上周基線(xiàn),標(biāo)注超紅線(xiàn)項(xiàng) ③ LLM 生成分析:絕緣告警成本上升源于工具 X 描述缺陷, 建議重寫(xiě)描述;分診 OTHER 率 6% 超線(xiàn),新增 2 個(gè) badcase 歸類(lèi) ④ 推送團(tuán)隊(duì)群 歸檔 Paimon14.6.2 核心實(shí)現(xiàn)publicclassWeeklyEvalAgentimplementsAgent{OverridepublicvoidonTimer(longts,ActionContextctx){if(!isMondayMorning(ts))return;// ① 四維數(shù)據(jù)(只讀)EvalDatadatarunEvalQueries();// ② 與基線(xiàn)對(duì)比(代碼,確定性)ListAnomalyanomaliesdata.compareWithBaseline(BASELINE);// ③ LLM 只做分析與措辭(低溫度)Stringreportmodel.chat(buildReportPrompt(data,anomalies));// ④ 推送 歸檔(冪等: 周期鍵 weekId 去重)dingTalk.send(report);paimonWriter.write(WeeklyReport.of(weekId(ts),data,report));}}14.6.3 驗(yàn)收清單□ 周報(bào)數(shù)據(jù)與 Grafana 看板一致(同一 SQL 來(lái)源) □ 超紅線(xiàn)項(xiàng) 100% 被標(biāo)注,無(wú)漏報(bào) □ 分析建議可操作(指向具體工具/提示詞,不是空話(huà)) □ 周報(bào)復(fù)讀率 0(冪等生效)14.7 本章小結(jié)與下章預(yù)告本章小結(jié)┌──────────────────────────────────────────────────────────────┐ │ 第 14 章 要點(diǎn)回顧 │ └──────────────────────────────────────────────────────────────┘ ? Trace: trace_id 貫穿全鏈路(含 MCP 透?jìng)?, Paimon 審計(jì)表是素材庫(kù),單事件決策鏈可完整還原 ? 四維評(píng)估: 準(zhǔn)確(復(fù)檢推翻率/refs 真實(shí)率)/成本/ 時(shí)效/穩(wěn)定;準(zhǔn)確性必須歸因到環(huán)節(jié); 上線(xiàn)定基線(xiàn),運(yùn)行守紅線(xiàn),refs 真實(shí)率 100% 不可妥協(xié) ? 成本歸因: agent × 告警類(lèi)別熱力圖; 三大典型優(yōu)化——工具描述/模型檔位/長(zhǎng)尾轉(zhuǎn)人工 ? 反饋閉環(huán): 結(jié)構(gòu)化反饋按差異類(lèi)型回流 (病程降權(quán)/badcase 集/知識(shí)庫(kù)新案例); 分類(lèi)零 LLM,提煉才用 LLM ? 五件套: Metrics/Logging/Tracing/Alerting/Dashboard; refs 幻覺(jué)告警 P0 級(jí);周報(bào) Agent 自動(dòng)化(自評(píng)自診)下章預(yù)告第 15 章 安全權(quán)限合規(guī)看得見(jiàn)的系統(tǒng)還要管得住——?jiǎng)幼鳈?quán)限模型Agent 能做什么的白名單體系、Prompt 注入防護(hù)深化、數(shù)據(jù)脫敏VIN/車(chē)主信息的最小暴露、憑證最小授權(quán)、審計(jì)追溯合規(guī)以及最重要的落地方法論影子→審批→受限自動(dòng)的三階段漸進(jìn)放權(quán) SOP。這是 Agent 從Demo 走向生產(chǎn)的最后一道門(mén)檻。官方參考資料Flink Agents 0.3 DocumentationFlink 2.3 Metrics DocumentationPrometheus Alerting Rules本章實(shí)戰(zhàn)代碼清單序號(hào)內(nèi)容說(shuō)明1trace_id 貫穿規(guī)則與 Trace 查詢(xún) SQL14.12四維指標(biāo)體系 基線(xiàn)紅線(xiàn)表14.23成本歸因熱力圖 SQL 優(yōu)化案例14.34人工反饋閉環(huán)回流實(shí)現(xiàn)14.45監(jiān)控五件套 關(guān)鍵告警規(guī)則14.56效果評(píng)估周報(bào) Agent自評(píng)自診14.6