:智能体多模型路由与 LLM 网关工程——路由、降级、成本路由与一致性)
智能体面试准备六十四智能体多模型路由与 LLM 网关工程——路由、降级、成本路由与一致性引言前面五十四讲了大模型推理成本与吞吐调优五十七讲了多模态评测。但当一个智能体系统要同时服务很多种任务——简单分类、长文档摘要、代码生成、多模态看图、复杂推理——把所有请求都丢给同一个旗舰模型既不经济也不可能旗舰模型吞吐有限、还贵。真实生产是一座模型花园小模型便宜快、大模型贵但强、专用模型embedding、rerank、视觉各管一摊。把这些模型统一挡在一层LLM 网关后面按请求特征路由是工程上的标准答案。本文讲路由策略、降级容错、成本路由、多模型一致性含架构与代码。结尾给速答。一、为什么需要 LLM 网关无网关(反模式) 有网关 Agent --直接调-- GPT-4 Agent --调-- 网关 --路由-- 小/中/大模型 Agent --直接调-- 自建7B |--降级/重试/限流 Agent --直接调-- 视觉模型 |--成本/质量统计 每个调用点硬编码模型, 难治理 统一治理: 路由/观测/配额/安全网关把用哪个模型从业务代码里解耦出来。好处① 换模型不碰业务② 统一限流/配额/审计呼应六十/六十一③ 成本可路由便宜任务别用贵模型④ 故障可降级旗舰挂了切备用。二、网关分层架构LLM 网关架构 ------------------------------ 请求 - [接入层] -| 鉴权/限流/租户配额 | | | | | [路由层] 按特征选 model | | - 任务类型 | | - 长度/复杂度启发式 | | - 用户档位(SLA) | | - 实时成本/负载 | | | | | [执行层] model 池 | | 小模型 / 中模型 / 大模型 / 视觉| | 每个带 降级候选 重试 | | | | | [观测层] 成本/质量/延迟/命中 | ------------------------------关键设计路由层是纯函数输入特征 → 输出 model 列表含主选降级序执行层负责按序尝试两者解耦便于 A/B 不同路由策略。三、路由策略从规则到学习3.1 规则路由起步必做路由规则(示例) 任务类型分类/抽取 - 小模型(7B), 快且够 任务类型摘要 - 中模型(14B) 任务类型复杂推理/代码 - 大模型 输入长度8k - 支持长上下文模型 含图像 - 视觉模型 用户SLA高优 - 直接大模型规则路由可解释、好调试覆盖 80% 场景。缺点靠人写规则难以精细。3.2 学习路由Router / 级联更进阶训一个小 router输入任务描述长度历史难度输出模型选择或先小后大的级联决策。代表思路用小模型能答对就用小模型答不上再升级的级联cascade用校验器判断小模型输出是否可信。级联路由 query - 小模型 - 校验器(答案置信?) --高-- 返回(省成本) --低-- 中模型 - 校验 - 低 - 大模型3.3 成本路由把预算作为路由维度给每次调用一个 cost budget按预期成本 质量达标选最便宜够用的模型。呼应五十四三本账。四、代码最小 LLM 网关import time, random MODELS { small: {endpoint: http://7b:8000, cost: 1, ok: True}, mid: {endpoint: http://14b:8000, cost: 3, ok: True}, large: {endpoint: http://72b:8000, cost: 10,ok: True}, } def route(req): # 规则路由: 返回 [主选, 降级1, 降级2] if req.get(has_image): return [vision, large] if req[task] in (classify, extract): return [small, mid, large] if req[task] in (reason, code): return [large, mid] if req[len] and req[len] 8000: return [longctx, large] return [mid, small, large] def call_model(name, req): m MODELS.get(name) if not m or not m[ok]: raise RuntimeError(fmodel {name} unavailable) # 真实: POST m[endpoint], 这里占位 return f[{name}] ans def gateway(req, budgetNone): plan route(req) last_err None for name in plan: if budget is not None and MODELS[name][cost] budget: continue try: t0 time.time() ans call_model(name, req) log(req, name, time.time()-t0) # 观测 return ans except Exception as e: last_err e continue # 降级到下一个 raise last_err or RuntimeError(all models failed)降级顺序很重要主选失败后按代价递增、能力递减的顺序试保证最终能出结果同时记录降级触发率做看板降级率突增主模型不健康。五、降级与容错故障场景 网关应对 旗舰模型 503 降级到次选; 次选也挂-排队/限流返回 429 某模型延迟飙高 超时(如 8s)切下一个; 标记模型 unhealthy 临时摘流 配额耗尽(云API) 切到自建模型; 或返回降级答案提示 单模型结果质量差 级联: 校验不过升级模型要点① 每个模型有 timeout 不健康计数连续失败临时摘流circuit breaker② 降级要可观测不能悄悄用差模型还以为是旗舰③ 对外 SLA 高的请求可以双发取快 hedging用一点成本换尾延迟。六、多模型一致性路由到不同模型最头疼的是同一问题不同模型答案风格/结论不一致尤其当一次会话里前半用大模型、降级用小模型。治理输出契约化关键字段用 schema/JSON 约束模型只填槽位风格差异被结构吸收。系统提示统一所有模型共享同一份 instruction 骨架仅能力不同。关键决策锁模型涉及最终对外结论的步骤锁死大模型不降级只有内部中间步骤允许降级。一致性评测定期用 Golden Set 跑各模型监控答案一致性分布呼应五十六回归门禁。七、成本与质量观测网关必看指标 成本: 每请求成本 / 路由分布(多少走了小模型) / 预算命中率 质量: 级联升级率 / 小模型置信通过率 / 端到端任务成功率 稳定: 降级触发率 / 模型不健康次数 / P99 延迟路由策略优化本质是在质量达标前提下把成本压最低是持续调参过程。常见目标在不掉任务成功率的前提下把小模型承载比例从 30% 提到 60%。八、与六十一可观测、五十四成本的衔接网关是成本与观测的天然采集点每一次路由选择、每一次降级、每一分钱都在这层发生。把网关指标接进六十一的可观测面板、把成本路由接进五十四的三本账整套省钱且稳的闭环就通了。面试速答问为什么要 LLM 网关答解耦用哪个模型统一路由/降级/限流/配额/审计/成本统计换模型不碰业务故障可降级。问级联路由cascade是什么答先用小模型校验器判可信就返回不可信升级中/大模型。在质量达标前提下降成本。问多模型一致性怎么保证答输出契约化(schema)、统一 system 提示、关键结论锁大模型不降级、Golden Set 一致性评测。高频追问清单规则路由和学习路由分别适用什么阶段级联路由的校验器怎么设计才不会小模型自信地错降级顺序怎么排为什么按代价递增circuit breaker 在模型网关怎么实现成本路由的 budget 怎么定和 SLA 怎么权衡hedging双发取快什么时候用、代价多大多模型答案不一致生产怎么兜底网关怎么做租户级配额与限流路由策略怎么 A/B 评估效果视觉模型怎么并入同一网关路由