diff --git a/api/core/tools/provider/builtin_tool_provider.py b/api/core/tools/provider/builtin_tool_provider.py index 967ce6bc81..09da8860de 100644 --- a/api/core/tools/provider/builtin_tool_provider.py +++ b/api/core/tools/provider/builtin_tool_provider.py @@ -231,25 +231,26 @@ class BuiltinToolProviderController(ToolProviderController): if credential_schema == ToolProviderCredentials.CredentialsType.SECRET_INPUT or \ credential_schema == ToolProviderCredentials.CredentialsType.TEXT_INPUT: if not isinstance(credentials[credential_name], str): - raise ToolProviderCredentialValidationError(f'credential {credential_name} should be string') + raise ToolProviderCredentialValidationError(f'credential {credential_schema.label.en_US} should be string') elif credential_schema.type == ToolProviderCredentials.CredentialsType.SELECT: if not isinstance(credentials[credential_name], str): - raise ToolProviderCredentialValidationError(f'credential {credential_name} should be string') + raise ToolProviderCredentialValidationError(f'credential {credential_schema.label.en_US} should be string') options = credential_schema.options if not isinstance(options, list): - raise ToolProviderCredentialValidationError(f'credential {credential_name} options should be list') + raise ToolProviderCredentialValidationError(f'credential {credential_schema.label.en_US} options should be list') if credentials[credential_name] not in [x.value for x in options]: - raise ToolProviderCredentialValidationError(f'credential {credential_name} should be one of {options}') - - credentials_need_to_validate.pop(credential_name) + raise ToolProviderCredentialValidationError(f'credential {credential_schema.label.en_US} should be one of {options}') + + if credentials[credential_name]: + credentials_need_to_validate.pop(credential_name) for credential_name in credentials_need_to_validate: credential_schema = credentials_need_to_validate[credential_name] if credential_schema.required: - raise ToolProviderCredentialValidationError(f'credential {credential_name} is required') + raise ToolProviderCredentialValidationError(f'credential {credential_schema.label.en_US} is required') # the credential is not set currently, set the default value if needed if credential_schema.default is not None: