mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 02:42:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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
 | 
