![[Bug]: /team/member_update does not support setting budget_duration on individual member budgets](https://www.chat-gpts.plus/wp-content/uploads/2026/06/25509-cb8f8d8a.jpg)
[Bug]: /team/member_update does not support setting budget_duration on individual member budgets
快速结论:该问题发生在使用 LiteLLM Proxy 的 /team/member_update 接口为团队成员设置独立预算时,budget_duration 参数缺失,导致成员预算变为“终身上限”而非“定期重置额度”。该问题已由 PR #29717 修复,升级到相应版本即可解决。
问题场景
用户在运行 LiteLLM Proxy 时,通过 /team/member_update 为已有团队成员更新预算额度(max_budget_in_team),期望该预算能够像团队预算(team_member_budget)一样按 budget_duration(如“30d”)周期自动重置。
报错原文
# Member's budget after member_update — note budget_duration is null
{
"user_id": "user-A",
"budget_id": "59db2fc6-96c9-40e0-94e5-c5bebb572084",
"litellm_budget_table": {
"budget_id": "59db2fc6-96c9-40e0-94e5-c5bebb572084",
"soft_budget": null,
"max_budget": 10.0,
"max_parallel_requests": null,
"tpm_limit": null,
"rpm_limit": null,
"model_max_budget": null,
"budget_duration": null
}
}
原因分析
根本原因是 /team/member_update 端点底层的 _upsert_budget_and_membership 函数在设计时只接收 max_budget、tpm_limit 和 rpm_limit 参数,没有为 budget_duration 提供参数传递路径。因此通过 member_update 创建的成员预算始终为 budget_duration: null,不会像从团队继承预算的成员那样自动拥有重置周期。
注意:该问题与 Issue #25495(组织级预算重置问题)不同,这里是 API 参数缺失,而非后台重置任务问题。
环境排查
- LiteLLM 版本:问题在 v1.83.3.rc.1 及之前版本中存在,已在
litellm_internal_staging分支修复。 - 确认后端数据库类型(如 Postgres),不同数据库参数兼容性需验证。
解决步骤
该问题已在 PR #29717 中修复,修复后的关键变化包括:
/team/member_update接口现在支持budget_duration参数,传入后会被持久化到成员的独立预算表(litellm_budget_table),并自动计算budget_reset_at时间。_upsert_budget_and_membership函数在更新/创建预算时均会写入budget_duration。- 当成员仍指向团队共享默认预算时,clone-on-write 路径会继承团队的
budget_duration。 - 请求/响应模型(
TeamMemberUpdateRequest/TeamMemberUpdateResponse)均已包含该字段,无效的 duration 值会返回 400 错误。
修复后可优先尝试以下操作:
- 升级 LiteLLM 到包含 PR #29717 的版本(或从
litellm_internal_staging分支构建)。 - 通过
/team/member_update为成员设置budget_duration,例如:
curl -X POST http://localhost:4000/team/member_update -H "Authorization: Bearer sk-admin" -H "Content-Type: application/json" -d '{"team_id": "1", "user_id": "user-A", "max_budget_in_team": 10.0, "budget_duration": "30d"}' - 通过
GET /team/info?team_id=1验证成员的budget_duration和budget_reset_at是否正确设置。
验证方法
调用 GET /team/info?team_id=1 查看成员预算详情,确认 litellm_budget_table 中:
budget_duration已显示为期望值(如“30d”)。budget_reset_at已计算并显示(例如 “2026-07-01T00:00:00Z”)。
示例验证输出:
# member budget after member_update (GET /team/info)
user : lit4012-user-a
max_budget : 10.0
budget_duration: 30d
budget_reset_at: 2026-07-01T00:00:00Z
参考来源
修复 PR:PR #29717


![[Feature Request]: Restart Failed Subtasks Instead of Restarting Entire Process](https://www.chat-gpts.plus/wp-content/uploads/2026/06/8682-f9e725d4-768x403.jpg)
