Spaces:
Paused
Paused
| """ | |
| Get num retries for an exception. | |
| - Account for retry policy by exception type. | |
| """ | |
| from typing import Dict, Optional, Union | |
| from litellm.exceptions import ( | |
| AuthenticationError, | |
| BadRequestError, | |
| ContentPolicyViolationError, | |
| RateLimitError, | |
| Timeout, | |
| ) | |
| from litellm.types.router import RetryPolicy | |
| def get_num_retries_from_retry_policy( | |
| exception: Exception, | |
| retry_policy: Optional[Union[RetryPolicy, dict]] = None, | |
| model_group: Optional[str] = None, | |
| model_group_retry_policy: Optional[Dict[str, RetryPolicy]] = None, | |
| ): | |
| """ | |
| BadRequestErrorRetries: Optional[int] = None | |
| AuthenticationErrorRetries: Optional[int] = None | |
| TimeoutErrorRetries: Optional[int] = None | |
| RateLimitErrorRetries: Optional[int] = None | |
| ContentPolicyViolationErrorRetries: Optional[int] = None | |
| """ | |
| # if we can find the exception then in the retry policy -> return the number of retries | |
| if ( | |
| model_group_retry_policy is not None | |
| and model_group is not None | |
| and model_group in model_group_retry_policy | |
| ): | |
| retry_policy = model_group_retry_policy.get(model_group, None) # type: ignore | |
| if retry_policy is None: | |
| return None | |
| 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 | |
| ): | |
| return retry_policy.AuthenticationErrorRetries | |
| if isinstance(exception, Timeout) and retry_policy.TimeoutErrorRetries is not None: | |
| return retry_policy.TimeoutErrorRetries | |
| if ( | |
| isinstance(exception, RateLimitError) | |
| and retry_policy.RateLimitErrorRetries is not None | |
| ): | |
| return retry_policy.RateLimitErrorRetries | |
| if ( | |
| isinstance(exception, ContentPolicyViolationError) | |
| and retry_policy.ContentPolicyViolationErrorRetries is not None | |
| ): | |
| return retry_policy.ContentPolicyViolationErrorRetries | |
| def reset_retry_policy() -> RetryPolicy: | |
| return RetryPolicy() | |