| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 
							- from abc import ABC, abstractmethod
 - from typing import Optional
 - 
 - from core.extension.extensible import Extensible, ExtensionModule
 - 
 - 
 - class ExternalDataTool(Extensible, ABC):
 -     """
 -     The base class of external data tool.
 -     """
 - 
 -     module: ExtensionModule = ExtensionModule.EXTERNAL_DATA_TOOL
 - 
 -     app_id: str
 -     """the id of app"""
 -     variable: str
 -     """the tool variable name of app tool"""
 - 
 -     def __init__(self, tenant_id: str, app_id: str, variable: str, config: Optional[dict] = None):
 -         super().__init__(tenant_id, config)
 -         self.app_id = app_id
 -         self.variable = variable
 - 
 -     @classmethod
 -     @abstractmethod
 -     def validate_config(cls, tenant_id: str, config: dict):
 -         """
 -         Validate the incoming form config data.
 - 
 -         :param tenant_id: the id of workspace
 -         :param config: the form config data
 -         :return:
 -         """
 -         raise NotImplementedError
 - 
 -     @abstractmethod
 -     def query(self, inputs: dict, query: Optional[str] = None) -> str:
 -         """
 -         Query the external data tool.
 - 
 -         :param inputs: user inputs
 -         :param query: the query of chat app
 -         :return: the tool query result
 -         """
 -         raise NotImplementedError
 
 
  |