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