litellm-enterprise 0.1.18__tar.gz → 0.1.20__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/PKG-INFO +2 -3
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/llm_guard.py +1 -1
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/pagerduty/pagerduty.py +6 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/integrations/prometheus.py +30 -44
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/management_endpoints/internal_user_endpoints.py +11 -5
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/types/proxy/proxy_server.py +3 -1
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/pyproject.toml +2 -2
- litellm_enterprise-0.1.18/litellm_enterprise/enterprise_callbacks/session_handler.py +0 -160
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/LICENSE.md +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/README.md +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/__init__.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/callback_controls.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/example_logging_api.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/generic_api_callback.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/llama_guard.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secret_detection.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/__init__.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/adafruit.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/adobe.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/age_secret_key.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/airtable_api_key.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/algolia_api_key.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/alibaba.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/asana.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/atlassian_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/authress_access_key.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/beamer_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/bitbucket.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/bittrex.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/clojars_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/codecov_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/coinbase_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/confluent.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/contentful_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/databricks_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/datadog_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/defined_networking_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/digitalocean.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/discord.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/doppler_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/droneci_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/dropbox.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/duffel_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/dynatrace_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/easypost.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/etsy_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/facebook_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/fastly_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/finicity.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/finnhub_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/flickr_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/flutterwave.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/frameio_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/freshbooks_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/gcp_api_key.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/github_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/gitlab.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/gitter_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/gocardless_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/grafana.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/hashicorp_tf_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/heroku_api_key.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/hubspot_api_key.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/huggingface.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/intercom_api_key.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/jfrog.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/jwt.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/kraken_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/kucoin.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/launchdarkly_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/linear.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/linkedin.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/lob.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/mailgun.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/mapbox_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/mattermost_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/messagebird.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/microsoft_teams_webhook.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/netlify_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/new_relic.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/nytimes_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/okta_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/openai_api_key.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/planetscale.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/postman_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/prefect_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/pulumi_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/pypi_upload_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/rapidapi_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/readme_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/rubygems_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/scalingo_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/sendbird.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/sendgrid_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/sendinblue_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/sentry_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/shippo_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/shopify.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/slack.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/snyk_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/squarespace_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/sumologic.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/telegram_bot_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/travisci_access_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/twitch_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/twitter.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/typeform_api_token.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/vault.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/yandex.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/secrets_plugins/zendesk_secret_key.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/send_emails/base_email.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/send_emails/endpoints.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/send_emails/resend_email.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/enterprise_callbacks/send_emails/smtp_email.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/integrations/custom_guardrail.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/litellm_core_utils/litellm_logging.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/audit_logging_endpoints.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/auth/__init__.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/auth/custom_sso_handler.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/auth/route_checks.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/auth/user_api_key_auth.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/common_utils/check_batch_cost.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/enterprise_routes.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/guardrails/endpoints.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/hooks/managed_files.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/management_endpoints/__init__.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/management_endpoints/key_management_endpoints.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/proxy_server.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/readme.md +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/utils.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/vector_stores/endpoints.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/types/enterprise_callbacks/send_emails.py +0 -0
- {litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/types/proxy/audit_logging_endpoints.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: litellm-enterprise
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.20
|
|
4
4
|
Summary: Package for LiteLLM Enterprise features
|
|
5
5
|
Author: BerriAI
|
|
6
6
|
Requires-Python: >=3.8, !=2.7.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*, !=3.7.*
|
|
@@ -9,7 +9,6 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.10
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.11
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
13
12
|
Project-URL: Documentation, https://docs.litellm.ai
|
|
14
13
|
Project-URL: Homepage, https://litellm.ai
|
|
15
14
|
Project-URL: Repository, https://github.com/BerriAI/litellm
|
|
@@ -63,7 +63,7 @@ class _ENTERPRISE_LLMGuard(CustomLogger):
|
|
|
63
63
|
analyze_url, json=analyze_payload
|
|
64
64
|
) as response:
|
|
65
65
|
redacted_text = await response.json()
|
|
66
|
-
verbose_proxy_logger.
|
|
66
|
+
verbose_proxy_logger.debug(
|
|
67
67
|
f"LLM Guard: Received response - {redacted_text}"
|
|
68
68
|
)
|
|
69
69
|
if redacted_text is not None:
|
|
@@ -109,6 +109,9 @@ class PagerDutyAlerting(SlackAlerting):
|
|
|
109
109
|
error_llm_provider=error_info.get("llm_provider"),
|
|
110
110
|
user_api_key_hash=_meta.get("user_api_key_hash"),
|
|
111
111
|
user_api_key_alias=_meta.get("user_api_key_alias"),
|
|
112
|
+
user_api_key_spend=_meta.get("user_api_key_spend"),
|
|
113
|
+
user_api_key_max_budget=_meta.get("user_api_key_max_budget"),
|
|
114
|
+
user_api_key_budget_reset_at=_meta.get("user_api_key_budget_reset_at"),
|
|
112
115
|
user_api_key_org_id=_meta.get("user_api_key_org_id"),
|
|
113
116
|
user_api_key_team_id=_meta.get("user_api_key_team_id"),
|
|
114
117
|
user_api_key_user_id=_meta.get("user_api_key_user_id"),
|
|
@@ -191,6 +194,9 @@ class PagerDutyAlerting(SlackAlerting):
|
|
|
191
194
|
error_llm_provider="HangingRequest",
|
|
192
195
|
user_api_key_hash=user_api_key_dict.api_key,
|
|
193
196
|
user_api_key_alias=user_api_key_dict.key_alias,
|
|
197
|
+
user_api_key_spend=user_api_key_dict.spend,
|
|
198
|
+
user_api_key_max_budget=user_api_key_dict.max_budget,
|
|
199
|
+
user_api_key_budget_reset_at=user_api_key_dict.budget_reset_at.isoformat() if user_api_key_dict.budget_reset_at else None,
|
|
194
200
|
user_api_key_org_id=user_api_key_dict.org_id,
|
|
195
201
|
user_api_key_team_id=user_api_key_dict.team_id,
|
|
196
202
|
user_api_key_user_id=user_api_key_dict.user_id,
|
|
@@ -95,13 +95,16 @@ class PrometheusLogger(CustomLogger):
|
|
|
95
95
|
self.litellm_llm_api_time_to_first_token_metric = self._histogram_factory(
|
|
96
96
|
"litellm_llm_api_time_to_first_token_metric",
|
|
97
97
|
"Time to first token for a models LLM API call",
|
|
98
|
-
labelnames=[
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
],
|
|
98
|
+
# labelnames=[
|
|
99
|
+
# "model",
|
|
100
|
+
# "hashed_api_key",
|
|
101
|
+
# "api_key_alias",
|
|
102
|
+
# "team",
|
|
103
|
+
# "team_alias",
|
|
104
|
+
# ],
|
|
105
|
+
labelnames=self.get_labels_for_metric(
|
|
106
|
+
"litellm_llm_api_time_to_first_token_metric"
|
|
107
|
+
),
|
|
105
108
|
buckets=LATENCY_BUCKETS,
|
|
106
109
|
)
|
|
107
110
|
|
|
@@ -109,15 +112,7 @@ class PrometheusLogger(CustomLogger):
|
|
|
109
112
|
self.litellm_spend_metric = self._counter_factory(
|
|
110
113
|
"litellm_spend_metric",
|
|
111
114
|
"Total spend on LLM requests",
|
|
112
|
-
labelnames=
|
|
113
|
-
"end_user",
|
|
114
|
-
"hashed_api_key",
|
|
115
|
-
"api_key_alias",
|
|
116
|
-
"model",
|
|
117
|
-
"team",
|
|
118
|
-
"team_alias",
|
|
119
|
-
"user",
|
|
120
|
-
],
|
|
115
|
+
labelnames=self.get_labels_for_metric("litellm_spend_metric"),
|
|
121
116
|
)
|
|
122
117
|
|
|
123
118
|
# Counter for total_output_tokens
|
|
@@ -243,25 +238,18 @@ class PrometheusLogger(CustomLogger):
|
|
|
243
238
|
labelnames=["api_provider"],
|
|
244
239
|
)
|
|
245
240
|
|
|
246
|
-
# Get all keys
|
|
247
|
-
_logged_llm_labels = [
|
|
248
|
-
UserAPIKeyLabelNames.v2_LITELLM_MODEL_NAME.value,
|
|
249
|
-
UserAPIKeyLabelNames.MODEL_ID.value,
|
|
250
|
-
UserAPIKeyLabelNames.API_BASE.value,
|
|
251
|
-
UserAPIKeyLabelNames.API_PROVIDER.value,
|
|
252
|
-
]
|
|
253
|
-
|
|
254
241
|
# Metric for deployment state
|
|
255
242
|
self.litellm_deployment_state = self._gauge_factory(
|
|
256
243
|
"litellm_deployment_state",
|
|
257
244
|
"LLM Deployment Analytics - The state of the deployment: 0 = healthy, 1 = partial outage, 2 = complete outage",
|
|
258
|
-
labelnames=
|
|
245
|
+
labelnames=self.get_labels_for_metric("litellm_deployment_state"),
|
|
259
246
|
)
|
|
260
247
|
|
|
261
248
|
self.litellm_deployment_cooled_down = self._counter_factory(
|
|
262
249
|
"litellm_deployment_cooled_down",
|
|
263
250
|
"LLM Deployment Analytics - Number of times a deployment has been cooled down by LiteLLM load balancing logic. exception_status is the status of the exception that caused the deployment to be cooled down",
|
|
264
|
-
labelnames=_logged_llm_labels + [EXCEPTION_STATUS],
|
|
251
|
+
# labelnames=_logged_llm_labels + [EXCEPTION_STATUS],
|
|
252
|
+
labelnames=self.get_labels_for_metric("litellm_deployment_cooled_down"),
|
|
265
253
|
)
|
|
266
254
|
|
|
267
255
|
self.litellm_deployment_success_responses = self._counter_factory(
|
|
@@ -327,6 +315,7 @@ class PrometheusLogger(CustomLogger):
|
|
|
327
315
|
documentation="deprecated - use litellm_proxy_total_requests_metric. Total number of LLM calls to litellm - track total per API Key, team, user",
|
|
328
316
|
labelnames=self.get_labels_for_metric("litellm_requests_metric"),
|
|
329
317
|
)
|
|
318
|
+
|
|
330
319
|
except Exception as e:
|
|
331
320
|
print_verbose(f"Got exception on init prometheus client {str(e)}")
|
|
332
321
|
raise e
|
|
@@ -1052,20 +1041,12 @@ class PrometheusLogger(CustomLogger):
|
|
|
1052
1041
|
|
|
1053
1042
|
_labels = prometheus_label_factory(
|
|
1054
1043
|
supported_enum_labels=self.get_labels_for_metric(
|
|
1055
|
-
metric_name="
|
|
1044
|
+
metric_name="litellm_spend_metric"
|
|
1056
1045
|
),
|
|
1057
1046
|
enum_values=enum_values,
|
|
1058
1047
|
)
|
|
1059
1048
|
|
|
1060
|
-
self.litellm_spend_metric.labels(
|
|
1061
|
-
end_user_id,
|
|
1062
|
-
user_api_key,
|
|
1063
|
-
user_api_key_alias,
|
|
1064
|
-
model,
|
|
1065
|
-
user_api_team,
|
|
1066
|
-
user_api_team_alias,
|
|
1067
|
-
user_id,
|
|
1068
|
-
).inc(response_cost)
|
|
1049
|
+
self.litellm_spend_metric.labels(**_labels).inc(response_cost)
|
|
1069
1050
|
|
|
1070
1051
|
def _set_virtual_key_rate_limit_metrics(
|
|
1071
1052
|
self,
|
|
@@ -2293,7 +2274,9 @@ def get_custom_labels_from_metadata(metadata: dict) -> Dict[str, str]:
|
|
|
2293
2274
|
return result
|
|
2294
2275
|
|
|
2295
2276
|
|
|
2296
|
-
def _tag_matches_wildcard_configured_pattern(
|
|
2277
|
+
def _tag_matches_wildcard_configured_pattern(
|
|
2278
|
+
tags: List[str], configured_tag: str
|
|
2279
|
+
) -> bool:
|
|
2297
2280
|
"""
|
|
2298
2281
|
Check if any of the request tags matches a wildcard configured pattern
|
|
2299
2282
|
|
|
@@ -2318,6 +2301,7 @@ def _tag_matches_wildcard_configured_pattern(tags: List[str], configured_tag: st
|
|
|
2318
2301
|
import re
|
|
2319
2302
|
|
|
2320
2303
|
from litellm.router_utils.pattern_match_deployments import PatternMatchRouter
|
|
2304
|
+
|
|
2321
2305
|
pattern_router = PatternMatchRouter()
|
|
2322
2306
|
regex_pattern = pattern_router._pattern_to_regex(configured_tag)
|
|
2323
2307
|
return any(re.match(pattern=regex_pattern, string=tag) for tag in tags)
|
|
@@ -2326,11 +2310,11 @@ def _tag_matches_wildcard_configured_pattern(tags: List[str], configured_tag: st
|
|
|
2326
2310
|
def get_custom_labels_from_tags(tags: List[str]) -> Dict[str, str]:
|
|
2327
2311
|
"""
|
|
2328
2312
|
Get custom labels from tags based on admin configuration.
|
|
2329
|
-
|
|
2313
|
+
|
|
2330
2314
|
Supports both exact matches and wildcard patterns:
|
|
2331
2315
|
- Exact match: "prod" matches "prod" exactly
|
|
2332
|
-
- Wildcard pattern: "User-Agent: curl/*" matches "User-Agent: curl/7.68.0"
|
|
2333
|
-
|
|
2316
|
+
- Wildcard pattern: "User-Agent: curl/*" matches "User-Agent: curl/7.68.0"
|
|
2317
|
+
|
|
2334
2318
|
Reuses PatternMatchRouter for wildcard pattern matching.
|
|
2335
2319
|
|
|
2336
2320
|
Returns dict of label_name: "true" if the tag matches the configured tag, "false" otherwise
|
|
@@ -2358,17 +2342,19 @@ def get_custom_labels_from_tags(tags: List[str]) -> Dict[str, str]:
|
|
|
2358
2342
|
|
|
2359
2343
|
for configured_tag in configured_tags:
|
|
2360
2344
|
label_name = _sanitize_prometheus_label_name(f"tag_{configured_tag}")
|
|
2361
|
-
|
|
2345
|
+
|
|
2362
2346
|
# Check for exact match first (backwards compatibility)
|
|
2363
2347
|
if configured_tag in tags:
|
|
2364
2348
|
result[label_name] = "true"
|
|
2365
2349
|
continue
|
|
2366
|
-
|
|
2350
|
+
|
|
2367
2351
|
# Use PatternMatchRouter for wildcard pattern matching
|
|
2368
|
-
if "*" in configured_tag and _tag_matches_wildcard_configured_pattern(
|
|
2352
|
+
if "*" in configured_tag and _tag_matches_wildcard_configured_pattern(
|
|
2353
|
+
tags=tags, configured_tag=configured_tag
|
|
2354
|
+
):
|
|
2369
2355
|
result[label_name] = "true"
|
|
2370
2356
|
continue
|
|
2371
|
-
|
|
2357
|
+
|
|
2372
2358
|
# No match found
|
|
2373
2359
|
result[label_name] = "false"
|
|
2374
2360
|
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Enterprise internal user management endpoints
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import os
|
|
6
|
+
|
|
5
7
|
from fastapi import APIRouter, Depends, HTTPException
|
|
6
8
|
|
|
7
9
|
from litellm.proxy._types import UserAPIKeyAuth
|
|
@@ -21,7 +23,7 @@ async def available_enterprise_users(
|
|
|
21
23
|
"""
|
|
22
24
|
For keys with `max_users` set, return the list of users that are allowed to use the key.
|
|
23
25
|
"""
|
|
24
|
-
from litellm.proxy._types import CommonProxyErrors
|
|
26
|
+
from litellm.proxy._types import CommonProxyErrors, EnterpriseLicenseData
|
|
25
27
|
from litellm.proxy.proxy_server import (
|
|
26
28
|
premium_user,
|
|
27
29
|
premium_user_data,
|
|
@@ -34,10 +36,14 @@ async def available_enterprise_users(
|
|
|
34
36
|
detail={"error": CommonProxyErrors.db_not_connected_error.value},
|
|
35
37
|
)
|
|
36
38
|
|
|
37
|
-
if premium_user
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
if not premium_user:
|
|
40
|
+
# check if SSO is enabled - show 5 user limit
|
|
41
|
+
from litellm.proxy.auth.auth_utils import _has_user_setup_sso
|
|
42
|
+
|
|
43
|
+
if _has_user_setup_sso():
|
|
44
|
+
premium_user_data = EnterpriseLicenseData(
|
|
45
|
+
max_users=5,
|
|
46
|
+
)
|
|
41
47
|
|
|
42
48
|
# Count number of rows in LiteLLM_UserTable
|
|
43
49
|
user_count = await prisma_client.db.litellm_usertable.count()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "litellm-enterprise"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.20"
|
|
4
4
|
description = "Package for LiteLLM Enterprise features"
|
|
5
5
|
authors = ["BerriAI"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -22,7 +22,7 @@ requires = ["poetry-core"]
|
|
|
22
22
|
build-backend = "poetry.core.masonry.api"
|
|
23
23
|
|
|
24
24
|
[tool.commitizen]
|
|
25
|
-
version = "0.1.
|
|
25
|
+
version = "0.1.20"
|
|
26
26
|
version_files = [
|
|
27
27
|
"pyproject.toml:version",
|
|
28
28
|
"../requirements.txt:litellm-enterprise==",
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from typing import TYPE_CHECKING, Any, List, Optional, Union, cast
|
|
3
|
-
|
|
4
|
-
from litellm._logging import verbose_proxy_logger
|
|
5
|
-
from litellm.proxy._types import SpendLogsPayload
|
|
6
|
-
from litellm.responses.utils import ResponsesAPIRequestUtils
|
|
7
|
-
from litellm.types.llms.openai import (
|
|
8
|
-
AllMessageValues,
|
|
9
|
-
ChatCompletionResponseMessage,
|
|
10
|
-
GenericChatCompletionMessage,
|
|
11
|
-
ResponseInputParam,
|
|
12
|
-
)
|
|
13
|
-
from litellm.types.utils import ChatCompletionMessageToolCall, Message, ModelResponse
|
|
14
|
-
|
|
15
|
-
if TYPE_CHECKING:
|
|
16
|
-
from litellm.responses.litellm_completion_transformation.transformation import (
|
|
17
|
-
ChatCompletionSession,
|
|
18
|
-
)
|
|
19
|
-
else:
|
|
20
|
-
ChatCompletionSession = Any
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class _ENTERPRISE_ResponsesSessionHandler:
|
|
24
|
-
@staticmethod
|
|
25
|
-
async def get_chat_completion_message_history_for_previous_response_id(
|
|
26
|
-
previous_response_id: str,
|
|
27
|
-
) -> ChatCompletionSession:
|
|
28
|
-
"""
|
|
29
|
-
Return the chat completion message history for a previous response id
|
|
30
|
-
"""
|
|
31
|
-
from litellm.responses.litellm_completion_transformation.transformation import (
|
|
32
|
-
ChatCompletionSession,
|
|
33
|
-
LiteLLMCompletionResponsesConfig,
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
verbose_proxy_logger.debug(
|
|
37
|
-
"inside get_chat_completion_message_history_for_previous_response_id"
|
|
38
|
-
)
|
|
39
|
-
all_spend_logs: List[
|
|
40
|
-
SpendLogsPayload
|
|
41
|
-
] = await _ENTERPRISE_ResponsesSessionHandler.get_all_spend_logs_for_previous_response_id(
|
|
42
|
-
previous_response_id
|
|
43
|
-
)
|
|
44
|
-
verbose_proxy_logger.debug(
|
|
45
|
-
"found %s spend logs for this response id", len(all_spend_logs)
|
|
46
|
-
)
|
|
47
|
-
|
|
48
|
-
litellm_session_id: Optional[str] = None
|
|
49
|
-
if len(all_spend_logs) > 0:
|
|
50
|
-
litellm_session_id = all_spend_logs[0].get("session_id")
|
|
51
|
-
|
|
52
|
-
chat_completion_message_history: List[
|
|
53
|
-
Union[
|
|
54
|
-
AllMessageValues,
|
|
55
|
-
GenericChatCompletionMessage,
|
|
56
|
-
ChatCompletionMessageToolCall,
|
|
57
|
-
ChatCompletionResponseMessage,
|
|
58
|
-
Message,
|
|
59
|
-
]
|
|
60
|
-
] = []
|
|
61
|
-
for spend_log in all_spend_logs:
|
|
62
|
-
proxy_server_request: Union[str, dict] = (
|
|
63
|
-
spend_log.get("proxy_server_request") or "{}"
|
|
64
|
-
)
|
|
65
|
-
proxy_server_request_dict: Optional[dict] = None
|
|
66
|
-
response_input_param: Optional[Union[str, ResponseInputParam]] = None
|
|
67
|
-
if isinstance(proxy_server_request, dict):
|
|
68
|
-
proxy_server_request_dict = proxy_server_request
|
|
69
|
-
else:
|
|
70
|
-
proxy_server_request_dict = json.loads(proxy_server_request)
|
|
71
|
-
|
|
72
|
-
############################################################
|
|
73
|
-
# Add Input messages for this Spend Log
|
|
74
|
-
############################################################
|
|
75
|
-
if proxy_server_request_dict:
|
|
76
|
-
_response_input_param = proxy_server_request_dict.get("input", None)
|
|
77
|
-
if isinstance(_response_input_param, str):
|
|
78
|
-
response_input_param = _response_input_param
|
|
79
|
-
elif isinstance(_response_input_param, dict):
|
|
80
|
-
response_input_param = cast(
|
|
81
|
-
ResponseInputParam, _response_input_param
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
if response_input_param:
|
|
85
|
-
chat_completion_messages = LiteLLMCompletionResponsesConfig.transform_responses_api_input_to_messages(
|
|
86
|
-
input=response_input_param,
|
|
87
|
-
responses_api_request=proxy_server_request_dict or {},
|
|
88
|
-
)
|
|
89
|
-
chat_completion_message_history.extend(chat_completion_messages)
|
|
90
|
-
|
|
91
|
-
############################################################
|
|
92
|
-
# Add Output messages for this Spend Log
|
|
93
|
-
############################################################
|
|
94
|
-
_response_output = spend_log.get("response", "{}")
|
|
95
|
-
if isinstance(_response_output, dict):
|
|
96
|
-
# transform `ChatCompletion Response` to `ResponsesAPIResponse`
|
|
97
|
-
model_response = ModelResponse(**_response_output)
|
|
98
|
-
for choice in model_response.choices:
|
|
99
|
-
if hasattr(choice, "message"):
|
|
100
|
-
chat_completion_message_history.append(
|
|
101
|
-
getattr(choice, "message")
|
|
102
|
-
)
|
|
103
|
-
|
|
104
|
-
verbose_proxy_logger.debug(
|
|
105
|
-
"chat_completion_message_history %s",
|
|
106
|
-
json.dumps(chat_completion_message_history, indent=4, default=str),
|
|
107
|
-
)
|
|
108
|
-
return ChatCompletionSession(
|
|
109
|
-
messages=chat_completion_message_history,
|
|
110
|
-
litellm_session_id=litellm_session_id,
|
|
111
|
-
)
|
|
112
|
-
|
|
113
|
-
@staticmethod
|
|
114
|
-
async def get_all_spend_logs_for_previous_response_id(
|
|
115
|
-
previous_response_id: str,
|
|
116
|
-
) -> List[SpendLogsPayload]:
|
|
117
|
-
"""
|
|
118
|
-
Get all spend logs for a previous response id
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
SQL query
|
|
122
|
-
|
|
123
|
-
SELECT session_id FROM spend_logs WHERE response_id = previous_response_id, SELECT * FROM spend_logs WHERE session_id = session_id
|
|
124
|
-
"""
|
|
125
|
-
from litellm.proxy.proxy_server import prisma_client
|
|
126
|
-
|
|
127
|
-
verbose_proxy_logger.debug("decoding response id=%s", previous_response_id)
|
|
128
|
-
|
|
129
|
-
decoded_response_id = (
|
|
130
|
-
ResponsesAPIRequestUtils._decode_responses_api_response_id(
|
|
131
|
-
previous_response_id
|
|
132
|
-
)
|
|
133
|
-
)
|
|
134
|
-
previous_response_id = decoded_response_id.get(
|
|
135
|
-
"response_id", previous_response_id
|
|
136
|
-
)
|
|
137
|
-
if prisma_client is None:
|
|
138
|
-
return []
|
|
139
|
-
|
|
140
|
-
query = """
|
|
141
|
-
WITH matching_session AS (
|
|
142
|
-
SELECT session_id
|
|
143
|
-
FROM "LiteLLM_SpendLogs"
|
|
144
|
-
WHERE request_id = $1
|
|
145
|
-
)
|
|
146
|
-
SELECT *
|
|
147
|
-
FROM "LiteLLM_SpendLogs"
|
|
148
|
-
WHERE session_id IN (SELECT session_id FROM matching_session)
|
|
149
|
-
ORDER BY "endTime" ASC;
|
|
150
|
-
"""
|
|
151
|
-
|
|
152
|
-
spend_logs = await prisma_client.db.query_raw(query, previous_response_id)
|
|
153
|
-
|
|
154
|
-
verbose_proxy_logger.debug(
|
|
155
|
-
"Found the following spend logs for previous response id %s: %s",
|
|
156
|
-
previous_response_id,
|
|
157
|
-
json.dumps(spend_logs, indent=4, default=str),
|
|
158
|
-
)
|
|
159
|
-
|
|
160
|
-
return spend_logs
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/auth/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{litellm_enterprise-0.1.18 → litellm_enterprise-0.1.20}/litellm_enterprise/proxy/proxy_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|