Spaces:
Building
Building
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 | |
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 | |
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 | |