新增doubao-seedream-4.5模型

This commit is contained in:
fkxianzhou
2025-12-04 00:16:25 +08:00
parent c07c6b2ff1
commit 0033eded3f
4 changed files with 21 additions and 5 deletions
+1 -1
View File
@@ -1 +1 @@
{"id":"9cdfd6e3-7426-4a3a-88b1-b5866725d7e0","revision":0,"last_node_id":47,"last_link_id":49,"nodes":[{"id":45,"type":"SaveImage","pos":[1365.3018798828125,462.0129699707031],"size":[270,58],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"图片","name":"images","type":"IMAGE","link":48},{"localized_name":"文件名前缀","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.65","Node name for S&R":"SaveImage"},"widgets_values":["Jimeng/Image/Seedream4"]},{"id":46,"type":"JimengSeedream4","pos":[948.2438681698591,463.687838280146],"size":[400,300],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"客户端","name":"client","type":"JIMENG_CLIENT","link":49},{"localized_name":"输入图像","name":"images","shape":7,"type":"IMAGE","link":null},{"localized_name":"提示词","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":null},{"localized_name":"生成模式","name":"generation_mode","type":"COMBO","widget":{"name":"generation_mode"},"link":null},{"localized_name":"最大图片数","name":"max_images","type":"INT","widget":{"name":"max_images"},"link":null},{"localized_name":"尺寸","name":"size","type":"COMBO","widget":{"name":"size"},"link":null},{"localized_name":"宽度","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"高度","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"种子","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"水印","name":"watermark","type":"BOOLEAN","widget":{"name":"watermark"},"link":null}],"outputs":[{"localized_name":"图像","name":"images","type":"IMAGE","links":[48]},{"localized_name":"响应","name":"response","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI-Jimeng-API","ver":"bc7215f572cf093ccf7e4ce142267352a60fb428","Node name for S&R":"JimengSeedream4"},"widgets_values":["","Single Image (disabled)",1,"Custom",2048,2048,-1,"randomize",false]},{"id":47,"type":"JimengAPIClient","pos":[659.3174882443304,464.525306048046],"size":[270,58],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"密钥名称","name":"key_name","type":"COMBO","widget":{"name":"key_name"},"link":null}],"outputs":[{"localized_name":"客户端","name":"client","type":"JIMENG_CLIENT","links":[49]}],"properties":{"cnr_id":"ComfyUI-Jimeng-API","ver":"bc7215f572cf093ccf7e4ce142267352a60fb428","Node name for S&R":"JimengAPIClient"},"widgets_values":["未找到密钥 (请配置 api_keys.json)"]}],"links":[[48,46,0,45,0,"IMAGE"],[49,47,0,46,0,"JIMENG_CLIENT"]],"groups":[],"config":{},"extra":{"ds":{"scale":1.1940758060545524,"offset":[-394.67767358790354,-194.86068478421885]},"frontendVersion":"1.18.9","VHS_latentpreview":false,"VHS_latentpreviewrate":0,"VHS_MetadataImage":true,"VHS_KeepIntermediate":true},"version":0.4}
{"id":"9cdfd6e3-7426-4a3a-88b1-b5866725d7e0","revision":0,"last_node_id":48,"last_link_id":51,"nodes":[{"id":47,"type":"JimengAPIClient","pos":[659.3174882443304,464.525306048046],"size":[270,58],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"key_name","name":"key_name","type":"COMBO","widget":{"name":"key_name"},"link":null}],"outputs":[{"localized_name":"client","name":"client","type":"JIMENG_CLIENT","links":[50]}],"properties":{"cnr_id":"ComfyUI-Jimeng-API","ver":"bc7215f572cf093ccf7e4ce142267352a60fb428","Node name for S&R":"JimengAPIClient"},"widgets_values":["未找到密钥 (请配置 api_keys.json)"]},{"id":48,"type":"JimengSeedream4","pos":[949.1629520176931,463.793203747457],"size":[400,300],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"client","name":"client","type":"JIMENG_CLIENT","link":50},{"localized_name":"images","name":"images","shape":7,"type":"IMAGE","link":null},{"localized_name":"model_version","name":"model_version","type":"COMBO","widget":{"name":"model_version"},"link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":null},{"localized_name":"generation_mode","name":"generation_mode","type":"COMBO","widget":{"name":"generation_mode"},"link":null},{"localized_name":"max_images","name":"max_images","type":"INT","widget":{"name":"max_images"},"link":null},{"localized_name":"size","name":"size","type":"COMBO","widget":{"name":"size"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"watermark","name":"watermark","type":"BOOLEAN","widget":{"name":"watermark"},"link":null}],"outputs":[{"localized_name":"images","name":"images","type":"IMAGE","links":[51]},{"localized_name":"response","name":"response","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI-Jimeng-API","ver":"c07c6b2ff122fcb0ebf9f345ef04b697d6e19b66","Node name for S&R":"JimengSeedream4"},"widgets_values":["doubao-seedream-4.0","","Single Image (disabled)",1,"Custom",2048,2048,-1,"randomize",false]},{"id":45,"type":"SaveImage","pos":[1366.2473373272921,464.2190469588465],"size":[270,58],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"图片","name":"images","type":"IMAGE","link":51},{"localized_name":"文件名前缀","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.65","Node name for S&R":"SaveImage"},"widgets_values":["Jimeng/Image/Seedream4"]}],"links":[[50,47,0,48,0,"JIMENG_CLIENT"],[51,48,0,45,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":2.11537812904981,"offset":[-565.3072584119454,-279.58656869694266]},"frontendVersion":"1.18.9","VHS_latentpreview":false,"VHS_latentpreviewrate":0,"VHS_MetadataImage":true,"VHS_KeepIntermediate":true,"workflowRendererVersion":"LG"},"version":0.4}
+8
View File
@@ -75,6 +75,14 @@
"name": "客户端",
"tooltip": "即梦 API 客户端"
},
"model_version": {
"name": "模型版本",
"tooltip": "选择 Seedream 模型版本",
"options": {
"doubao-seedream-4.0": "Seedream 4.0",
"doubao-seedream-4.5": "Seedream 4.5"
}
},
"prompt": {
"name": "提示词",
"tooltip": "用于图像生成的文本提示词"
+11 -3
View File
@@ -120,6 +120,7 @@ class JimengSeedream4:
return {
"required": {
"client": ("JIMENG_CLIENT",),
"model_version": (["doubao-seedream-4.0", "doubao-seedream-4.5"],),
"prompt": ("STRING", {"multiline": True, "default": ""}),
"generation_mode": (["Single Image (disabled)", "Image Group (auto)"],),
"max_images": ("INT", {"default": 1, "min": 1, "max": 15, "step": 1}),
@@ -138,7 +139,7 @@ class JimengSeedream4:
FUNCTION = "generate"
CATEGORY = GLOBAL_CATEGORY
async def generate(self, client, prompt, generation_mode, max_images, size, width, height, seed, watermark, images=None):
async def generate(self, client, model_version, prompt, generation_mode, max_images, size, width, height, seed, watermark, images=None):
# 节点的主要异步执行函数
sequential_image_generation = "disabled" if "disabled" in generation_mode else "auto"
n_input_images = 0
@@ -150,6 +151,13 @@ class JimengSeedream4:
actual_seed = random.randint(0, 2147483647) if seed == -1 else seed
# 映射模型版本到后端 ID
model_id_map = {
"doubao-seedream-4.0": "doubao-seedream-4-0-250828",
"doubao-seedream-4.5": "doubao-seedream-4-5-251128"
}
model_id = model_id_map.get(model_version, "doubao-seedream-4-0-250828")
# 处理分辨率
if size == "Custom":
total_pixels = width * height
@@ -186,7 +194,7 @@ class JimengSeedream4:
comfy.model_management.throw_exception_if_processing_interrupted()
# 调用 API
resp = await openai_client.images.generate(model="doubao-seedream-4-0-250828", prompt=prompt, size=size_str, response_format="url", extra_body=extra_body)
resp = await openai_client.images.generate(model=model_id, prompt=prompt, size=size_str, response_format="url", extra_body=extra_body)
# 检查中断
comfy.model_management.throw_exception_if_processing_interrupted()
@@ -216,7 +224,7 @@ class JimengSeedream4:
except Exception as e:
if isinstance(e, comfy.model_management.InterruptProcessingException):
raise e
raise RuntimeError(get_text("err_gen_model").format(model="Seedream4", e=e))
raise RuntimeError(get_text("err_gen_model").format(model=model_version, e=e))
# 节点类映射
NODE_CLASS_MAPPINGS = {
+1 -1
View File
@@ -1,7 +1,7 @@
[project]
name = "ComfyUI-Jimeng-API"
description = "ComfyUI nodes for Volcano Ark (Jimeng) API"
version = "1.9.7"
version = "1.9.8"
license = {file = "LICENSE"}
dependencies = ["volcengine-python-sdk[ark]", "openai"]