Spaces:
Runtime error
Runtime error
| import os.path | |
| from pathlib import Path | |
| import torch | |
| from PIL import Image | |
| import math | |
| from torchvision.transforms import ToPILImage | |
| import folder_paths | |
| from .imagefunc import files_for_uform_gen2_qwen, StopOnTokens, UformGen2QwenChat, clear_memory, log | |
| NODE_NAME = "QWenImage2Prompt" | |
| # Example of integrating UformGen2QwenChat into a node-like structure | |
| class QWenImage2Prompt: | |
| def INPUT_TYPES(cls): | |
| return { | |
| "required": { | |
| "image": ("IMAGE",), | |
| "question": ("STRING", {"multiline": False, "default": "describe this image",},), | |
| }, | |
| } | |
| RETURN_TYPES = ("STRING",) | |
| RETURN_NAMES = ("text",) | |
| FUNCTION = "uform_gen2_qwen_chat" | |
| CATEGORY = '😺dzNodes/LayerUtility/Prompt' | |
| def uform_gen2_qwen_chat(self, image, question): | |
| chat_model = UformGen2QwenChat() | |
| history = [] # Example empty history | |
| pil_image = ToPILImage()(image[0].permute(2, 0, 1)) | |
| width, height = pil_image.size | |
| ratio = width / height | |
| if width * height > 1024 * 1024: | |
| target_width = math.sqrt(ratio * 1024 * 1024) | |
| target_height = target_width / ratio | |
| target_width = int(target_width) | |
| target_height = int(target_height) | |
| pil_image = pil_image.resize((target_width, target_height), Image.LANCZOS) | |
| temp_path = files_for_uform_gen2_qwen / "temp.png" | |
| pil_image.save(temp_path) | |
| question = f"{question} but output no more then 80 words." | |
| response = chat_model.chat_response(question, history, temp_path) | |
| # Cleanup | |
| del chat_model | |
| clear_memory() | |
| ret_text = response.split("assistant\n", 1)[1] | |
| log(f"{NODE_NAME} Processed, Question: {question}, Response: {ret_text} ", message_type='finish') | |
| return (ret_text, ) | |
| NODE_CLASS_MAPPINGS = { | |
| "LayerUtility: QWenImage2Prompt": QWenImage2Prompt | |
| } | |
| NODE_DISPLAY_NAME_MAPPINGS = { | |
| "LayerUtility: QWenImage2Prompt": "LayerUtility: QWenImage2Prompt" | |
| } |