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.
This commit is contained in:
yeeyou
2025-10-28 15:08:49 +08:00
parent 1bfcc65e0c
commit 2b6299a443
+30 -3
View File
@@ -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
}
# 设置请求头