Commit eceb4209 authored by John Wang's avatar John Wang

feat: optimize error message

parent dd500e3b
...@@ -16,7 +16,7 @@ class ProviderNotInitializeError(BaseHTTPException): ...@@ -16,7 +16,7 @@ class ProviderNotInitializeError(BaseHTTPException):
class ProviderQuotaExceededError(BaseHTTPException): class ProviderQuotaExceededError(BaseHTTPException):
error_code = 'provider_quota_exceeded' error_code = 'provider_quota_exceeded'
description = "Your quota for Dify Hosted OpenAI has been exhausted. " \ description = "Your quota for Dify Hosted Model Provider has been exhausted. " \
"Please go to Settings -> Model Provider to complete your own provider credentials." "Please go to Settings -> Model Provider to complete your own provider credentials."
code = 400 code = 400
......
...@@ -123,9 +123,10 @@ class ProviderTokenApi(Resource): ...@@ -123,9 +123,10 @@ class ProviderTokenApi(Resource):
is_valid=token_is_valid) is_valid=token_is_valid)
db.session.add(provider_model) db.session.add(provider_model)
if provider_model.is_valid: if provider in [ProviderName.OPENAI.value, ProviderName.AZURE_OPENAI.value] and provider_model.is_valid:
other_providers = db.session.query(Provider).filter( other_providers = db.session.query(Provider).filter(
Provider.tenant_id == tenant.id, Provider.tenant_id == tenant.id,
Provider.provider_name.in_([ProviderName.OPENAI.value, ProviderName.AZURE_OPENAI.value]),
Provider.provider_name != provider, Provider.provider_name != provider,
Provider.provider_type == ProviderType.CUSTOM.value Provider.provider_type == ProviderType.CUSTOM.value
).all() ).all()
......
...@@ -10,7 +10,7 @@ from core import hosted_llm_credentials ...@@ -10,7 +10,7 @@ from core import hosted_llm_credentials
from core.llm.error import ProviderTokenNotInitError from core.llm.error import ProviderTokenNotInitError
from core.llm.provider.base import BaseProvider from core.llm.provider.base import BaseProvider
from core.llm.provider.errors import ValidateFailedError from core.llm.provider.errors import ValidateFailedError
from models.provider import ProviderName from models.provider import ProviderName, ProviderType
class AnthropicProvider(BaseProvider): class AnthropicProvider(BaseProvider):
...@@ -90,6 +90,13 @@ class AnthropicProvider(BaseProvider): ...@@ -90,6 +90,13 @@ class AnthropicProvider(BaseProvider):
if not provider: if not provider:
raise ValidateFailedError(f"OpenAI or Azure OpenAI provider must be configured first.") raise ValidateFailedError(f"OpenAI or Azure OpenAI provider must be configured first.")
if provider.provider_type == ProviderType.SYSTEM.value:
quota_used = provider.quota_used if provider.quota_used is not None else 0
quota_limit = provider.quota_limit if provider.quota_limit is not None else 0
if quota_used >= quota_limit:
raise ValidateFailedError(f"Your quota for Dify Hosted OpenAI has been exhausted, "
f"please configure OpenAI or Azure OpenAI provider first.")
try: try:
if not isinstance(config, dict): if not isinstance(config, dict):
raise ValueError('Config must be a object.') raise ValueError('Config must be a object.')
...@@ -112,8 +119,11 @@ class AnthropicProvider(BaseProvider): ...@@ -112,8 +119,11 @@ class AnthropicProvider(BaseProvider):
] ]
chat_llm(messages) chat_llm(messages)
except (anthropic.APIStatusError, anthropic.APIConnectionError, anthropic.RateLimitError) as ex: except anthropic.APIConnectionError:
raise ValidateFailedError(f"Anthropic: {ex.message}") raise ValidateFailedError(f"Anthropic: Connection error.")
except (anthropic.APIStatusError, anthropic.RateLimitError) as ex:
raise ValidateFailedError(f"Anthropic: Error code: {ex.status_code} - "
f"{ex.body['error']['type']}: {ex.body['error']['message']}")
except Exception as ex: except Exception as ex:
logging.exception('Anthropic config validation failed') logging.exception('Anthropic config validation failed')
raise ex raise ex
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment