From 2b6299a44305bce9a20f6e6743f715a88383a841 Mon Sep 17 00:00:00 2001 From: yeeyou Date: Tue, 28 Oct 2025 15:08:49 +0800 Subject: [PATCH] Add seed and seed_control options to LLM node Introduces 'seed' and 'seed_control' parameters to allow deterministic or controlled randomization in generation. The seed is now included in the API payload, and logic is added to handle fixed, increment, decrement, and randomize modes for seed management. --- openai_llm_node.py | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/openai_llm_node.py b/openai_llm_node.py index d24f3f0..12b3e52 100644 --- a/openai_llm_node.py +++ b/openai_llm_node.py @@ -19,7 +19,7 @@ class OpenAICompatibleLLM: """ def __init__(self): - pass + self.seed = None @classmethod def INPUT_TYPES(cls): @@ -47,6 +47,15 @@ class OpenAICompatibleLLM: "max": 2.0, "step": 0.01 }), + "seed": ("INT", { + "default": 0, + "min": 0, + "max": 0xffffffffffffffff, + "display": "number" + }), + "seed_control": (["fixed", "increment", "decrement", "randomize"], { + "default": "randomize" + }), }, "optional": { "image": ("IMAGE",), @@ -86,12 +95,29 @@ class OpenAICompatibleLLM: return f"data:image/png;base64,{img_base64}" - def generate(self, prompt, endpoint, model, max_tokens, temperature, + def generate(self, prompt, endpoint, model, max_tokens, temperature, seed, seed_control, image=None, api_key=None, image_detail="auto"): """ 调用 OpenAI 兼容的 API 生成响应 """ + # 处理 seed 控制 + if seed_control == "randomize": + seed = np.random.randint(0, 0xffffffffffffffff) + elif seed_control == "increment": + if self.seed is not None: + seed = (self.seed + 1) % 0xffffffffffffffff + else: + seed = seed + elif seed_control == "decrement": + if self.seed is not None: + seed = (self.seed - 1) % 0xffffffffffffffff + else: + seed = seed + # fixed 模式使用传入的 seed + + self.seed = seed + # 构建消息内容 if image is not None: # 如果有图片输入,使用视觉模型的格式 @@ -124,7 +150,8 @@ class OpenAICompatibleLLM: } ], "max_tokens": max_tokens, - "temperature": temperature + "temperature": temperature, + "seed": seed } # 设置请求头