快速结论:该报错“LLM classifier failed – 'NoneType' object has no attribute 'update'”通常出现在 LiteLLM Proxy v1.93.0 及更早版本中,使用 LLM classifier 动态路由(classifier_type: llm)时触发。优先升级到 v1.94.0-dev.2 或更高版本。
适用环境:LiteLLM Proxy v1.93.0(用户通过 Docker 部署,并启用了 store_model_in_db: true、Postgres 后端)。
最快修复方案:将 LiteLLM 升级至 v1.94.0-dev.2 或更高版本。该修复已在 commit fac43df9b953… 中合并,最早携带该修复的 tag 为 v1.94.0-dev.2。
注意事项:如果升级后问题依旧,需进一步排查 Postgres/Docker 环境差异,或提供 --detailed_debug 完整日志。当前仅在 v1.94.0-dev.2 上验证通过。
问题场景
用户在 LiteLLM Proxy 中配置了 complexity_router,设定 classifier_type: llm 并指定 classifier_llm_config(使用 anthropic/claude-haiku-4-5-20251001 模型)。当代理收到请求尝试调用 LLM classifier 进行分类时,日志出现 LLM classifier failed 警告,并回退到 heuristic scoring,导致配置的 tier 分配未生效。
报错原文
LiteLLM Router:WARNING: complexity_router.py:390 - ComplexityRouter: LLM classifier failed ('NoneType' object has no attribute 'update'), falling back to heuristic scoring
原因分析
函数 _classifier_call_metadata 在接收 metadata 参数为 None 时,直接返回了 None。而下游的 acompletion 调用将该返回值当作 dict 处理(调用 .update()),导致 'NoneType' object has no attribute 'update' 异常。aclassify 捕获了此异常并降级为 heuristic 评分,因此 LLM classifier 实际上从未被真正调用。修复已在 v1.94.0-dev.2 中实施:将 _classifier_call_metadata 的返回值从 metadata(可能为 None)改为空字典 {}。
环境排查
- 确认 LiteLLM 版本是否为 v1.93.0 或更早版本
- 检查是否启用了
store_model_in_db: true并连接 Postgres 数据库(用户配置中包含此选项,但尚未确认是否为触发条件) - 验证
classifier_llc_config.model是否指定了一个有效的 LLM 端点(建议使用model_list中已注册的model_name或完整的 provider/model 字符串)
解决步骤
- 升级 LiteLLM 到 v1.94.0-dev.2 或更高版本(例如
docker pull berriai/litellm:v1.94.0-dev.2或通过 pip 安装最新预发布版) - 重启 LiteLLM Proxy 服务
- 发送测试请求到
smart-router路径(如/chat/completions或/responses)
验证方法
观察代理日志,确认不再出现 LLM classifier failed 警告。如果配置正确,应看到类似 signals=['llm-classifier:COMPLEX'] 的成功分类日志。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


