第 5 / 22 篇

第 4 章:让路由决策可以解释,也可以回退

一个路由器返回“选择上游 B”很容易。维护者更需要知道:A 为什么没有入选,B 为什么排在 C 前面,策略升级是否改变了某类租户的结果。可解释性来自保留决策结构,而不是把完整提示词复制进日志。

4.1 从固定优先级开始

最初可以采用经过资格过滤的固定优先级。它容易复现,也便于建立基线。等到有足够的观测数据,再考虑按延迟、成本或质量分流。复杂算法无法补救缺失的能力清单和错误的延迟指标。

对于流式请求,“更快”至少包含首个有意义事件到达时间和完成时间。上游很快返回响应头,却长时间没有内容,不一定改善用户体验。排序指标应与实际目标一致,并写清窗口和样本范围。

4.2 一次决策应留下哪些信息

推荐保留请求标识、租户的内部标识、策略版本、清单版本、约束类别、候选排除原因、选中上游和尝试编号。排除原因可以是 capability_missing、tenant_denied 或 capacity_unavailable 这类受控枚举。

提示正文、密钥和工具凭证不属于默认决策日志。确需排查内容问题时,应使用经过授权、脱敏和保留期限约束的诊断渠道。

路由记录有时比成功回答更能解释问题。比如主上游始终没有收到流量,可能并不是熔断器坏了,而是新版本将它的 text 能力误写为未知,导致资格阶段提前排除。

4.3 灰度要同时考虑质量与资源

将 5% 请求交给新模型,不能只观察平均延迟。还要检查错误率、完整结束率、用量缺失率、预算占用和目标任务的质量。若新模型偶尔生成很长的输出,低比例流量也可能占据很大比例的资源。

影子请求会产生额外调用和数据传输,应有明确授权和预算。对于包含工具或写操作的任务,影子执行还可能产生业务副作用;只复制 HTTP 请求并不是一个安全的验证方案。

4.4 回退策略与恢复动作分开

配置回退表示后续请求重新使用旧策略,不会自动撤销已经生成的内容,也不会抹去已经发生的调用成本。进行中的请求应该继续持有原快照,或按明确规则终止。两种策略都应在变更记录中说明。

本地实验的固定候选与能力判断用于验证资格和尝试边界。它没有实现动态控制平面、质量评分或灰度平台。你可以在课程项目中增加这些功能,但应先保存策略版本并写出回归用例,再让策略自动更新。

练习。 新模型的平均延迟下降,但一半流缺少最终用量事件。是否应该扩大灰度?请给出至少三个待检查指标,以及一个可以回退的客观触发条件。