tool_provider_service.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from typing import Optional
  2. from core.tool.provider.base import BaseToolProvider
  3. from core.tool.provider.serpapi_provider import SerpAPIToolProvider
  4. class ToolProviderService:
  5. def __init__(self, tenant_id: str, provider_name: str):
  6. self.provider = self._init_provider(tenant_id, provider_name)
  7. def _init_provider(self, tenant_id: str, provider_name: str) -> BaseToolProvider:
  8. if provider_name == 'serpapi':
  9. return SerpAPIToolProvider(tenant_id)
  10. else:
  11. raise Exception('tool provider {} not found'.format(provider_name))
  12. def get_credentials(self, obfuscated: bool = False) -> Optional[dict]:
  13. """
  14. Returns the credentials for Tool as a dictionary.
  15. :param obfuscated:
  16. :return:
  17. """
  18. return self.provider.get_credentials(obfuscated)
  19. def credentials_validate(self, credentials: dict):
  20. """
  21. Validates the given credentials.
  22. :param credentials:
  23. :raises: ValidateFailedError
  24. """
  25. return self.provider.credentials_validate(credentials)
  26. def encrypt_credentials(self, credentials: dict):
  27. """
  28. Encrypts the given credentials.
  29. :param credentials:
  30. :return:
  31. """
  32. return self.provider.encrypt_credentials(credentials)