| 
					
				 | 
			
			
				@@ -0,0 +1,39 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import json
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from typing import Any, Union
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from core.tools.entities.tool_entities import ToolInvokeMessage
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from core.tools.provider.builtin.getimgai.getimgai_appx import GetImgAIApp
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from core.tools.tool.builtin_tool import BuiltinTool
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class Text2ImageTool(BuiltinTool):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def _invoke(self, user_id: str, tool_parameters: dict[str, Any]) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        app = GetImgAIApp(api_key=self.runtime.credentials['getimg_api_key'], base_url=self.runtime.credentials['base_url'])
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        options = {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'style': tool_parameters.get('style'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'prompt': tool_parameters.get('prompt'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'aspect_ratio': tool_parameters.get('aspect_ratio'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'output_format': tool_parameters.get('output_format', 'jpeg'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'response_format': tool_parameters.get('response_format', 'url'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'width': tool_parameters.get('width'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'height': tool_parameters.get('height'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'steps': tool_parameters.get('steps'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'negative_prompt': tool_parameters.get('negative_prompt'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'prompt_2': tool_parameters.get('prompt_2'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        options = {k: v for k, v in options.items() if v}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        text2image_result = app.text2image(
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            mode=tool_parameters.get('mode', 'essential-v2'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            params=options,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            wait=True
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        )
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if not isinstance(text2image_result, str):
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            text2image_result = json.dumps(text2image_result, ensure_ascii=False, indent=4)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if not text2image_result:
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return self.create_text_message("getimg.ai request failed.")
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return self.create_text_message(text2image_result)
 
			 |