mirror of
https://github.com/tiennm99/litellm.git
synced 2026-08-07 04:24:12 +00:00
inspect BadRequestError after all other policy types (#19878)
As indicated by https://docs.litellm.ai/docs/exception_mapping, BadRequestError is used as the base type for multiple exceptions. As such, it should be tested last in handling retry policies. This updates the integration test that validates retry policies work as expected. Fixes #19876
This commit is contained in:
+5
-5
@@ -8729,11 +8729,6 @@ class Router:
|
||||
if allowed_fails_policy is None:
|
||||
return None
|
||||
|
||||
if (
|
||||
isinstance(exception, litellm.BadRequestError)
|
||||
and allowed_fails_policy.BadRequestErrorAllowedFails is not None
|
||||
):
|
||||
return allowed_fails_policy.BadRequestErrorAllowedFails
|
||||
if (
|
||||
isinstance(exception, litellm.AuthenticationError)
|
||||
and allowed_fails_policy.AuthenticationErrorAllowedFails is not None
|
||||
@@ -8754,6 +8749,11 @@ class Router:
|
||||
and allowed_fails_policy.ContentPolicyViolationErrorAllowedFails is not None
|
||||
):
|
||||
return allowed_fails_policy.ContentPolicyViolationErrorAllowedFails
|
||||
if (
|
||||
isinstance(exception, litellm.BadRequestError)
|
||||
and allowed_fails_policy.BadRequestErrorAllowedFails is not None
|
||||
):
|
||||
return allowed_fails_policy.BadRequestErrorAllowedFails
|
||||
|
||||
def _initialize_alerting(self):
|
||||
from litellm.integrations.SlackAlerting.slack_alerting import SlackAlerting
|
||||
|
||||
@@ -43,11 +43,6 @@ def get_num_retries_from_retry_policy(
|
||||
if isinstance(retry_policy, dict):
|
||||
retry_policy = RetryPolicy(**retry_policy)
|
||||
|
||||
if (
|
||||
isinstance(exception, BadRequestError)
|
||||
and retry_policy.BadRequestErrorRetries is not None
|
||||
):
|
||||
return retry_policy.BadRequestErrorRetries
|
||||
if (
|
||||
isinstance(exception, AuthenticationError)
|
||||
and retry_policy.AuthenticationErrorRetries is not None
|
||||
@@ -65,6 +60,11 @@ def get_num_retries_from_retry_policy(
|
||||
and retry_policy.ContentPolicyViolationErrorRetries is not None
|
||||
):
|
||||
return retry_policy.ContentPolicyViolationErrorRetries
|
||||
if (
|
||||
isinstance(exception, BadRequestError)
|
||||
and retry_policy.BadRequestErrorRetries is not None
|
||||
):
|
||||
return retry_policy.BadRequestErrorRetries
|
||||
|
||||
|
||||
def reset_retry_policy() -> RetryPolicy:
|
||||
|
||||
@@ -60,6 +60,7 @@ async def test_completion_with_retry_policy(sync_mode):
|
||||
|
||||
retry_number = 1
|
||||
retry_policy = RetryPolicy(
|
||||
BadRequestErrorRetries=10,
|
||||
ContentPolicyViolationErrorRetries=retry_number, # run 3 retries for ContentPolicyViolationErrors
|
||||
AuthenticationErrorRetries=0, # run 0 retries for AuthenticationErrorRetries
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user