Day 024|條件路由:讓 Agent 根據(jù)結(jié)果選擇下一步
系列100 天系統(tǒng)學(xué)習(xí) AI Agent 開(kāi)發(fā)當(dāng)前階段LangChain 與 LangGraph 工程化今日目標(biāo)條件路由可以根據(jù)工具結(jié)果、置信度、用戶權(quán)限或錯(cuò)誤類型決定流程分支。真正讓流程像 Agent 的不是節(jié)點(diǎn)而是岔路口檢索到充分證據(jù)時(shí)回答問(wèn)題含糊時(shí)追問(wèn)工具暫時(shí)超時(shí)可以再試一次用戶無(wú)權(quán)限則立即終止。節(jié)點(diǎn)本身只是做事條件路由才把觀察結(jié)果變成下一步。這里也最容易失控。有人會(huì)寫(xiě)“confidence 0.8 就回答”仿佛 0.8 是天然真理??刹煌瑱z索器的分?jǐn)?shù)不可直接比較相似度也不等于答案可靠。閾值必須從自己的標(biāo)注數(shù)據(jù)校準(zhǔn)而且不能單獨(dú)承擔(dān)權(quán)限和安全決策。今天要實(shí)現(xiàn)的路由規(guī)則否是可重試且未重試不可重試/預(yù)算用盡無(wú)錯(cuò)誤充分不足且問(wèn)題可補(bǔ)充知識(shí)庫(kù)無(wú)資料檢索或工具結(jié)果用戶有權(quán)限終止并審計(jì)工具是否報(bào)錯(cuò)重試一次失敗并解釋證據(jù)是否充分生成帶引用回答追問(wèn)一個(gè)關(guān)鍵字段拒答并說(shuō)明范圍注意順序權(quán)限判斷在置信度之前。再“相關(guān)”的片段只要用戶無(wú)權(quán)訪問(wèn)就不能被用來(lái)回答。路由輸入要結(jié)構(gòu)化fromdataclassesimportdataclassfromenumimportEnumclassNextStep(str,Enum):ANSWERanswerASK_USERask_userRETRY_TOOLretry_toolFAILfailREJECTrejectdataclass(frozenTrue)classRouteState:has_permission:booltool_error_kind:str|Noneattempts:intevidence_complete:boolmissing_user_fields:tuple[str,...]defchoose_next(state:RouteState)-NextStep:ifnotstate.has_permission:returnNextStep.REJECTifstate.tool_error_kindretryable:returnNextStep.RETRY_TOOLifstate.attempts1elseNextStep.FAILifstate.tool_error_kind:returnNextStep.FAILifstate.evidence_complete:returnNextStep.ANSWERifstate.missing_user_fields:returnNextStep.ASK_USERreturnNextStep.FAIL這段代碼故意沒(méi)有 similarity_score。第一版用“evidence_complete”這個(gè)經(jīng)過(guò)證據(jù)檢查的布爾值更容易測(cè)試。以后如果加入分?jǐn)?shù)應(yīng)同時(shí)考慮來(lái)源權(quán)威、版本匹配、證據(jù)覆蓋和重排結(jié)果而不是只看向量距離?!白C據(jù)充分”如何定義以部署問(wèn)題為例用戶要環(huán)境和命令檢索結(jié)果只覆蓋命令即使相似度很高也不完整??梢韵葘⑿枨蟛馂?evidence_points{required_points:[環(huán)境要求,安裝命令],covered_points:[安裝命令],evidence_complete:false,missing_points:[環(huán)境要求]}這時(shí)系統(tǒng)可繼續(xù)檢索、追問(wèn)版本或回答“現(xiàn)有資料只確認(rèn)了命令環(huán)境要求暫無(wú)依據(jù)”。不要把“低置信度”當(dāng)成一句籠統(tǒng)提示。路由測(cè)試表場(chǎng)景輸入狀態(tài)期望下一步高質(zhì)量證據(jù)且有權(quán)限completetrueanswer缺產(chǎn)品版本missing_fields[version]ask_user首次短暫超時(shí)retryable, attempts0retry_tool第二次仍超時(shí)retryable, attempts1fail參數(shù)非法validation_errorfail不重試無(wú)權(quán)限permissionfalsereject無(wú)資料且無(wú)可追問(wèn)項(xiàng)completefalsefail/unsupported真實(shí)接 LangGraph 時(shí)條件邊的 API 寫(xiě)法要按官方文檔核對(duì)上面的 RouteState 與純函數(shù)可以先獨(dú)立測(cè)試再映射到圖節(jié)點(diǎn)名。三種失敗模式分支條件重疊。同時(shí)缺權(quán)限又工具超時(shí)如果判斷順序不固定可能錯(cuò)誤重試敏感工具。返回任意字符串。模型生成不存在的節(jié)點(diǎn)名圖運(yùn)行到未知位置。無(wú)默認(rèn)出口。新增錯(cuò)誤類型沒(méi)有匹配分支任務(wù)卡在 running。每個(gè)路由都應(yīng)有窮盡的枚舉和兜底失敗狀態(tài)返工還要有總預(yù)算。下一篇做 checkpoint 時(shí)路由結(jié)果與 attempts 必須被持久化否則恢復(fù)后可能再次獲得一次重試機(jī)會(huì)。面試官會(huì)追問(wèn)條件路由應(yīng)該交給規(guī)則還是模型能由確定字段判斷的就用規(guī)則權(quán)限、金額閾值、錯(cuò)誤類型、schema 是否通過(guò)、最大輪數(shù)。只有語(yǔ)義分類或開(kāi)放任務(wù)才讓模型參與而且模型輸出仍要落到有限枚舉。例如客服路由可以分兩層代碼先攔截?zé)o權(quán)限與高風(fēng)險(xiǎn)動(dòng)作模型再在 faq、order_query、complaint 三類意圖中選擇低置信度進(jìn)入 ask_user。這樣模型不會(huì)越過(guò)硬邊界規(guī)則也不用窮舉全部語(yǔ)言表達(dá)。測(cè)試時(shí)不能只覆蓋“正確分支”還要覆蓋路由震蕩同一任務(wù)在兩個(gè)節(jié)點(diǎn)之間來(lái)回跳。給 state 增加 route_history 與 step_budget一旦重復(fù)模式超過(guò)閾值就終止并輸出診斷而不是無(wú)限消耗 Token。

相關(guān)新聞

國(guó)內(nèi)AI數(shù)字人平臺(tái)TOP5實(shí)戰(zhàn)對(duì)比(含OpenCV級(jí)唇動(dòng)誤差數(shù)據(jù)+API調(diào)用延遲實(shí)測(cè))

國(guó)內(nèi)AI數(shù)字人平臺(tái)TOP5實(shí)戰(zhàn)對(duì)比(含OpenCV級(jí)唇動(dòng)誤差數(shù)據(jù)+API調(diào)用延遲實(shí)測(cè))

更多請(qǐng)點(diǎn)擊: https://codechina.net 第一章:國(guó)內(nèi)AI數(shù)字人平臺(tái)TOP5實(shí)戰(zhàn)對(duì)比(含OpenCV級(jí)唇動(dòng)誤差數(shù)據(jù)API調(diào)用延遲實(shí)測(cè)) 為驗(yàn)證主流AI數(shù)字人平臺(tái)在真實(shí)生產(chǎn)環(huán)境中的表現(xiàn),我們選取百度智能云曦靈、騰訊云智影、阿里云通義…

2026/7/29 10:26:24 閱讀更多
DSP/BIOS內(nèi)存管理實(shí)戰(zhàn):MEM/BUF模塊配置、防碎片與實(shí)時(shí)系統(tǒng)優(yōu)化

DSP/BIOS內(nèi)存管理實(shí)戰(zhàn):MEM/BUF模塊配置、防碎片與實(shí)時(shí)系統(tǒng)優(yōu)化

1. 項(xiàng)目概述:DSP/BIOS內(nèi)存管理的核心挑戰(zhàn)與應(yīng)對(duì)在嵌入式DSP系統(tǒng)開(kāi)發(fā)里摸爬滾打十幾年,我處理過(guò)最棘手的問(wèn)題往往不是算法本身,而是如何讓這些算法在極其有限且“脾氣古怪”的內(nèi)存里穩(wěn)定、高效地跑起來(lái)。你精心設(shè)計(jì)的濾波器或者編解碼算法&…

2026/7/29 10:26:24 閱讀更多
Mind+指紋識(shí)別擴(kuò)展庫(kù)開(kāi)發(fā):圖形化編程實(shí)現(xiàn)生物識(shí)別應(yīng)用

Mind+指紋識(shí)別擴(kuò)展庫(kù)開(kāi)發(fā):圖形化編程實(shí)現(xiàn)生物識(shí)別應(yīng)用

1. 項(xiàng)目概述:當(dāng)創(chuàng)客項(xiàng)目遇上生物識(shí)別 最近在折騰一個(gè)智能門鎖的小項(xiàng)目,手頭正好有一個(gè)閑置的指紋模塊,就想把它和Mind這個(gè)圖形化編程環(huán)境結(jié)合起來(lái)。Mind對(duì)于很多教育者和創(chuàng)客愛(ài)好者來(lái)說(shuō),是連接硬件與創(chuàng)意的一座非常友好的橋梁&…

2026/7/29 10:26:24 閱讀更多
C++入門指南:從Hello World到面向?qū)ο笈c內(nèi)存管理

C++入門指南:從Hello World到面向?qū)ο笈c內(nèi)存管理

1. 從“Hello World”到理解計(jì)算機(jī)的思考方式如果你剛打開(kāi)電腦&#xff0c;準(zhǔn)備寫(xiě)下第一行C代碼&#xff0c;大概率會(huì)從那個(gè)經(jīng)典的cout << "Hello, World!" << endl;開(kāi)始。這行代碼簡(jiǎn)單到似乎不值一提&#xff0c;但它背后隱藏的&#xff0c;正是C乃至整…

2026/7/29 11:36:26 閱讀更多
數(shù)據(jù)庫(kù)索引:作用、創(chuàng)建與性能權(quán)衡

數(shù)據(jù)庫(kù)索引:作用、創(chuàng)建與性能權(quán)衡

本文總結(jié)數(shù)據(jù)庫(kù)索引的核心知識(shí)&#xff0c;包括索引的作用、創(chuàng)建方式、索引的自動(dòng)維護(hù)機(jī)制&#xff0c;以及如何在查詢速度與空間/寫(xiě)入開(kāi)銷之間做權(quán)衡。以 MySQL&#xff08;InnoDB / B 樹(shù)索引&#xff09;為主要示例。一、索引的作用 索引本質(zhì)是一種排好序的數(shù)據(jù)結(jié)構(gòu)&#xff…

2026/7/29 11:36:26 閱讀更多
大廠Java面試全攻略:從基礎(chǔ)到分布式系統(tǒng)設(shè)計(jì)

大廠Java面試全攻略:從基礎(chǔ)到分布式系統(tǒng)設(shè)計(jì)

1. 大廠Java面試的典型考察路徑最近幫幾位準(zhǔn)備跳槽的朋友模擬面試&#xff0c;發(fā)現(xiàn)大廠對(duì)Java工程師的考察已經(jīng)形成了一套非常標(biāo)準(zhǔn)的流程。從最基礎(chǔ)的語(yǔ)法特性到分布式系統(tǒng)設(shè)計(jì)&#xff0c;面試官會(huì)像剝洋蔥一樣層層深入。這種考察方式不僅能驗(yàn)證候選人的技術(shù)廣度&#xff0c;更…

2026/7/29 11:36:26 閱讀更多
光學(xué)級(jí)CVD單晶金剛石與天然金剛石在光學(xué)性能上的對(duì)比分析

光學(xué)級(jí)CVD單晶金剛石與天然金剛石在光學(xué)性能上的對(duì)比分析

光學(xué)級(jí)CVD單晶金剛石是通過(guò)化學(xué)氣相沉積法人工合成的單晶金剛石&#xff0c;其光學(xué)性能&#xff08;如透光范圍、折射率均勻性、雜質(zhì)含量&#xff09;與天然金剛石高度相似&#xff0c;但在特定波段&#xff08;如紫外和紅外&#xff09;的透過(guò)率、缺陷密度及批次一致性方面存在…

2026/7/29 11:36:26 閱讀更多
不會(huì)編程,怎么做課程試聽(tīng)小程序

不會(huì)編程,怎么做課程試聽(tīng)小程序

結(jié)論很簡(jiǎn)單&#xff1a;不會(huì)編程也能先做出課程試聽(tīng)小程序&#xff0c;需求要按“家長(zhǎng)填什么、校區(qū)怎么分配、老師看到什么”來(lái)寫(xiě)。只丟一句“做個(gè)招生工具”&#xff0c;生成結(jié)果往往像空殼。我給朋友的少兒圍棋班試做時(shí)&#xff0c;用8條中文需求把首版控制在一小時(shí)內(nèi)。 檢索…

2026/7/29 11:36:26 閱讀更多
C#實(shí)現(xiàn)Windows任務(wù)管理器禁用:注冊(cè)表方案與系統(tǒng)權(quán)限管理實(shí)戰(zhàn)

C#實(shí)現(xiàn)Windows任務(wù)管理器禁用:注冊(cè)表方案與系統(tǒng)權(quán)限管理實(shí)戰(zhàn)

1. 項(xiàng)目概述與核心需求解析最近在做一個(gè)企業(yè)內(nèi)部終端管理的小工具&#xff0c;客戶提了一個(gè)挺有意思的需求&#xff1a;希望在某些特定場(chǎng)景下&#xff0c;能臨時(shí)禁止用戶打開(kāi)Windows任務(wù)管理器。這個(gè)需求聽(tīng)起來(lái)有點(diǎn)“霸道”&#xff0c;但在一些公共電腦、演示環(huán)境或者需要嚴(yán)格…

2026/7/29 11:26:26 閱讀更多
面試官大笑:“一個(gè)任務(wù)拆給 5 個(gè) Subagent 并行跑,不比 1 個(gè)快 5 倍?“我搖頭:“快不了,還可能更慢“

面試官大笑:“一個(gè)任務(wù)拆給 5 個(gè) Subagent 并行跑,不比 1 個(gè)快 5 倍?“我搖頭:“快不了,還可能更慢“

前兩個(gè)月&#xff0c;我在重構(gòu) AlgoMooc 網(wǎng)站過(guò)程中&#xff0c;發(fā)現(xiàn)一個(gè)問(wèn)題&#xff1a;在 Claude Code 里把一個(gè)任務(wù)拆給 5 個(gè) Subagent 并行跑&#xff0c;結(jié)果可能比 1 個(gè) agent 從頭干到尾還慢&#xff1f; 大多數(shù)人的第一反應(yīng)是反過(guò)來(lái)的&#xff1a;活是并行干的&#…

2026/7/29 0:15:24 閱讀更多
# 鴻蒙 HarmonyOS 應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)(第25期)|骰子(Dice Roller)— Unicode 符號(hào)與動(dòng)畫(huà)渲染精講

# 鴻蒙 HarmonyOS 應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)(第25期)|骰子(Dice Roller)— Unicode 符號(hào)與動(dòng)畫(huà)渲染精講

一、應(yīng)用概述 骰子&#xff08;Dice Roller&#xff09; 是一款經(jīng)典的休閑娛樂(lè)應(yīng)用&#xff0c;模擬了真實(shí)擲骰子的過(guò)程。應(yīng)用投擲兩個(gè)骰子&#xff08;六面標(biāo)準(zhǔn)骰&#xff09;&#xff0c;使用 Unicode 骰面符號(hào)直觀展示每個(gè)骰子的點(diǎn)數(shù)&#xff0c;并伴有快速滾動(dòng)的動(dòng)畫(huà)效果?!?/p>

2026/7/29 0:15:24 閱讀更多