gaode.py 1.5 KB

123456789101112131415161718192021222324252627282930313233
  1. import urllib.parse
  2. import requests
  3. from core.tools.entities.values import ToolLabelEnum
  4. from core.tools.errors import ToolProviderCredentialValidationError
  5. from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController
  6. class GaodeProvider(BuiltinToolProviderController):
  7. def _validate_credentials(self, credentials: dict) -> None:
  8. try:
  9. if 'api_key' not in credentials or not credentials.get('api_key'):
  10. raise ToolProviderCredentialValidationError("Gaode API key is required.")
  11. try:
  12. response = requests.get(url="https://restapi.amap.com/v3/geocode/geo?address={address}&key={apikey}"
  13. "".format(address=urllib.parse.quote('广东省广州市天河区广州塔'),
  14. apikey=credentials.get('api_key')))
  15. if response.status_code == 200 and (response.json()).get('info') == 'OK':
  16. pass
  17. else:
  18. raise ToolProviderCredentialValidationError((response.json()).get('info'))
  19. except Exception as e:
  20. raise ToolProviderCredentialValidationError("Gaode API Key is invalid. {}".format(e))
  21. except Exception as e:
  22. raise ToolProviderCredentialValidationError(str(e))
  23. def _get_tool_labels(self) -> list[ToolLabelEnum]:
  24. return [
  25. ToolLabelEnum.UTILITIES, ToolLabelEnum.PRODUCTIVITY,
  26. ToolLabelEnum.WEATHER, ToolLabelEnum.TRAVEL
  27. ]