From a674de8f36a7efeed0fb293dc5a61335ad8ec884 Mon Sep 17 00:00:00 2001 From: David Leen Date: Fri, 12 Jan 2024 16:38:55 +0100 Subject: [PATCH] improve bedrock exception granularity --- litellm/llms/bedrock.py | 4 ++++ litellm/utils.py | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/litellm/llms/bedrock.py b/litellm/llms/bedrock.py index 617964a749..56848d0c48 100644 --- a/litellm/llms/bedrock.py +++ b/litellm/llms/bedrock.py @@ -573,6 +573,10 @@ def completion( response = client.invoke_model( body=data, modelId=model, accept=accept, contentType=contentType ) + except client.exceptions.ValidationException as e: + if "The provided model identifier is invalid" in str(e): + raise BedrockError(status_code=404, message=str(e)) + raise BedrockError(status_code=400, message=str(e)) except Exception as e: raise BedrockError(status_code=500, message=str(e)) diff --git a/litellm/utils.py b/litellm/utils.py index 44e4a4d2f2..4449c02d73 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -5912,6 +5912,22 @@ def exception_type( model=model, response=original_exception.response, ) + elif original_exception.status_code == 400: + exception_mapping_worked = True + raise BadRequestError( + message=f"BedrockException - {original_exception.message}", + llm_provider="bedrock", + model=model, + response=original_exception.response, + ) + elif original_exception.status_code == 404: + exception_mapping_worked = True + raise NotFoundError( + message=f"BedrockException - {original_exception.message}", + llm_provider="bedrock", + model=model, + response=original_exception.response, + ) elif custom_llm_provider == "sagemaker": if "Unable to locate credentials" in error_str: exception_mapping_worked = True