Merge pull request #25838 from BerriAI/litellm_fix-virtual-key-projected-spend-alert

fix(proxy): fix virtual key projected-spend soft budget alerts
This commit is contained in:
ryan-crabbe-berri 2026-04-15 22:22:33 -07:00 • committed by GitHub
commit 2dd060b4e4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 11 deletions

View file

@ -2,6 +2,16 @@ import Image from '@theme/IdealImage';
# Team Soft Budget Alerts
:::info
✨ This is an Enterprise feature. Email budget alerts require an enterprise license.
[Enterprise Pricing](https://www.litellm.ai/#pricing)
[Get free 7-day trial key](https://www.litellm.ai/enterprise#trial)
:::
Set a soft budget on a team and get email alerts when spending crosses the threshold — without blocking any requests.
## Overview

View file

@ -1917,26 +1917,20 @@ async def update_cache( # noqa: PLR0915
## CHECK IF USER PROJECTED SPEND > SOFT LIMIT
if (
existing_spend_obj.soft_budget_cooldown is False
and existing_spend_obj.litellm_budget_table is not None
and existing_spend_obj.soft_budget is not None
and (
_is_projected_spend_over_limit(
current_spend=new_spend,
soft_budget_limit=existing_spend_obj.litellm_budget_table[
"soft_budget"
],
soft_budget_limit=existing_spend_obj.soft_budget,
)
is True
)
):
projected_spend, projected_exceeded_date = _get_projected_spend_over_limit(
current_spend=new_spend,
soft_budget_limit=existing_spend_obj.litellm_budget_table.get(
"soft_budget", None
),
soft_budget_limit=existing_spend_obj.soft_budget,
) # type: ignore
soft_limit = existing_spend_obj.litellm_budget_table.get(
"soft_budget", float("inf")
)
soft_limit = existing_spend_obj.soft_budget
call_info = CallInfo(
token=existing_spend_obj.token or "",
spend=new_spend,
@ -1944,7 +1938,7 @@ async def update_cache( # noqa: PLR0915
max_budget=soft_limit,
user_id=existing_spend_obj.user_id,
projected_spend=projected_spend,
projected_exceeded_date=projected_exceeded_date,
projected_exceeded_date=str(projected_exceeded_date),
event_group=Litellm_EntityType.KEY,
)
# alert user