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) -> 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) -> None:
- """
- 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
|