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