2024-01-12 12:34:01 +08:00
|
|
|
from abc import ABC, abstractmethod
|
2023-11-06 19:36:16 +08:00
|
|
|
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
|