From 60ba2e5eaad96010d1fe9425f0cb10d1b3f2bcde Mon Sep 17 00:00:00 2001 From: dseditor Date: Sun, 4 Jan 2026 21:12:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E5=90=88=20JSON=20=E6=8F=90=E5=8F=96?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=88=B0=20GGUF=5FLLM=20=E7=AF=80=E9=BB=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 prompts 輸出(STRING 列表) - 自動從 LLM 輸出中提取 image_prompt - 保持向後兼容(text 和 used_seed 輸出不變) - 如果不是雜誌 JSON,prompts 返回空列表 - 簡化工作流程,不再需要 PhotoMagazineParser 節點 --- gguf_inference.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/gguf_inference.py b/gguf_inference.py index 13f727c..ceab736 100644 --- a/gguf_inference.py +++ b/gguf_inference.py @@ -14,6 +14,9 @@ import folder_paths import urllib.request from typing import Optional, Tuple, List +# Import JSON prompt extractor for automatic prompt list extraction +from .json_prompt_extractor import extract_prompts_from_json + # Suggested models for download SUGGESTED_MODELS = { "Download: Z-Image": "https://huggingface.co/unsloth/Qwen3-4B-GGUF/resolve/main/Qwen3-4B-Q5_K_M.gguf", @@ -281,8 +284,9 @@ class GGUFInference: } } - RETURN_TYPES = ("STRING", "INT",) - RETURN_NAMES = ("text", "used_seed",) + RETURN_TYPES = ("STRING", "INT", "STRING") + RETURN_NAMES = ("text", "used_seed", "prompts") + OUTPUT_IS_LIST = (False, False, True) # prompts 是列表 FUNCTION = "inference" CATEGORY = "ListHelper/LLM" @@ -1247,7 +1251,16 @@ class GGUFInference: if not keep_model_loaded: self._free_memory() - return (response_text, seed) + # 自動提取提示詞列表(如果輸出包含 JSON 格式的雜誌數據) + try: + prompts = extract_prompts_from_json(response_text) + if prompts: + print(f"✅ 自動提取到 {len(prompts)} 個圖片提示詞") + except Exception as e: + print(f"ℹ️ 提示詞提取失敗(這是正常的,如果輸出不是雜誌 JSON): {e}") + prompts = [] + + return (response_text, seed, prompts) except Exception as e: import traceback @@ -1263,4 +1276,4 @@ class GGUFInference: if any(keyword in error_str for keyword in ['memory', 'load', 'allocation', 'cuda', 'out of memory']): self._free_memory() - return (error_msg, seed) + return (error_msg, seed, []) # 錯誤時返回空的提示詞列表