From 435175bd0af29152b6b2fc692916de7fafe2c95b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E6=98=AD=E6=B4=8B?= <1241877130@qq.com> Date: Tue, 23 Dec 2025 15:28:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=9B=B4=E6=94=B9=E5=88=86=E8=BE=A8?= =?UTF-8?q?=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vector_engine_node.py | 73 ++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 43 deletions(-) diff --git a/vector_engine_node.py b/vector_engine_node.py index ef8ae39..b9139f1 100644 --- a/vector_engine_node.py +++ b/vector_engine_node.py @@ -31,33 +31,6 @@ class VectorEngineImageGenerator: }, } - # Size mapping for OpenAI-style models (aspect_ratio + image_size -> pixel size) - SIZE_MAPPING = { - # 1K sizes - ("1:1", "1K"): "1024x1024", - ("2:3", "1K"): "1024x1536", - ("3:2", "1K"): "1536x1024", - ("4:3", "1K"): "1024x768", - ("3:4", "1K"): "768x1024", - ("16:9", "1K"): "1024x576", - ("9:16", "1K"): "576x1024", - # 2K sizes - ("1:1", "2K"): "2048x2048", - ("2:3", "2K"): "1536x2304", - ("3:2", "2K"): "2304x1536", - ("4:3", "2K"): "2048x1536", - ("3:4", "2K"): "1536x2048", - ("16:9", "2K"): "2048x1152", - ("9:16", "2K"): "1152x2048", - # 4K sizes - ("1:1", "4K"): "4096x4096", - ("2:3", "4K"): "2730x4096", - ("3:2", "4K"): "4096x2730", - ("4:3", "4K"): "4096x3072", - ("3:4", "4K"): "3072x4096", - ("16:9", "4K"): "4096x2304", - ("9:16", "4K"): "2304x4096", - } def __init__(self): # Read API key from environment variable @@ -82,14 +55,19 @@ class VectorEngineImageGenerator: }), "system_prompt": ("STRING", { "multiline": True, - "default": "You are an AI assistant skilled in generating images and editing pictures." + "default": "You are an AI assistant skilled in generating images and editing pictures. (Only for Gemini models)" }), + # Gemini model size options "aspect_ratio": (["1:1", "2:3", "3:2", "4:3", "3:4", "16:9", "9:16"], { "default": "1:1" }), "image_size": (["1K", "2K", "4K"], { "default": "1K" }), + # GPT model size options (only used when model is gpt-image-1.5) + "gpt_size": (["1024x1024", "1536x1024", "1024x1536", "auto"], { + "default": "1024x1024" + }), "seed": ("INT", { "default": 0, "min": 0, @@ -218,7 +196,7 @@ class VectorEngineImageGenerator: return buffer.getvalue() - def generate_image(self, model, prompt, system_prompt, aspect_ratio, image_size, seed, + def generate_image(self, model, prompt, system_prompt, aspect_ratio, image_size, gpt_size, seed, image_1=None, image_2=None, image_3=None, image_4=None, image_5=None): """ Main function to generate image using Vector Engine API @@ -234,12 +212,12 @@ class VectorEngineImageGenerator: # Collect images for OpenAI API images = [image_1, image_2, image_3, image_4, image_5] input_images = [img for img in images if img is not None] - return self._generate_image_openai(model, prompt, aspect_ratio, image_size, seed, input_images) + return self._generate_image_openai(model, prompt, gpt_size, seed, input_images) else: return self._generate_image_gemini(model, prompt, system_prompt, aspect_ratio, image_size, seed, image_1, image_2, image_3, image_4, image_5) - def _generate_image_openai(self, model, prompt, aspect_ratio, image_size, seed, input_images=None): + def _generate_image_openai(self, model, prompt, gpt_size, seed, input_images=None): """ Generate image using OpenAI-style API (for gpt-image-1.5 and similar models) Supports both generation (no images) and editing (with images) @@ -251,8 +229,15 @@ class VectorEngineImageGenerator: # Prepare connection conn = http.client.HTTPSConnection("api.vectorengine.ai") - # Get pixel size from mapping - size = self.SIZE_MAPPING.get((aspect_ratio, image_size), "1024x1024") + # Parse gpt_size to get actual size value + # Options: "1024x1024 (square)", "1536x1024 (landscape)", "1024x1536 (portrait)", "auto" + size_mapping = { + "1024x1024 (square)": "1024x1024", + "1536x1024 (landscape)": "1536x1024", + "1024x1536 (portrait)": "1024x1536", + "auto": "auto" + } + size = size_mapping.get(gpt_size, "1024x1024") image_count = len(input_images) total_encode_time = 0.0 @@ -369,8 +354,8 @@ class VectorEngineImageGenerator: error_msg = response_json["error"].get("message", str(response_json["error"])) info_text = self._format_info( model_name=model, - aspect_ratio=aspect_ratio, - image_size=image_size, + aspect_ratio="-", + image_size=size, generation_time=api_generation_time, success=False, error_message=error_msg, @@ -388,8 +373,8 @@ class VectorEngineImageGenerator: if not data_list: info_text = self._format_info( model_name=model, - aspect_ratio=aspect_ratio, - image_size=image_size, + aspect_ratio="-", + image_size=size, generation_time=api_generation_time, success=False, error_message="No image data in response", @@ -427,8 +412,8 @@ class VectorEngineImageGenerator: else: info_text = self._format_info( model_name=model, - aspect_ratio=aspect_ratio, - image_size=image_size, + aspect_ratio="-", + image_size=size, generation_time=api_generation_time, success=False, error_message="Unknown response format", @@ -457,8 +442,8 @@ class VectorEngineImageGenerator: # Format info text info_text = self._format_info( model_name=model, - aspect_ratio=aspect_ratio, - image_size=image_size, + aspect_ratio="-", + image_size=size, resolution=f"{width}x{height}", generation_time=api_generation_time, success=True, @@ -479,14 +464,16 @@ class VectorEngineImageGenerator: try: error_encode_time = total_encode_time error_image_count = image_count + error_size = size except: error_encode_time = 0.0 error_image_count = 0 + error_size = "1024x1024" info_text = self._format_info( model_name=model, - aspect_ratio=aspect_ratio, - image_size=image_size, + aspect_ratio="-", + image_size=error_size, generation_time=error_generation_time, success=False, error_message=str(e),