| 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 |
|
|