一句话定义:SLA(Service Level Agreement,服务等级协议)是对客户的外部承诺;SLO(Service Level Objective,服务等级目标)是团队内部给自己定的目标;错误预算(error budget)就是 1 减去 SLO 之后剩下的「允许出错额度」。
打个比方。外卖平台承诺 30 分钟送达,超时赔券——这是 SLA,写进条款、必须兑现。厨房内部把目标定在 25 分钟出餐——这是 SLO,多出的 5 分钟是缓冲。一个月允许 20 单超时,这 20 单就是错误预算:没用完,可以放心上新品;用完了,就得先停下来修流程。
| 概念 | 面向谁 | 性质 | 超了会怎样 |
|---|---|---|---|
| SLA | 客户 | 对外承诺 | 赔付、流失、法务 |
| SLO | 团队 | 内部目标 | 触发告警、冻结上线 |
| 错误预算 | 团队 | 可花掉的额度 | 决定「继续迭代还是先修稳定」 |
【AI 产品里的 99.9% 说了什么】
多数 AI 产品的「99.9% 可用」,承诺的是「请求在约定时间内返回了一个响应」,而不是「答案是对的」。模型可以非常流畅地答错——这叫软失败:监控面板全绿,用户已经走了。所以 AI 产品的 SLO 通常要拆成两层:一层是系统可用性(延迟、报错率),可以按请求统计;一层是输出质量(准确率、拒答率、有害内容拦截率),往往要靠人工抽检或离线评测,周期长得多。
【为什么不该由模型团队单方面定】
一次体验失败,可能是检索没召回、提示词被改、上游模型供应商抖动、GPU 排队、前端超时设置太短,甚至用户输入本身超纲。模型团队只握着其中一环。它单独拍一个 99.9%,等于替整条链路签了字,出事时却既没有权限也没有资源去修。更合理的做法是把 SLO 当成一份跨团队合同:产品定「什么算失败」,工程定「怎么测」,模型团队说清「能力边界在哪」,数字一起定。对外 SLA 还要再留一层缓冲,因为它背后是赔付条款。
【对从业者和普通人的意义】
从业者:先定义「失败」,再谈比率。说不清失败定义的 99.9%,只是安慰剂。错误预算不是免罪金牌,而是决策工具——预算充足就快跑,耗尽就冻结上线、转向稳定性。
普通人:看到「99.9% 可用」,可以追问一句——这 0.1% 里,包不包括「答错了」?
各家的统计口径与赔付规则差异很大,具体以官方页面为准。
