[Bug]: litellm stops forwarding model requests

该报错通常发生在 LiteLLM Proxy 网关空闲超过 24 小时后恢复使用时,已过期的临时密钥触发删除流程,产生 404: {'error': 'No keys found'} 异常循环,最终导致代理停止转发模型请求。优先排查密钥过期清理逻辑与删除流程中的异常处理。

快速结论:该报错通常发生在 LiteLLM Proxy 网关空闲超过 24 小时后恢复使用时,已过期的临时密钥触发删除流程,产生 404: {'error': 'No keys found'} 异常循环,最终导致代理停止转发模型请求。优先排查密钥过期清理逻辑与删除流程中的异常处理。

适用环境:LiteLLM 1.97.0(容器化部署,docker compose 方式),Python 3.13(容器内 /app/.venv 路径),使用管理 API 创建/自动删除临时密钥,配合 Claude Code 会话使用。操作系统与 CUDA 环境未在 Issue 中提及。

最快修复方案:暂无确认的一步修复方案。Issue 中报告者通过重启容器暂时解决了问题,但根本原因尚未确定,且维护者表示无法复现,最终关闭了该 Issue。

注意事项:重启容器只是临时措施,问题可能在下次空闲超过 24 小时后再次出现。维护者认为日志中的 404 异常可能只是孤立事件,与停止转发请求之间的因果关系未经证实。建议升级到最新版本并开启 DEBUG 日志观察。

问题场景

用户使用 Docker Compose 部署 LiteLLM Proxy 1.97.0,通过管理 API 在每次 Claude Code 会话前后创建和自动删除临时密钥(24 小时有效期)。网关闲置数天后,用户使用新的临时密钥启动 Claude Code 会话时收到不透明的 “API error”。重启容器后问题消失,日志显示代理陷入无限异常循环。

报错原文

fastapi.exceptions.HTTPException: 404: {'error': 'No keys found'}
litellm.proxy.proxy_server.delete_verification_tokens(): Exception occured - 404: {'error': 'No keys found'}
litellm.proxy.proxy_server.delete_key_fn(): Exception occured - 404: {'error': 'No keys found'}

原因分析

可能原因一:密钥过期清理流程对已过期且已删除的临时密钥执行了“二次删除”。当某个 Claude Code 会话异常终止(例如窗口被强制关闭)时,临时密钥可能未被正常自动删除;24 小时后密钥过期,代理的清理任务尝试删除这些密钥,但密钥已不存在或已被其它流程删除,触发 404 异常。该异常未被正确忽略,导致代理进入异常循环并停止转发请求。

可能原因二:Issue 维护者指出,LiteLLM 本身不会自动删除过期密钥,日志中的 404 可能只是孤立的会话删除缺失密钥,与停止转发请求无直接因果关系。代理停止转发可能是由其它未在日志中体现的问题导致。

环境排查

  • 确认 LiteLLM Proxy 版本是否为 1.97.0,检查当前是否可升级到更高版本(该类型 bug 曾被多次修复)。
  • 检查 Docker Compose 配置中的密钥过期清理参数(如 key_expiry 相关配置),确认是否存在重复删除逻辑。
  • 使用 LITELLM_LOG=DEBUG 环境变量启动代理,获取更详细的调用堆栈,确认是谁在调用 delete_verification_tokens
  • 排查管理 API 的密钥创建/删除流程,确认会话异常终止时密钥清理机制是否可靠。
  • 检查容器日志中是否存在其他异常或错误,排除代理停止转发是由其它原因导致。

解决步骤

  1. 立即恢复服务:重启 LiteLLM 容器(docker compose restartdocker compose down && docker compose up -d),确认请求转发恢复正常。
  2. 升级 LiteLLM 到最新版本,避免已在后续版本修复的密钥管理类 bug。
  3. LITELLM_LOG=DEBUG 模式启动代理,观察 delete_verification_tokens 的调用来源与触发条件。
  4. 检查密钥清理相关配置,确保不会对已不存在的密钥执行重复删除;如果可配置,建议增加对 404 异常的安全忽略处理。
  5. 优化临时密钥的生命周期管理:确保会话异常终止时(如进程被 kill),密钥能被及时清理或标记为过期,避免遗留过期密钥。
  6. 长期观察:如果问题可复现(例如模拟空闲 24 小时后恢复使用),可在 DEBUG 日志下完整记录事件序列,提交新的 Issue 附上详细日志。

验证方法

执行上述步骤后,使用 Claude Code 会话并正常调用模型请求,确认不再出现 “API error”。同时检查代理日志中是否仍有 404: No keys found 异常,且确认该异常不会导致代理停止响应。可尝试模拟“空闲 24 小时后再使用”的场景,验证问题是否真的由密钥过期触发。

参考来源

BerriAI/litellm #38731

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 21226

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注