快速结论:当请求体(JSON)中携带 user_config 并走 _route_user_config_request 分支时,临时构造的 Router 会在返回的协程真正 await 之前就被 discard,导致该 Router 注册的 callbacks 在调用执行期间已经失效。优先排查 user_config 路由下回调/日志/计量未触发的现象,并确认 LiteLLM 版本是否已包含修复。
适用环境:Issue 中确认:LiteLLM 1.106.0,以及上游 main 提交 d8c0e2c7153d82234ec46f0231bf9b9714e7d52a(2026-10-08 UTC 验证);部署方式为 Docker。Python、CUDA、显卡等信息 Issue 未提供。
最快修复方案:升级到包含 #45795 修复的 LiteLLM 版本。Issue 中称已在当前 main 上验证请求计量、限流和 router 驱逐期间的 callbacks,45 项聚焦检查全部通过。
注意事项:Issue 给出的主配置示例使用 openai/gpt-6.1-sol,该模型名来自原始报告,未说明其可用性;修复验证是在 main 上进行,具体发布版本号需以实际发行说明为准,不要凭 Issue 推断。
问题场景
在 LiteLLM 中发送 chat completion 请求,请求 JSON 里除了常规字段外还带有 user_config,且其中包含自己的 router model_list。请求进入 route_llm_request 后调用 _route_user_config_request,该分支会调用 Router.acompletion 构造一个临时 Router,然后先执行 discard,再把协程返回给调用方 await。结果是调用方的协程尚未开始或尚未完成时,这个临时 Router 已从 litellm.success_callback 和 litellm._async_success_callback 中移除,依赖该 Router 的回调在响应阶段看不到结果。
报错原文
[Bug]: user_config routing discards the Router before the call runs
原因分析
可能原因:_route_user_config_request 中 Router 的生命周期管理顺序有误。Router.acompletion 返回的是待 await 的协程,但 discard 在协程被 await 之前就已执行,导致 Router 的 callbacks 提前注销。按预期,discard 应在协程执行完毕后再调用,这样 Router 持有的回调才能在整个操作生命周期内保持有效,并在结束后清理。
环境排查
- 确认 LiteLLM 版本是否为 1.106.0,或是否为上游 main 提交
d8c0e2c7153d82234ec46f0231bf9b9714e7d52a及相近代码。 - 确认部署方式是否为 Docker,并检查镜像内实际安装的 LiteLLM 版本,避免只改了源码但容器内未生效。
- 确认请求 JSON 中是否确实包含
user_config,以及其中是否自带model_list。 - 检查是否依赖
litellm.success_callback/litellm._async_success_callback中的回调完成日志、计量或其他后处理。 - 确认是否已合入 #45795;若仍在旧版本,可优先尝试升级。
解决步骤
- 先复现并定位:发送带
user_config(含 routermodel_list)的 chat completion 请求,确认走了_route_user_config_request分支。 - 检查返回协程被 await 之前,临时 Router 是否已从
litellm.success_callback与litellm._async_success_callback中移除,确认符合 Issue 描述。 - 将 LiteLLM 升级到包含 #45795 修复的版本;如在 Docker 中部署,重新构建或拉取镜像并确认容器内版本已更新。
- 回归验证 user_config 路由下的请求计量、限流以及 callbacks 是否正常执行,重点看 Router 驱逐(eviction)期间回调是否仍能收到响应。
- 若升级后仍异常,检查是否有自定义 callback 或外部配置覆盖了成功回调列表,并对照修复提交确认代码路径。
验证方法
使用带 user_config 的 chat completion 请求进行验证:调用完成后,确认该临时 Router 的 callbacks 在响应阶段仍然触发,且随后被正常清理;同时检查请求计量与限流结果是否与实际调用一致。Issue 评论摘要提到在当前 main 上以 45 项聚焦检查覆盖了请求计量、限流和 router 驱逐期间的 callbacks,可参考该验证范围设计回归用例。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug]: Proxy keeps upstream LLM connection open after a streaming client disconnects; backend keeps generating or stays blocked](https://www.chat-gpts.plus/wp-content/uploads/2026/10/30244-70d90a5d-768x403.jpg)
![[Bug]: Responses API forwards client_metadata to custom_openai chat completions](https://www.chat-gpts.plus/wp-content/uploads/2026/10/29834-c9b4a778-768x403.jpg)
