`POST /customer/block` blocks the customer, then returns HTTP 500

这是 LiteLLM Proxy(v1.104.0,PostgreSQL 后端)调用 POST /customer/block 的响应构建缺陷:数据库里的客户已成功置为 blocked,但在序列化响应时抛出 AttributeError ,导致客户端看到 HTTP 500。排查重点是“状态是否已实际

快速结论:这是 LiteLLM Proxy(v1.104.0,PostgreSQL 后端)调用 POST /customer/block 的响应构建缺陷:数据库里的客户已成功置为 blocked,但在序列化响应时抛出 AttributeError,导致客户端看到 HTTP 500。排查重点是“状态是否已实际变更”,而不是先怀疑写库失败。

适用环境:Issue 中确认的环境为 LiteLLM v1.104.0 Proxy,使用 PostgreSQL 作为数据库后端;其余 Python、CUDA、显卡等信息 Issue 未提供。

最快修复方案:暂无确认的一步修复方案。Issue 中仅确认上游修复 PR 已合并,未给出具体版本号;在无法升级的情况下,报告者验证可用的替代方案是改用 POST /customer/update 并传入 {"user_id": "<customer>", "blocked": true}。

注意事项:该替代接口只作用于单个客户,与批量 user_ids 的调用方式不同,需要逐个调用;另外,由于写库已成功但接口返回 500,客户端若按失败逻辑重试,可能对已经 blocked 的客户重复操作,建议先查询客户状态再决定是否重试。

问题场景

用户在 LiteLLM Proxy(v1.104.0,PostgreSQL)上调用管理接口 POST /customer/block,请求体为 {"user_ids": ["<customer>"]},意图批量封禁指定客户。实际表现是:客户在数据库中的 blocked 字段已被置为 true,但接口随后返回 HTTP 500,与 API 文档描述的“返回 HTTP 200 和已封禁客户列表”不一致。

报错原文

POST /customer/block blocks the customer, then returns HTTP 500
AttributeError in litellm/models/end_user.py while building the response

原因分析

根据 Issue 描述,封禁动作本身已经落库成功,失败发生在“构建响应”阶段:litellm/models/end_user.py 在组装返回结果时触发了 AttributeError。也就是说,问题出在响应序列化逻辑,而非数据库写入逻辑,这解释了“操作成功但客户端收到错误”的现象。具体是哪个对象属性缺失或取值失败,Issue 未展开,需以上游修复 PR 的改动为准。

环境排查

  • 确认 LiteLLM Proxy 版本是否为 v1.104.0 或同期的受影响版本。
  • 确认数据库后端为 PostgreSQL,并检查 customer 表的 blocked 字段在调用后的实际值。
  • 确认 litellm/models/end_user.py 是否已被后续版本覆盖,避免继续使用含缺陷的代码。
  • 检查 Proxy 日志中是否记录完整的 AttributeError 堆栈,用于定位具体属性。

解决步骤

  1. 先核对客户状态:查询数据库中该客户的 blocked 字段,确认是否已为 true,判断是否为“写入成功、响应失败”。
  2. 可优先尝试:临时改用 POST /customer/update,请求体为 {"user_id": "<customer>", "blocked": true},该方式已在 Issue 中确认可用;若有多个客户,需逐个调用。
  3. 关注上游修复 PR 合入后的 LiteLLM 发布版本,升级到包含该修复的版本后再恢复使用 POST /customer/block。
  4. 若升级后仍出现 500,抓取完整堆栈并检查 end_user.py 中的响应构建逻辑,作为新的问题上报。

验证方法

调用封禁接口后,确认返回状态码为 200 并包含被封禁客户信息;同时查询数据库确认 blocked 为 true,并检查 Proxy 日志中不再出现 AttributeError。使用 /customer/update 替代时,验证该客户已处于 blocked 状态、后续请求按预期被拦截。

参考来源

BerriAI/litellm #49881

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 33136

发表回复

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