| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | from typing import Anyimport requestsfrom core.tools.errors import ToolProviderCredentialValidationErrorfrom core.tools.provider.builtin.perplexity.tools.perplexity_search import PERPLEXITY_API_URLfrom core.tools.provider.builtin_tool_provider import BuiltinToolProviderControllerclass PerplexityProvider(BuiltinToolProviderController):    def _validate_credentials(self, credentials: dict[str, Any]) -> None:        headers = {            "Authorization": f"Bearer {credentials.get('perplexity_api_key')}",            "Content-Type": "application/json"        }                payload = {            "model": "llama-3.1-sonar-small-128k-online",            "messages": [                {                    "role": "system",                    "content": "You are a helpful assistant."                },                {                    "role": "user",                    "content": "Hello"                }            ],            "max_tokens": 5,            "temperature": 0.1,            "top_p": 0.9,            "stream": False        }        try:            response = requests.post(PERPLEXITY_API_URL, json=payload, headers=headers)            response.raise_for_status()        except requests.RequestException as e:            raise ToolProviderCredentialValidationError(                f"Failed to validate Perplexity API key: {str(e)}"            )        if response.status_code != 200:            raise ToolProviderCredentialValidationError(                f"Perplexity API key is invalid. Status code: {response.status_code}"            )
 |