litellm/litellm/integrations/SlackAlerting
yuneng-jiang bba85f0b6c
chore(lint): remove the LIT002 mutable-construction rule (#43971)
* chore(lint): remove the LIT002 mutable-construction rule

Drop LIT002 from scripts/check_type_discipline.py along with its helpers,
its budget entry, its unit tests, and the AGENTS.md and gate docstring
mentions. `# mutable-ok` now only suppresses LIT001, so the markers that
only existed to silence LIT002 became LIT013 stale suppressions and are
removed. The files whose layout depended on those trailing comments are
reformatted with ruff format.

Every other LIT rule count is unchanged and the ASTs of all touched
litellm/ files match main apart from one docstring.

* chore(lint): keep the leftover mutable-ok markers for a follow-up

Restore the ~1.4k `# mutable-ok` markers stripped in the previous commit
so this PR only touches the checker, its tests, the budget, and docs.
Those markers no longer suppress anything, so `# mutable-ok` is exempt
from LIT013 until a follow-up strips them.

* Revert "chore(lint): keep the leftover mutable-ok markers for a follow-up"

This reverts commit c35bc0b84e.

---------

Co-authored-by: mateo-berri <277851410+mateo-berri@users.noreply.github.com>
2026-10-01 12:24:02 -07:00
..
batching_handler.py fix(alerting): deliver every distinct alert queued in one flush window 2026-09-21 13:51:03 -07:00
budget_alert_types.py feat(proxy): email alerts at configured percentages of a team member budget (#42665) 2026-09-26 02:42:45 +00:00
hanging_request_check.py feat(lint): enforce Final on locals and freeze function parameters (LIT010, LIT011) 2026-08-04 12:54:39 -07:00
ms_teams.py feat(alerting): add native Microsoft Teams alerting destination (#38367) 2026-08-27 16:19:22 -07:00
Readme.md [Fix + Refactor] Trigger Soft Budget Webhooks When Key Crosses Threshold (#10491) 2025-05-02 07:06:07 -07:00
slack_alerting.py chore(lint): remove the LIT002 mutable-construction rule (#43971) 2026-10-01 12:24:02 -07:00
user_spend_alerts.py feat(alerting): slack alerts for per-user daily/monthly spend thresholds and spend anomaly detection (#38438) 2026-09-01 15:09:03 -07:00
utils.py feat(langfuse): migrate the sdk callback to langfuse v4 (#36741) 2026-09-24 23:22:56 -07:00

Slack Alerting on LiteLLM Gateway

This folder contains the Slack Alerting integration for LiteLLM Gateway.

Folder Structure

  • slack_alerting.py: This is the main file that handles sending different types of alerts
  • batching_handler.py: Handles Batching + sending Httpx Post requests to slack. Slack alerts are sent every 10s or when events are greater than X events. Done to ensure litellm has good performance under high traffic
  • types.py: This file contains the AlertType enum which is used to define the different types of alerts that can be sent to Slack.
  • utils.py: This file contains common utils used specifically for slack alerting

Budget Alert Types

The budget_alert_types.py module provides a flexible framework for handling different types of budget alerts:

  • BaseBudgetAlertType: An abstract base class with abstract methods that all alert types must implement:
    • get_event_group(): Returns the Litellm_EntityType for the alert
    • get_event_message(): Returns the message prefix for the alert
    • get_id(user_info): Returns the ID to use for caching/tracking the alert

Concrete implementations include:

  • ProxyBudgetAlert: Alerting for proxy-level budget concerns
  • SoftBudgetAlert: Alerting when soft budgets are crossed
  • UserBudgetAlert: Alerting for user-level budget concerns
  • TeamBudgetAlert: Alerting for team-level budget concerns
  • TokenBudgetAlert: Alerting for API key budget concerns
  • ProjectedLimitExceededAlert: Alerting when projected spend will exceed budget

Use the get_budget_alert_type() factory function to get the appropriate alert type class for a given alert type string:

from litellm.integrations.SlackAlerting.budget_alert_types import get_budget_alert_type

# Get the appropriate handler
budget_alert_class = get_budget_alert_type("user_budget")

# Use the handler methods
event_group = budget_alert_class.get_event_group()  # Returns Litellm_EntityType.USER
event_message = budget_alert_class.get_event_message()  # Returns "User Budget: "
cache_id = budget_alert_class.get_id(user_info)  # Returns user_id

To add a new budget alert type, simply create a new class that extends BaseBudgetAlertType and implements all the required methods, then add it to the dictionary in the get_budget_alert_type() function.

Further Reading