学生模型上线以后,教师回退不是在代码末尾补一句"失败就换大模型"。生产系统需要先分清失败发生在哪里,再决定重试学生、升级教师、转人工还是直接终止。若所有异常都走同一条回退路径,一次业务任务可能连续调用多个模型,既增加成本,也把原始错误藏在最后一次成功响应后面。
我对照了Amazon Bedrock的提示路由文档、RouteLLM论文和公开推理架构。它们采用的实现方式并不相同,却共同指向一件事。路由必须在目标任务上评测,选择过程需要留下记录,质量、延迟和成本要一起看。下面给出的状态与字段是一套客户端建议设计,不是任何平台默认提供的完整功能。
先把错误分成能重试和不能重试
网络超时、限流和临时服务错误,可能适合在原模型上有限重试。响应已经返回却无法解析,需要检查是截断、结构约束还是解析器版本出了问题。答案结构正确但业务结论错误,再调用一次同一个学生未必有效。权限越界、敏感操作和高风险判断则不该靠随机重试解决。
因此,任务至少要有网络错误、服务错误、结构错误、质量失败、策略拦截和人工升级几类终态。分类不必一次设计得很复杂,关键是后续动作不同。临时服务错误可以指数退避,结构错误可以换一次约束提示,质量失败可以升级教师,高风险请求则直接进入受控流程。
重试上限应由任务状态控制,不能只写在进程内存里。程序重启以后,内存计数会丢失,同一个任务可能重新获得完整重试次数。每次尝试开始前,数据库原子增加计数,再保存模型、提示版本、开始时间、响应状态和可获得的请求标识。进程异常退出,恢复程序仍然知道它已经试过几次。
一个可恢复的回退状态机
任务可以从待处理进入学生运行。学生返回后先过结构校验,再过业务验收。结构或业务均通过,任务进入成功。临时异常且次数未耗尽,回到等待重试。学生无法满足质量门槛,进入待教师处理。教师仍失败时,根据任务风险进入人工、拒绝或失败终态。
状态转换要带条件。例如,学生超时可以重试一次,学生答案缺少必填字段可以修复提示后再试,关键事实校验失败直接升级。教师回退也要有次数上限。若教师仍不能解决,系统应停止继续花钱,并保留原始响应供人判断。
多进程领取任务时,还需记录运行实例和租约时间。看到"运行中"就无条件改回待处理,会让慢请求被另一个进程重复领取。只有租约过期且原运行实例失去心跳,恢复程序才可以重新分配。这个细节和模型能力无关,却经常制造重复调用。
每次尝试要保存哪些字段
任务表负责最终状态,尝试表负责每一次调用。任务表可保存任务编号、数据版本、风险级别、允许的最大尝试次数、最终模型和最终判定。尝试表可保存尝试序号、模型、提示与生成配置哈希、开始结束时间、响应状态、错误分类、输入输出用量、请求标识和原始响应位置。
是否产生费用要依据实际调用日志和结算记录,不能用HTTP状态码直接推断。部分请求可能在上游已经处理后才中断,也可能根本没有到达模型服务。客户端应保存事实,再做账单核对。若平台只能提供调用量、消耗和日志,就不要推断它自动拥有企业内部的任务状态、质量标签和人工工时。
回退决策也应该留字段。系统为什么从学生升级到教师,是长度超限、结构失败、规则命中,还是外部评测器给出了低分。缺少原因,团队只能看到教师用量变高,无法知道应改学生、提示还是路由规则。
别把教师回退当成免费保险
一条任务先调用学生,再调用校验模型,最后调用教师,完整成本可能高于直接使用教师。回退路径应和两个基线比较。第一个基线是全量教师,第二个基线是全量学生加人工抽检。比较单位是最终合格任务,成本中包含所有模型尝试、检索、工具、人工和基础设施分摊。
质量同样需要分层。普通格式错误可以进入总体失败率,权限越界或关键数字错误应单独计数。大量简单任务成功,不能抵消少量严重错误。路由阈值要在独立测试集上选择,历史故障进入回归集,最终验收使用未参与调参的新样本。
路由还会增加延迟。学生先试再回退,复杂任务需要等待两段推理。已知属于高风险或长上下文的请求可以直接交给教师,避免无意义的学生尝试。路由规则要在质量边界内减少完整任务成本。学生能够稳定完成哪些任务,就获得哪些流量。
多模型调用怎样核对
项目同时试验多个教师和学生时,可以使用统一调用入口减少接口差异。147AI可作为候选,按环境或实验建立不同API Key,再结合调用量、消耗和日志核对模型尝试。具体模型、价格和接口方式以当前页面为准。
这类调用记录只能覆盖接入层。任务编号、风险等级、路由原因、验收结果和人工去向仍需企业自己的数据库保存。把两侧通过请求标识或内部任务编号关联起来,才能复盘一次回退的完整过程。对严格服务等级、敏感数据和特殊合规场景,还需单独核对合同与数据处理边界。
上线前做三种故障演练
第一种演练让学生返回结构不完整的内容,检查系统是否进入结构修复,而不是无限重试。第二种演练模拟学生服务超时,确认次数、退避和租约恢复都有效。第三种演练让教师回退也失败,检查任务能否停在明确终态,并保留每次响应。
随后用一批真实分布的脱敏请求回放。记录学生直出率、教师升级率、严重错误、每个合格任务的尝试次数和延迟分位数。教师升级率突然升高时,先按任务类型、版本和错误原因切分,再决定补数据或改阈值。
教师回退给学生模型留出了上线空间,也会让系统多一层复杂度。状态、次数、原因和最终结果都能追溯,回退才是安全机制。只剩一句异常捕获时,它更像一张不断追加调用的账单。
参考资料