跳至主要内容

事故报告:主分支上的无效模型成本映射

Ishaan Jaffer
CTO,LiteLLM

日期:2026年1月27日 持续时间:~20分钟 严重程度:状态:已解决

摘要

一个格式错误的JSON条目被合并到main分支 (562f0a0) 。这导致LiteLLM无声地回退到模型成本映射的陈旧本地副本。使用旧版本软件包的用户仅丢失了对新模型的成本跟踪(例如 azure/gpt-5.2)。没有LLM调用被阻止。

  • LLM调用和代理路由:无影响。
  • 成本跟踪:对本地备份中不存在的新模型有影响。旧模型不受影响。事件持续了约20分钟,直到提交被回滚。

背景

模型成本映射(model cost map)不在请求路径中。它是在 LLM 响应返回后,在 try/catch 块内部用于计算费用的。条目缺失绝不会阻塞调用。

两条路径都会向调用方返回响应。当成本映射查找失败时,唯一的区别是该请求的 cost=0


根本原因

LiteLLM 在导入时会从 GitHub main 分支获取模型成本映射。如果获取失败,它会回退到包中自带的本地备份。在此次事故之前,该回退过程是完全静默的——没有任何警告日志。

一位贡献者的 PR 引入了一个多余的 { 括号,导致 JSON 无效。远程获取因 JSONDecodeError 而失败,触发了静默回退。使用旧版本软件包的用户因为备份文件中缺少较新的模型,从而受到影响。

时间轴

  1. 格式错误的 JSON 被合并到 main 分支
  2. LiteLLM 安装在下一次导入时回退到本地备份
  3. 用户报告较新模型出现 "This model isn't mapped yet"(该模型尚未映射) 错误
  4. 识别并回滚错误提交(耗时约 20 分钟)

补救措施

#操作状态代码
1model_prices_and_context_window.json 进行 CI 验证✅ 已完成test-model-map.yaml
2回退到本地备份时记录警告日志✅ 已完成get_model_cost_map.py#L57-L68
3带有完整性验证辅助功能的 GetModelCostMap✅ 已完成get_model_cost_map.py#L24-L149
4韧性测试套件(错误的托管映射、回退、补全)✅ 已完成test_model_cost_map_resilience.py#L150-L291
5测试备份模型成本映射始终存在且包含常用模型✅ 已完成test_model_cost_map_resilience.py#L213-L228

要求在导入时零外部依赖的企业可以设置 LITELLM_LOCAL_MODEL_COST_MAP=True,以完全跳过 GitHub 获取操作。


对外部资源的其他依赖

依赖项不可用时的影响回退方案
模型成本映射 (GitHub)较新模型的成本跟踪本地备份(现已包含警告)
JWT 公钥 (IDP/SSO)身份验证失败
OIDC UserInfo (IDP/SSO)身份验证失败
HuggingFace 模型 APIHF 提供程序调用失败
Ollama 标签 (localhost)Ollama 模型列表过期静态列表
🚅
LiteLLM 企业版
SSO/SAML、审计日志、支出跟踪、多团队管理和护栏 —— 专为生产环境构建。
了解更多 →