| 1234567891011121314151617181920212223242526272829 | from typing import Anyimport requestsfrom yarl import URLfrom core.tools.errors import ToolProviderCredentialValidationErrorfrom core.tools.provider.builtin_tool_provider import BuiltinToolProviderControllerclass SlideSpeakProvider(BuiltinToolProviderController):    def _validate_credentials(self, credentials: dict[str, Any]) -> None:        api_key = credentials.get("slidespeak_api_key")        base_url = credentials.get("base_url")        if not api_key:            raise ToolProviderCredentialValidationError("API key is missing")        if base_url:            base_url = str(URL(base_url) / "v1")        headers = {"Content-Type": "application/json", "X-API-Key": api_key}        test_task_id = "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"        url = f"{base_url or 'https://api.slidespeak.co/api/v1'}/task_status/{test_task_id}"        response = requests.get(url, headers=headers)        if response.status_code != 200:            raise ToolProviderCredentialValidationError("Invalid SlidePeak API key")
 |