Merge pull request #4747 from BerriAI/litellm_fix_anthrpic_exception_format

[Fix + Test] anthropic raise litellm.AuthenticationError when no Anthropic API Key provided
This commit is contained in:
Ishaan Jaff 2024-07-16 21:19:08 -07:00 committed by GitHub
commit c2f73764cb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 33 additions and 4 deletions

View file

@ -475,10 +475,12 @@ class AnthropicConfig:
# makes headers for API call
def validate_environment(api_key, user_headers):
def validate_environment(api_key, user_headers, model):
if api_key is None:
raise ValueError(
"Missing Anthropic API Key - A call is being made to anthropic but no key is set either in the environment variables or via params"
raise litellm.AuthenticationError(
message="Missing Anthropic API Key - A call is being made to anthropic but no key is set either in the environment variables or via params. Please set `ANTHROPIC_API_KEY` in your environment vars",
llm_provider="anthropic",
model=model,
)
headers = {
"accept": "application/json",
@ -734,7 +736,7 @@ class AnthropicChatCompletion(BaseLLM):
logger_fn=None,
headers={},
):
headers = validate_environment(api_key, headers)
headers = validate_environment(api_key, headers, model)
_is_function_call = False
messages = copy.deepcopy(messages)
optional_params = copy.deepcopy(optional_params)

View file

@ -388,6 +388,33 @@ def test_completion_openai_exception():
# test_completion_openai_exception()
def test_anthropic_openai_exception():
# test if anthropic raises litellm.AuthenticationError
try:
litellm.set_verbose = True
## Test azure call
old_azure_key = os.environ["ANTHROPIC_API_KEY"]
os.environ.pop("ANTHROPIC_API_KEY")
response = completion(
model="anthropic/claude-3-sonnet-20240229",
messages=[{"role": "user", "content": "hello"}],
)
print(f"response: {response}")
print(response)
except litellm.AuthenticationError as e:
os.environ["ANTHROPIC_API_KEY"] = old_azure_key
print("Exception vars=", vars(e))
assert (
"Missing Anthropic API Key - A call is being made to anthropic but no key is set either in the environment variables or via params"
in e.message
)
print(
"ANTHROPIC_API_KEY: good job got the correct error for ANTHROPIC_API_KEY when key not set"
)
except Exception as e:
pytest.fail(f"Error occurred: {e}")
def test_completion_mistral_exception():
# test if mistral/mistral-tiny raises openai.AuthenticationError
try: