ComfyPilotComfyPilot
工作流 / 图像 / Qwen Image 2.1:图像编辑
Qwen Image 2.1:图像编辑

Qwen Image 2.1:图像编辑

Qwen Image 2.1: Image Edit

使用 Qwen Image 2.1 编辑图像:向同一个同时负责生成和编辑的模型输入两张参考图,再将结果与原图对比。适合角色一致性编辑、带真实透明通道的产品抠图合成,以及原生 2K 风格迁移。

图像 8 个节点 2 个输入 16,593 次使用 ComfyUI ≥ 0.37.2 ComfyUI 94 KB

下载工作流 JSON 查看官方来源

下载后把文件拖进 ComfyUI 窗口即可打开。

需要的权重

这个工作流引用了 4 个权重文件,其中 4 个能在本站模型库里找到。

qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors 在模型库查看
qwen3vl_8b_int8_convrot.safetensors 在模型库查看
qwen_image_2.1_int8_convrot.safetensors 在模型库查看
qwen_image_2.1_vae_bf16.safetensors 在模型库查看

节点构成

MarkdownNote × 3
LoadImage × 2
bc1c967a-7f6a-4be9-a372-dad16e4f28e3 × 1
SaveImageAdvanced × 1
ImageCompare × 1

官方标注的模型

Qwen Image 2.1

工作流 JSON

和上面「下载工作流 JSON」是同一份文件。

1{
2 "id": "54bb395d-3e60-4c94-b525-85523901575b",
3 "revision": 0,
4 "last_node_id": 501,
5 "last_link_id": 903,
6 "nodes": [
7 {
8 "id": 459,
9 "type": "bc1c967a-7f6a-4be9-a372-dad16e4f28e3",
10 "pos": [
11 480,
12 2420
13 ],
14 "size": [
15 420,
16 760
17 ],
18 "flags": [],
19 "order": 5,
20 "mode": 0,
21 "inputs": [
22 {
23 "label": "positive_prompt",
24 "name": "prompt",
25 "type": "STRING",
26 "widget": {
27 "name": "prompt"
28 },
29 "link": null
30 },
31 {
32 "label": "refine_prompt",
33 "name": "switch_1",
34 "type": "BOOLEAN",
35 "widget": {
36 "name": "switch_1"
37 },
38 "link": null
39 },
40 {
41 "label": "steps",
42 "name": "steps",
43 "type": "INT",
44 "widget": {
45 "name": "steps"
46 },
47 "link": null
48 },
49 {
50 "label": "custom_size",
51 "name": "switch",
52 "type": "BOOLEAN",
53 "widget": {
54 "name": "switch"
55 },
56 "link": null
57 },
58 {
59 "label": "sampler",
60 "name": "scheduler",
61 "type": "COMBO",
62 "widget": {
63 "name": "scheduler"
64 },
65 "link": null
66 },
67 {
68 "label": "scheduler",
69 "name": "scheduler_1",
70 "type": "COMBO",
71 "widget": {
72 "name": "scheduler_1"
73 },
74 "link": null
75 },
76 {
77 "label": "cache_device",
78 "name": "device",
79 "type": "COMBO",
80 "widget": {
81 "name": "device"
82 },
83 "link": null
84 },
85 {
86 "label": "dtype",
87 "name": "dtype",
88 "type": "COMBO",
89 "widget": {
90 "name": "dtype"
91 },
92 "link": null
93 },
94 {
95 "label": "PE_model",
96 "name": "clip_name_1",
97 "type": "COMBO",
98 "widget": {
99 "name": "clip_name_1"
100 },
101 "link": null
102 },
103 {
104 "label": "image_1",
105 "name": "images.image_1",
106 "type": "IMAGE",
107 "link": 704
108 },
109 {
110 "label": "image_2",
111 "name": "images.image_2",
112 "shape": 7,
113 "type": "IMAGE",
114 "link": 728
115 },
116 {
117 "label": "image_3",
118 "name": "images.image_3",
119 "shape": 7,
120 "type": "IMAGE",
121 "link": null
122 },
123 {
124 "label": "image_4",
125 "name": "images.image_4",
126 "shape": 7,
127 "type": "IMAGE",
128 "link": null
129 },
130 {
131 "label": "image_5",
132 "name": "images.image_5_1",
133 "shape": 7,
134 "type": "IMAGE",
135 "link": null
136 },
137 {
138 "label": "image_6",
139 "name": "images.image_6",
140 "shape": 7,
141 "type": "IMAGE",
142 "link": null
143 },
144 {
145 "label": "image_7",
146 "name": "images.image_7",
147 "shape": 7,
148 "type": "IMAGE",
149 "link": null
150 },
151 {
152 "label": "image_8",
153 "name": "images.image_8",
154 "shape": 7,
155 "type": "IMAGE",
156 "link": null
157 },
158 {
159 "label": "image_9",
160 "name": "images.image_9",
161 "shape": 7,
162 "type": "IMAGE",
163 "link": null
164 },
165 {
166 "label": "image_10",
167 "name": "images.image_10",
168 "shape": 7,
169 "type": "IMAGE",
170 "link": null
171 }
172 ],
173 "outputs": [
174 {
175 "name": "IMAGE",
176 "type": "IMAGE",
177 "links": [
178 672
179 ]
180 }
181 ],
182 "properties": {
183 "previewExposures": []
184 },
185 "widgets_values": [
186 0,
187 "Replace costumes for the character",
188 false,
189 false,
190 4096,
191 "",
192 1,
193 25,
194 false,
195 1024,
196 1024,
197 "euler",
198 "simple",
199 891836227295375,
200 "qwen_image_2.1_int8_convrot.safetensors",
201 "qwen3vl_8b_int8_convrot.safetensors",
202 "qwen_image_2.1_vae_bf16.safetensors",
203 "auto",
204 "default",
205 "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors"
206 ],
207 "widgets_values_named": {
208 "resolution": 0,
209 "prompt": "Replace costumes for the character",
210 "switch_1": false,
211 "thinking": false,
212 "max_length": 4096,
213 "negative_prompt": "",
214 "cfg": 1,
215 "steps": 25,
216 "switch": false,
217 "width": 1024,
218 "height": 1024,
219 "scheduler": "euler",
220 "scheduler_1": "simple",
221 "seed": 891836227295375,
222 "unet_name": "qwen_image_2.1_int8_convrot.safetensors",
223 "clip_name": "qwen3vl_8b_int8_convrot.safetensors",
224 "vae_name": "qwen_image_2.1_vae_bf16.safetensors",
225 "device": "auto",
226 "dtype": "default",
227 "clip_name_1": "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors"
228 }
229 },
230 {
231 "id": 461,
232 "type": "SaveImageAdvanced",
233 "pos": [
234 1410,
235 2420
236 ],
237 "size": [
238 710,
239 760
240 ],
241 "flags": [],
242 "order": 6,
243 "mode": 0,
244 "showAdvanced": true,
245 "inputs": [
246 {
247 "name": "images",
248 "type": "IMAGE",
249 "link": 672
250 }
251 ],
252 "outputs": [
253 {
254 "name": "images",
255 "type": "IMAGE",
256 "links": [
257 708
258 ]
259 }
260 ],
261 "properties": [],
262 "widgets_values": [
263 "Qwen_image_2.1",
264 "png",
265 "8-bit",
266 "sRGB"
267 ],
268 "widgets_values_named": {
269 "filename_prefix": "Qwen_image_2.1",
270 "format": "png",
271 "format.bit_depth": "8-bit",
272 "format.input_color_space": "sRGB"
273 }
274 },
275 {
276 "id": 463,
277 "type": "MarkdownNote",
278 "pos": [
279 -360,
280 2410
281 ],
282 "size": [
283 420,
284 620
285 ],
286 "flags": [],
287 "order": 0,
288 "mode": 0,
289 "inputs": [],
290 "outputs": [],
291 "title": "Note: Usage",
292 "properties": [],
293 "widgets_values": [
294 "## Size\nQwen Image 2.1 has native 2K (2048*2048) support for direct output.\n\n- resolution is a total pixel budget (not width or height). Aspect ratio is preserved.\n- Official default is 1024. The model supports up to 2048.\n- This template starts at 0: no resize beyond a multiple of 32.\n- Output follows image_1. Extra refs can differ in size or aspect.\n- custom_size off: canvas comes from the encode latent (image_1).\n- custom_size on: use ResolutionSelector width/height. Keep it close to the resized image_1 size, or the edit can shift.\n\n## Reference images\n- Up to 10 reference images (image_1 to image_10).\n- Mention them in the prompt as `<image1>`, `<image2>`, ...\n- image_1 is the edit target. The rest are references.\n\n## Custom settings\nIf you need custom settings, enter or unpack the subgraph to edit it. See the [Subgraph](https://docs.comfy.org/interface/features/subgraph) guide.\n\n## Parameters\n- prompt: edit instruction. Use `<image1>` ... `<image10>`.\n- negative_prompt: unused while cfg is 1.\n- cfg: keep 1 for the Qwen Image 2.1 official path. Raise it only if you use a negative prompt.\n- steps: Qwen Image 2.1 official pipeline uses about 40-50 with euler. This template starts at 25. More advanced samplers need fewer steps."
295 ],
296 "widgets_values_named": {
297 "text": "## Size\nQwen Image 2.1 has native 2K (2048*2048) support for direct output.\n\n- resolution is a total pixel budget (not width or height). Aspect ratio is preserved.\n- Official default is 1024. The model supports up to 2048.\n- This template starts at 0: no resize beyond a multiple of 32.\n- Output follows image_1. Extra refs can differ in size or aspect.\n- custom_size off: canvas comes from the encode latent (image_1).\n- custom_size on: use ResolutionSelector width/height. Keep it close to the resized image_1 size, or the edit can shift.\n\n## Reference images\n- Up to 10 reference images (image_1 to image_10).\n- Mention them in the prompt as `<image1>`, `<image2>`, ...\n- image_1 is the edit target. The rest are references.\n\n## Custom settings\nIf you need custom settings, enter or unpack the subgraph to edit it. See the [Subgraph](https://docs.comfy.org/interface/features/subgraph) guide.\n\n## Parameters\n- prompt: edit instruction. Use `<image1>` ... `<image10>`.\n- negative_prompt: unused while cfg is 1.\n- cfg: keep 1 for the Qwen Image 2.1 official path. Raise it only if you use a negative prompt.\n- steps: Qwen Image 2.1 official pipeline uses about 40-50 with euler. This template starts at 25. More advanced samplers need fewer steps."
298 },
299 "color": "#222",
300 "bgcolor": "#000"
301 },
302 {
303 "id": 470,
304 "type": "LoadImage",
305 "pos": [
306 140,
307 2420
308 ],
309 "size": [
310 290,
311 110
312 ],
313 "flags": [],
314 "order": 1,
315 "mode": 0,
316 "inputs": [],
317 "outputs": [
318 {
319 "name": "IMAGE",
320 "type": "IMAGE",
321 "links": [
322 704,
323 707
324 ]
325 },
326 {
327 "name": "MASK",
328 "type": "MASK",
329 "links": null
330 }
331 ],
332 "properties": {
333 "Node name for S&R": "LoadImage"
334 },
335 "widgets_values": [
336 "portrait_model_denim.png",
337 "image"
338 ],
339 "widgets_values_named": {
340 "image": "portrait_model_denim.png",
341 "upload": "image"
342 }
343 },
344 {
345 "id": 472,
346 "type": "ImageCompare",
347 "pos": [
348 2160,
349 2420
350 ],
351 "size": [
352 660,
353 760
354 ],
355 "flags": [],
356 "order": 7,
357 "mode": 0,
358 "inputs": [
359 {
360 "name": "image_a",
361 "shape": 7,
362 "type": "IMAGE",
363 "link": 707
364 },
365 {
366 "name": "image_b",
367 "shape": 7,
368 "type": "IMAGE",
369 "link": 708
370 }
371 ],
372 "outputs": [],
373 "properties": {
374 "Node name for S&R": "ImageCompare"
375 },
376 "widgets_values": [],
377 "widgets_values_named": []
378 },
379 {
380 "id": 475,
381 "type": "LoadImage",
382 "pos": [
383 140,
384 2810
385 ],
386 "size": [
387 290,
388 110
389 ],
390 "flags": [],
391 "order": 2,
392 "mode": 0,
393 "inputs": [],
394 "outputs": [
395 {
396 "name": "IMAGE",
397 "type": "IMAGE",
398 "links": [
399 728
400 ]
401 },
402 {
403 "name": "MASK",
404 "type": "MASK",
405 "links": []
406 }
407 ],
408 "properties": {
409 "Node name for S&R": "LoadImage"
410 },
411 "widgets_values": [
412 "clothing_light_blue_denim_shirt.png",
413 "image"
414 ],
415 "widgets_values_named": {
416 "image": "clothing_light_blue_denim_shirt.png",
417 "upload": "image"
418 }
419 },
420 {
421 "id": 476,
422 "type": "MarkdownNote",
423 "pos": [
424 -840,
425 2410
426 ],
427 "size": [
428 420,
429 620
430 ],
431 "flags": [],
432 "order": 3,
433 "mode": 0,
434 "inputs": [],
435 "outputs": [],
436 "title": "Note: Model links",
437 "properties": [],
438 "widgets_values": [
439 "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Input Assets\n\n- [portrait_model_denim.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/portrait_model_denim.png)\n- [clothing_light_blue_denim_shirt.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/clothing_light_blue_denim_shirt.png)\n\n\n## Model Links\n\n- [Hugging Face:Comfy-Org/Qwen-Image-2.1](https://huggingface.co/Comfy-Org/Qwen-Image-2.1)\n- [ModelScope:Comfy-Org/Qwen-Image-2.1](https://modelscope.cn/models/Comfy-Org/Qwen-Image-2.1)\n\n**diffusion_models**\n\n- [qwen_image_2.1_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_bf16.safetensors) (13.25 GB)\n- [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (6.76 GB)\n\n**text_encoders**\n\n- [qwen3vl_8b_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_bf16.safetensors) (16.33 GB)\n- [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (8.71 GB) \n- [qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors) (8.82 GB)\n\n**vae**\n\n- [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/vae/qwen_image_2.1_vae_bf16.safetensors) (644.2 MB)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ ├── qwen_image_2.1_bf16.safetensors\n│ │ └── qwen_image_2.1_int8_convrot.safetensors\n│ ├── 📂 text_encoders/\n│ │ ├── qwen3vl_8b_bf16.safetensors\n│ │ ├── qwen3vl_8b_int8_convrot.safetensors\n│ │ └── qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors│ └── 📂 vae/\n│ └── qwen_image_2.1_vae_bf16.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
440 ],
441 "widgets_values_named": {
442 "text": "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Input Assets\n\n- [portrait_model_denim.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/portrait_model_denim.png)\n- [clothing_light_blue_denim_shirt.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/clothing_light_blue_denim_shirt.png)\n\n\n## Model Links\n\n- [Hugging Face:Comfy-Org/Qwen-Image-2.1](https://huggingface.co/Comfy-Org/Qwen-Image-2.1)\n- [ModelScope:Comfy-Org/Qwen-Image-2.1](https://modelscope.cn/models/Comfy-Org/Qwen-Image-2.1)\n\n**diffusion_models**\n\n- [qwen_image_2.1_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_bf16.safetensors) (13.25 GB)\n- [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (6.76 GB)\n\n**text_encoders**\n\n- [qwen3vl_8b_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_bf16.safetensors) (16.33 GB)\n- [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (8.71 GB) \n- [qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors) (8.82 GB)\n\n**vae**\n\n- [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/vae/qwen_image_2.1_vae_bf16.safetensors) (644.2 MB)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ ├── qwen_image_2.1_bf16.safetensors\n│ │ └── qwen_image_2.1_int8_convrot.safetensors\n│ ├── 📂 text_encoders/\n│ │ ├── qwen3vl_8b_bf16.safetensors\n│ │ ├── qwen3vl_8b_int8_convrot.safetensors\n│ │ └── qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors│ └── 📂 vae/\n│ └── qwen_image_2.1_vae_bf16.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
443 },
444 "color": "#222",
445 "bgcolor": "#000"
446 },
447 {
448 "id": 501,
449 "type": "MarkdownNote",
450 "pos": [
451 920,
452 2730
453 ],
454 "size": [
455 420,
456 480
457 ],
458 "flags": [],
459 "order": 4,
460 "mode": 0,
461 "inputs": [],
462 "outputs": [],
463 "title": "Note: PE",
464 "properties": [],
465 "widgets_values": [
466 "## Prompt Enhancer\n\nThe prompt enhancer rewrites your instruction with the Qwen 3.5 prompt enhancer model before the edit model sees it. These settings follow the official prompt enhancer release, and the ones you are most likely to change are exposed on the node.\n\n- `refine_prompt`: on runs the rewrite and feeds it to the edit model, off passes your instruction through as written. On gives the edit model a fuller prompt and usually better results; off skips the rewrite pass and the run finishes faster. This template starts with it off.\n- `thinking`: turn this on together with the enhancer. The checkpoint was trained with a reasoning block and loses quality without it.\n- `max_length`: the token budget for the reasoning block plus the rewritten prompt, 4096 here. The official setting is 24000; this template caps it lower so a single rewrite cannot run for many minutes.\n- `sampling_mode`: the sampling values live inside the subgraph. They follow the official ones: `temperature` 1.0, `top_p` 0.95, `top_k` 20, `min_p` 0, `presence_penalty` 0, `repetition_penalty` 1.0.\n\nThe enhancer checkpoint and its system prompt live inside the subgraph."
467 ],
468 "widgets_values_named": {
469 "text": "## Prompt Enhancer\n\nThe prompt enhancer rewrites your instruction with the Qwen 3.5 prompt enhancer model before the edit model sees it. These settings follow the official prompt enhancer release, and the ones you are most likely to change are exposed on the node.\n\n- `refine_prompt`: on runs the rewrite and feeds it to the edit model, off passes your instruction through as written. On gives the edit model a fuller prompt and usually better results; off skips the rewrite pass and the run finishes faster. This template starts with it off.\n- `thinking`: turn this on together with the enhancer. The checkpoint was trained with a reasoning block and loses quality without it.\n- `max_length`: the token budget for the reasoning block plus the rewritten prompt, 4096 here. The official setting is 24000; this template caps it lower so a single rewrite cannot run for many minutes.\n- `sampling_mode`: the sampling values live inside the subgraph. They follow the official ones: `temperature` 1.0, `top_p` 0.95, `top_k` 20, `min_p` 0, `presence_penalty` 0, `repetition_penalty` 1.0.\n\nThe enhancer checkpoint and its system prompt live inside the subgraph."
470 },
471 "color": "#222",
472 "bgcolor": "#000"
473 }
474 ],
475 "links": [
476 [
477 707,
478 470,
479 0,
480 472,
481 0,
482 "IMAGE"
483 ],
484 [
485 708,
486 461,
487 0,
488 472,
489 1,
490 "IMAGE"
491 ],
492 [
493 704,
494 470,
495 0,
496 459,
497 9,
498 "IMAGE"
499 ],
500 [
501 728,
502 475,
503 0,
504 459,
505 10,
506 "IMAGE"
507 ],
508 [
509 672,
510 459,
511 0,
512 461,
513 0,
514 "IMAGE"
515 ]
516 ],
517 "groups": [],
518 "definitions": {
519 "subgraphs": [
520 {
521 "id": "bc1c967a-7f6a-4be9-a372-dad16e4f28e3",
522 "version": 1,
523 "state": {
524 "lastGroupId": 38,
525 "lastNodeId": 501,
526 "lastLinkId": 903,
527 "lastRerouteId": 9
528 },
529 "revision": 0,
530 "config": [],
531 "name": "Image Edit (Qwen Image 2.1)",
532 "inputNode": {
533 "id": -10,
534 "bounding": [
535 -720,
536 630,
537 143.044921875,
538 648
539 ]
540 },
541 "outputNode": {
542 "id": -20,
543 "bounding": [
544 1960,
545 640,
546 128,
547 68
548 ]
549 },
550 "inputs": [
551 {
552 "id": "1f3911c3-71b5-45b7-9a0e-4ac7285069dc",
553 "name": "resolution",
554 "type": "INT",
555 "linkIds": [
556 725
557 ],
558 "pos": [
559 -600.955078125,
560 654
561 ]
562 },
563 {
564 "id": "6a73de3b-f4cd-43a4-9076-76648c6902f0",
565 "name": "prompt",
566 "type": "STRING",
567 "linkIds": [
568 739,
569 802
570 ],
571 "localized_name": "prompt",
572 "label": "positive_prompt",
573 "pos": [
574 -600.955078125,
575 674
576 ]
577 },
578 {
579 "id": "57887da4-f3f5-41b1-9fce-a7292abaef6a",
580 "name": "switch_1",
581 "type": "BOOLEAN",
582 "linkIds": [
583 741
584 ],
585 "label": "refine_prompt",
586 "pos": [
587 -600.955078125,
588 694
589 ]
590 },
591 {
592 "id": "cd079967-6ff0-46d9-8b58-d52c2cdc5de5",
593 "name": "thinking",
594 "type": "BOOLEAN",
595 "linkIds": [
596 902
597 ],
598 "pos": [
599 -600.955078125,
600 714
601 ]
602 },
603 {
604 "id": "d98ec6b1-9955-48e0-874d-b99d10218329",
605 "name": "max_length",
606 "type": "INT",
607 "linkIds": [
608 903
609 ],
610 "pos": [
611 -600.955078125,
612 734
613 ]
614 },
615 {
616 "id": "d4c1377f-7fbc-4519-b83c-9a3b9c2de104",
617 "name": "negative_prompt",
618 "type": "STRING",
619 "linkIds": [
620 727
621 ],
622 "pos": [
623 -600.955078125,
624 754
625 ]
626 },
627 {
628 "id": "420ee896-17c3-4e07-95fc-0ff309a6b836",
629 "name": "cfg",
630 "type": "FLOAT",
631 "linkIds": [
632 658
633 ],
634 "pos": [
635 -600.955078125,
636 774
637 ]
638 },
639 {
640 "id": "349c3f72-ba7a-4277-84ff-8029faa16019",
641 "name": "steps",
642 "type": "INT",
643 "linkIds": [
644 659
645 ],
646 "label": "steps",
647 "pos": [
648 -600.955078125,
649 794
650 ]
651 },
652 {
653 "id": "60df426d-f8ab-4ce2-8c82-42dc7cbf19d0",
654 "name": "switch",
655 "type": "BOOLEAN",
656 "linkIds": [
657 703
658 ],
659 "label": "custom_size",
660 "pos": [
661 -600.955078125,
662 814
663 ]
664 },
665 {
666 "id": "91c96cf8-057b-4da2-b71e-305541a3527e",
667 "name": "width",
668 "type": "INT",
669 "linkIds": [
670 660
671 ],
672 "localized_name": "width",
673 "pos": [
674 -600.955078125,
675 834
676 ]
677 },
678 {
679 "id": "661cc520-6bd0-4925-90ec-cecaa188b57d",
680 "name": "height",
681 "type": "INT",
682 "linkIds": [
683 661
684 ],
685 "localized_name": "height",
686 "pos": [
687 -600.955078125,
688 854
689 ]
690 },
691 {
692 "id": "9f0e91b8-5a4a-4f5a-a2a4-4ddc180df0fd",
693 "name": "scheduler",
694 "type": "COMBO",
695 "linkIds": [
696 662
697 ],
698 "label": "sampler",
699 "pos": [
700 -600.955078125,
701 874
702 ]
703 },
704 {
705 "id": "4710583f-3cb0-4091-87ab-dadd8a2e657c",
706 "name": "scheduler_1",
707 "type": "COMBO",
708 "linkIds": [
709 668
710 ],
711 "label": "scheduler",
712 "pos": [
713 -600.955078125,
714 894
715 ]
716 },
717 {
718 "id": "977ce57d-3764-491c-8d2d-543754cfbaf1",
719 "name": "seed",
720 "type": "INT",
721 "linkIds": [
722 667,
723 804
724 ],
725 "pos": [
726 -600.955078125,
727 914
728 ]
729 },
730 {
731 "id": "143494fb-a40e-423f-be3b-ecc808b408b0",
732 "name": "unet_name",
733 "type": "COMBO",
734 "linkIds": [
735 663
736 ],
737 "pos": [
738 -600.955078125,
739 934
740 ]
741 },
742 {
743 "id": "d8528289-e121-45ed-9c31-e6370ce4ba5e",
744 "name": "clip_name",
745 "type": "COMBO",
746 "linkIds": [
747 664
748 ],
749 "pos": [
750 -600.955078125,
751 954
752 ]
753 },
754 {
755 "id": "f03d1fb0-d592-4997-b55e-e7a2549c36e5",
756 "name": "vae_name",
757 "type": "COMBO",
758 "linkIds": [
759 665
760 ],
761 "pos": [
762 -600.955078125,
763 974
764 ]
765 },
766 {
767 "id": "c2d95dbf-7f92-4c0b-a138-b9b5d1472e7f",
768 "name": "device",
769 "type": "COMBO",
770 "linkIds": [
771 729
772 ],
773 "label": "cache_device",
774 "pos": [
775 -600.955078125,
776 994
777 ]
778 },
779 {
780 "id": "974d6751-be03-4afc-911f-a0d43f7cb906",
781 "name": "dtype",
782 "type": "COMBO",
783 "linkIds": [
784 730
785 ],
786 "label": "dtype",
787 "pos": [
788 -600.955078125,
789 1014
790 ]
791 },
792 {
793 "id": "c11b216a-e05d-49a4-b776-293022d01a52",
794 "name": "clip_name_1",
795 "type": "COMBO",
796 "linkIds": [
797 746
798 ],
799 "label": "PE_model",
800 "pos": [
801 -600.955078125,
802 1034
803 ]
804 },
805 {
806 "id": "6bbe4c8a-0ce9-4576-9468-697a165b98b4",
807 "name": "images.image_1",
808 "type": "IMAGE",
809 "linkIds": [
810 710,
811 750
812 ],
813 "label": "image_1",
814 "pos": [
815 -600.955078125,
816 1054
817 ]
818 },
819 {
820 "id": "5e9080e7-bbd0-4363-9e25-aaa201f9ff01",
821 "name": "images.image_2",
822 "type": "IMAGE",
823 "linkIds": [
824 711,
825 779
826 ],
827 "label": "image_2",
828 "pos": [
829 -600.955078125,
830 1074
831 ]
832 },
833 {
834 "id": "29bd6732-17d4-4ca7-aa9f-dc118c6c008a",
835 "name": "images.image_3",
836 "type": "IMAGE",
837 "linkIds": [
838 712,
839 780
840 ],
841 "label": "image_3",
842 "pos": [
843 -600.955078125,
844 1094
845 ]
846 },
847 {
848 "id": "c0899e22-8834-4c49-b0ec-5d2e1c9a4f9d",
849 "name": "images.image_4",
850 "type": "IMAGE",
851 "linkIds": [
852 713,
853 781
854 ],
855 "label": "image_4",
856 "pos": [
857 -600.955078125,
858 1114
859 ]
860 },
861 {
862 "id": "f4bb2fe2-583b-429d-83dc-0af6d4d3fdf8",
863 "name": "images.image_5_1",
864 "type": "IMAGE",
865 "linkIds": [
866 714,
867 782
868 ],
869 "label": "image_5",
870 "pos": [
871 -600.955078125,
872 1134
873 ]
874 },
875 {
876 "id": "4dc8dcc5-da5f-4dd4-82f4-479dabed8567",
877 "name": "images.image_6",
878 "type": "IMAGE",
879 "linkIds": [
880 715,
881 783
882 ],
883 "label": "image_6",
884 "pos": [
885 -600.955078125,
886 1154
887 ]
888 },
889 {
890 "id": "58ac7e94-91ff-4992-9022-fd67902782eb",
891 "name": "images.image_7",
892 "type": "IMAGE",
893 "linkIds": [
894 716,
895 784
896 ],
897 "label": "image_7",
898 "pos": [
899 -600.955078125,
900 1174
901 ]
902 },
903 {
904 "id": "b736a3f9-62a7-4b77-ad2b-9ed40a482949",
905 "name": "images.image_8",
906 "type": "IMAGE",
907 "linkIds": [
908 717,
909 785
910 ],
911 "label": "image_8",
912 "pos": [
913 -600.955078125,
914 1194
915 ]
916 },
917 {
918 "id": "79883453-5e79-4003-a7ef-8d9156cffcc4",
919 "name": "images.image_9",
920 "type": "IMAGE",
921 "linkIds": [
922 718,
923 786
924 ],
925 "label": "image_9",
926 "pos": [
927 -600.955078125,
928 1214
929 ]
930 },
931 {
932 "id": "68c8b3fa-d3fd-4281-82ba-09030a9918dc",
933 "name": "images.image_10",
934 "type": "IMAGE",
935 "linkIds": [
936 719,
937 787
938 ],
939 "label": "image_10",
940 "pos": [
941 -600.955078125,
942 1234
943 ]
944 }
945 ],
946 "outputs": [
947 {
948 "id": "f6f3effc-0961-4c17-b52c-a77c16ca6aa4",
949 "name": "IMAGE",
950 "type": "IMAGE",
951 "linkIds": [
952 650
953 ],
954 "localized_name": "IMAGE",
955 "pos": [
956 1984,
957 664
958 ]
959 }
960 ],
961 "widgets": [],
962 "nodes": [
963 {
964 "id": 451,
965 "type": "UNETLoader",
966 "pos": [
967 -190,
968 410
969 ],
970 "size": [
971 510,
972 90
973 ],
974 "flags": [],
975 "order": 1,
976 "mode": 0,
977 "inputs": [
978 {
979 "localized_name": "unet_name",
980 "name": "unet_name",
981 "type": "COMBO",
982 "widget": {
983 "name": "unet_name"
984 },
985 "link": 663
986 }
987 ],
988 "outputs": [
989 {
990 "localized_name": "MODEL",
991 "name": "MODEL",
992 "type": "MODEL",
993 "links": [
994 688
995 ]
996 }
997 ],
998 "properties": {
999 "Node name for S&R": "UNETLoader",
1000 "models": [
1001 {
1002 "name": "qwen_image_2.1_int8_convrot.safetensors",
1003 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors",
1004 "directory": "diffusion_models"
1005 }
1006 ]
1007 },
1008 "widgets_values": [
1009 "qwen_image_2.1_int8_convrot.safetensors",
1010 "default"
1011 ],
1012 "widgets_values_named": {
1013 "unet_name": "qwen_image_2.1_int8_convrot.safetensors",
1014 "weight_dtype": "default"
1015 }
1016 },
1017 {
1018 "id": 453,
1019 "type": "CLIPLoader",
1020 "pos": [
1021 -190,
1022 570
1023 ],
1024 "size": [
1025 510,
1026 120
1027 ],
1028 "flags": [],
1029 "order": 2,
1030 "mode": 0,
1031 "inputs": [
1032 {
1033 "localized_name": "clip_name",
1034 "name": "clip_name",
1035 "type": "COMBO",
1036 "widget": {
1037 "name": "clip_name"
1038 },
1039 "link": 664
1040 }
1041 ],
1042 "outputs": [
1043 {
1044 "localized_name": "CLIP",
1045 "name": "CLIP",
1046 "type": "CLIP",
1047 "links": [
1048 721
1049 ]
1050 }
1051 ],
1052 "properties": {
1053 "Node name for S&R": "CLIPLoader",
1054 "models": [
1055 {
1056 "name": "qwen3vl_8b_int8_convrot.safetensors",
1057 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors",
1058 "directory": "text_encoders"
1059 }
1060 ]
1061 },
1062 "widgets_values": [
1063 "qwen3vl_8b_int8_convrot.safetensors",
1064 "qwen_image",
1065 "default"
1066 ],
1067 "widgets_values_named": {
1068 "clip_name": "qwen3vl_8b_int8_convrot.safetensors",
1069 "type": "qwen_image",
1070 "device": "default"
1071 }
1072 },
1073 {
1074 "id": 454,
1075 "type": "VAELoader",
1076 "pos": [
1077 -190,
1078 770
1079 ],
1080 "size": [
1081 510,
1082 70
1083 ],
1084 "flags": [],
1085 "order": 3,
1086 "mode": 0,
1087 "inputs": [
1088 {
1089 "localized_name": "vae_name",
1090 "name": "vae_name",
1091 "type": "COMBO",
1092 "widget": {
1093 "name": "vae_name"
1094 },
1095 "link": 665
1096 }
1097 ],
1098 "outputs": [
1099 {
1100 "localized_name": "VAE",
1101 "name": "VAE",
1102 "type": "VAE",
1103 "links": [
1104 649,
1105 720
1106 ]
1107 }
1108 ],
1109 "properties": {
1110 "Node name for S&R": "VAELoader",
1111 "models": [
1112 {
1113 "name": "qwen_image_2.1_vae_bf16.safetensors",
1114 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/vae/qwen_image_2.1_vae_bf16.safetensors",
1115 "directory": "vae"
1116 }
1117 ]
1118 },
1119 "widgets_values": [
1120 "qwen_image_2.1_vae_bf16.safetensors"
1121 ],
1122 "widgets_values_named": {
1123 "vae_name": "qwen_image_2.1_vae_bf16.safetensors"
1124 }
1125 },
1126 {
1127 "id": 456,
1128 "type": "EmptyLatentImage",
1129 "pos": [
1130 -70,
1131 1010
1132 ],
1133 "size": [
1134 300,
1135 120
1136 ],
1137 "flags": [],
1138 "order": 4,
1139 "mode": 0,
1140 "inputs": [
1141 {
1142 "localized_name": "width",
1143 "name": "width",
1144 "type": "INT",
1145 "widget": {
1146 "name": "width"
1147 },
1148 "link": 660
1149 },
1150 {
1151 "localized_name": "height",
1152 "name": "height",
1153 "type": "INT",
1154 "widget": {
1155 "name": "height"
1156 },
1157 "link": 661
1158 }
1159 ],
1160 "outputs": [
1161 {
1162 "localized_name": "LATENT",
1163 "name": "LATENT",
1164 "type": "LATENT",
1165 "links": [
1166 684
1167 ]
1168 }
1169 ],
1170 "properties": {
1171 "Node name for S&R": "EmptyLatentImage"
1172 },
1173 "widgets_values": [
1174 1024,
1175 1024,
1176 1
1177 ],
1178 "widgets_values_named": {
1179 "width": 1024,
1180 "height": 1024,
1181 "batch_size": 1
1182 }
1183 },
1184 {
1185 "id": 457,
1186 "type": "VAEDecode",
1187 "pos": [
1188 1620,
1189 660
1190 ],
1191 "size": [
1192 230,
1193 60
1194 ],
1195 "flags": [],
1196 "order": 5,
1197 "mode": 0,
1198 "inputs": [
1199 {
1200 "localized_name": "samples",
1201 "name": "samples",
1202 "type": "LATENT",
1203 "link": 651
1204 },
1205 {
1206 "localized_name": "vae",
1207 "name": "vae",
1208 "type": "VAE",
1209 "link": 649
1210 }
1211 ],
1212 "outputs": [
1213 {
1214 "localized_name": "IMAGE",
1215 "name": "IMAGE",
1216 "type": "IMAGE",
1217 "links": [
1218 650
1219 ]
1220 }
1221 ],
1222 "properties": {
1223 "Node name for S&R": "VAEDecode"
1224 }
1225 },
1226 {
1227 "id": 458,
1228 "type": "KSampler",
1229 "pos": [
1230 1180,
1231 640
1232 ],
1233 "size": [
1234 270,
1235 270
1236 ],
1237 "flags": [],
1238 "order": 6,
1239 "mode": 0,
1240 "inputs": [
1241 {
1242 "localized_name": "model",
1243 "name": "model",
1244 "type": "MODEL",
1245 "link": 689
1246 },
1247 {
1248 "localized_name": "positive",
1249 "name": "positive",
1250 "type": "CONDITIONING",
1251 "link": 722
1252 },
1253 {
1254 "localized_name": "negative",
1255 "name": "negative",
1256 "type": "CONDITIONING",
1257 "link": 723
1258 },
1259 {
1260 "localized_name": "latent_image",
1261 "name": "latent_image",
1262 "type": "LATENT",
1263 "link": 682
1264 },
1265 {
1266 "localized_name": "seed",
1267 "name": "seed",
1268 "type": "INT",
1269 "widget": {
1270 "name": "seed"
1271 },
1272 "link": 667
1273 },
1274 {
1275 "localized_name": "steps",
1276 "name": "steps",
1277 "type": "INT",
1278 "widget": {
1279 "name": "steps"
1280 },
1281 "link": 659
1282 },
1283 {
1284 "localized_name": "cfg",
1285 "name": "cfg",
1286 "type": "FLOAT",
1287 "widget": {
1288 "name": "cfg"
1289 },
1290 "link": 658
1291 },
1292 {
1293 "localized_name": "sampler_name",
1294 "name": "sampler_name",
1295 "type": "COMBO",
1296 "widget": {
1297 "name": "sampler_name"
1298 },
1299 "link": 662
1300 },
1301 {
1302 "localized_name": "scheduler",
1303 "name": "scheduler",
1304 "type": "COMBO",
1305 "widget": {
1306 "name": "scheduler"
1307 },
1308 "link": 668
1309 }
1310 ],
1311 "outputs": [
1312 {
1313 "localized_name": "LATENT",
1314 "name": "LATENT",
1315 "type": "LATENT",
1316 "links": [
1317 651
1318 ]
1319 }
1320 ],
1321 "properties": {
1322 "Node name for S&R": "KSampler"
1323 },
1324 "widgets_values": [
1325 0,
1326 "randomize",
1327 25,
1328 1,
1329 "euler",
1330 "simple",
1331 1
1332 ],
1333 "widgets_values_named": {
1334 "seed": 0,
1335 "control_after_generate": "randomize",
1336 "steps": 25,
1337 "cfg": 1,
1338 "sampler_name": "euler",
1339 "scheduler": "simple",
1340 "denoise": 1
1341 }
1342 },
1343 {
1344 "id": 468,
1345 "type": "ComfySwitchNode",
1346 "pos": [
1347 570,
1348 1040
1349 ],
1350 "size": [
1351 270,
1352 80
1353 ],
1354 "flags": [],
1355 "order": 7,
1356 "mode": 0,
1357 "inputs": [
1358 {
1359 "localized_name": "on_false",
1360 "name": "on_false",
1361 "shape": 7,
1362 "type": "LATENT",
1363 "link": 724
1364 },
1365 {
1366 "localized_name": "on_true",
1367 "name": "on_true",
1368 "shape": 7,
1369 "type": "LATENT",
1370 "link": 684
1371 },
1372 {
1373 "localized_name": "switch",
1374 "name": "switch",
1375 "type": "BOOLEAN",
1376 "widget": {
1377 "name": "switch"
1378 },
1379 "link": 703
1380 }
1381 ],
1382 "outputs": [
1383 {
1384 "localized_name": "output",
1385 "name": "output",
1386 "type": "LATENT",
1387 "links": [
1388 682
1389 ]
1390 }
1391 ],
1392 "properties": {
1393 "Node name for S&R": "ComfySwitchNode"
1394 },
1395 "widgets_values": [
1396 false
1397 ],
1398 "widgets_values_named": {
1399 "switch": false
1400 }
1401 },
1402 {
1403 "id": 469,
1404 "type": "QwenImage21Cache",
1405 "pos": [
1406 1180,
1407 460
1408 ],
1409 "size": [
1410 270,
1411 90
1412 ],
1413 "flags": [],
1414 "order": 8,
1415 "mode": 0,
1416 "inputs": [
1417 {
1418 "localized_name": "model",
1419 "name": "model",
1420 "type": "MODEL",
1421 "link": 688
1422 },
1423 {
1424 "localized_name": "device",
1425 "name": "device",
1426 "type": "COMBO",
1427 "widget": {
1428 "name": "device"
1429 },
1430 "link": 729
1431 },
1432 {
1433 "localized_name": "dtype",
1434 "name": "dtype",
1435 "type": "COMBO",
1436 "widget": {
1437 "name": "dtype"
1438 },
1439 "link": 730
1440 }
1441 ],
1442 "outputs": [
1443 {
1444 "localized_name": "MODEL",
1445 "name": "MODEL",
1446 "type": "MODEL",
1447 "links": [
1448 689
1449 ]
1450 }
1451 ],
1452 "properties": {
1453 "Node name for S&R": "QwenImage21Cache"
1454 },
1455 "widgets_values": [
1456 "auto",
1457 "default"
1458 ],
1459 "widgets_values_named": {
1460 "device": "auto",
1461 "dtype": "default"
1462 }
1463 },
1464 {
1465 "id": 474,
1466 "type": "TextEncodeQwenImage21",
1467 "pos": [
1468 500,
1469 430
1470 ],
1471 "size": [
1472 460,
1473 520
1474 ],
1475 "flags": [],
1476 "order": 9,
1477 "mode": 0,
1478 "inputs": [
1479 {
1480 "localized_name": "clip",
1481 "name": "clip",
1482 "type": "CLIP",
1483 "link": 721
1484 },
1485 {
1486 "localized_name": "image_1",
1487 "name": "images.image_1",
1488 "shape": 7,
1489 "type": "IMAGE",
1490 "link": 710
1491 },
1492 {
1493 "localized_name": "vae",
1494 "name": "vae",
1495 "shape": 7,
1496 "type": "VAE",
1497 "link": 720
1498 },
1499 {
1500 "localized_name": "prompt",
1501 "name": "prompt",
1502 "type": "STRING",
1503 "widget": {
1504 "name": "prompt"
1505 },
1506 "link": 743
1507 },
1508 {
1509 "localized_name": "negative_prompt",
1510 "name": "negative_prompt",
1511 "type": "STRING",
1512 "widget": {
1513 "name": "negative_prompt"
1514 },
1515 "link": 727
1516 },
1517 {
1518 "localized_name": "resolution",
1519 "name": "resolution",
1520 "type": "INT",
1521 "widget": {
1522 "name": "resolution"
1523 },
1524 "link": 725
1525 },
1526 {
1527 "localized_name": "image_12",
1528 "name": "images.image_12",
1529 "shape": 7,
1530 "type": "IMAGE",
1531 "link": null
1532 },
1533 {
1534 "localized_name": "image_7",
1535 "name": "images.image_7",
1536 "shape": 7,
1537 "type": "IMAGE",
1538 "link": 716
1539 },
1540 {
1541 "localized_name": "image_8",
1542 "name": "images.image_8",
1543 "shape": 7,
1544 "type": "IMAGE",
1545 "link": 717
1546 },
1547 {
1548 "localized_name": "image_9",
1549 "name": "images.image_9",
1550 "shape": 7,
1551 "type": "IMAGE",
1552 "link": 718
1553 },
1554 {
1555 "localized_name": "image_10",
1556 "name": "images.image_10",
1557 "shape": 7,
1558 "type": "IMAGE",
1559 "link": 719
1560 },
1561 {
1562 "localized_name": "image_11",
1563 "name": "images.image_11",
1564 "shape": 7,
1565 "type": "IMAGE",
1566 "link": null
1567 },
1568 {
1569 "localized_name": "image_2",
1570 "name": "images.image_2",
1571 "shape": 7,
1572 "type": "IMAGE",
1573 "link": 711
1574 },
1575 {
1576 "localized_name": "image_3",
1577 "name": "images.image_3",
1578 "shape": 7,
1579 "type": "IMAGE",
1580 "link": 712
1581 },
1582 {
1583 "localized_name": "image_4",
1584 "name": "images.image_4",
1585 "shape": 7,
1586 "type": "IMAGE",
1587 "link": 713
1588 },
1589 {
1590 "localized_name": "image_5",
1591 "name": "images.image_5",
1592 "shape": 7,
1593 "type": "IMAGE",
1594 "link": 714
1595 },
1596 {
1597 "localized_name": "image_6",
1598 "name": "images.image_6",
1599 "shape": 7,
1600 "type": "IMAGE",
1601 "link": 715
1602 }
1603 ],
1604 "outputs": [
1605 {
1606 "localized_name": "positive",
1607 "name": "positive",
1608 "type": "CONDITIONING",
1609 "links": [
1610 722
1611 ]
1612 },
1613 {
1614 "localized_name": "negative",
1615 "name": "negative",
1616 "type": "CONDITIONING",
1617 "links": [
1618 723
1619 ]
1620 },
1621 {
1622 "localized_name": "latent",
1623 "name": "latent",
1624 "type": "LATENT",
1625 "links": [
1626 724
1627 ]
1628 }
1629 ],
1630 "properties": {
1631 "Node name for S&R": "TextEncodeQwenImage21"
1632 },
1633 "widgets_values": [
1634 "",
1635 "",
1636 1024
1637 ],
1638 "widgets_values_named": {
1639 "prompt": "",
1640 "negative_prompt": "",
1641 "resolution": 1024
1642 }
1643 },
1644 {
1645 "id": 477,
1646 "type": "CLIPLoader",
1647 "pos": [
1648 -180,
1649 -480
1650 ],
1651 "size": [
1652 530,
1653 120
1654 ],
1655 "flags": [],
1656 "order": 10,
1657 "mode": 0,
1658 "inputs": [
1659 {
1660 "localized_name": "clip_name",
1661 "name": "clip_name",
1662 "type": "COMBO",
1663 "widget": {
1664 "name": "clip_name"
1665 },
1666 "link": 746
1667 }
1668 ],
1669 "outputs": [
1670 {
1671 "localized_name": "CLIP",
1672 "name": "CLIP",
1673 "type": "CLIP",
1674 "links": [
1675 800
1676 ]
1677 }
1678 ],
1679 "properties": {
1680 "Node name for S&R": "CLIPLoader",
1681 "models": [
1682 {
1683 "name": "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors",
1684 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors",
1685 "directory": "text_encoders"
1686 }
1687 ]
1688 },
1689 "widgets_values": [
1690 "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors",
1691 "qwen_image",
1692 "default"
1693 ],
1694 "widgets_values_named": {
1695 "clip_name": "qwen3.5_9b_qwen_image_2.1_pe_i2i.int8_convrot.safetensors",
1696 "type": "qwen_image",
1697 "device": "default"
1698 }
1699 },
1700 {
1701 "id": 479,
1702 "type": "PrimitiveStringMultiline",
1703 "pos": [
1704 -180,
1705 10
1706 ],
1707 "size": [
1708 620,
1709 240
1710 ],
1711 "flags": [],
1712 "order": 0,
1713 "mode": 0,
1714 "inputs": [],
1715 "outputs": [
1716 {
1717 "localized_name": "STRING",
1718 "name": "STRING",
1719 "type": "STRING",
1720 "links": [
1721 901
1722 ]
1723 }
1724 ],
1725 "title": "Text (System Prompt)",
1726 "properties": {
1727 "Node name for S&R": "PrimitiveStringMultiline"
1728 },
1729 "widgets_values": [
1730 "# Edit Prompt Enhancer — General (v2, 精简版)\n\n**FIRST — there are TWO separate language decisions. Do NOT conflate them.**\n\n**(A) Language of the rewritten prompt's DESCRIPTIVE prose — every word OUTSIDE double quotes (the description you write for the diffusion model, NOT the text painted into the image). This decision is final and non-negotiable:**\n- User instruction is in Chinese → write the description in Chinese.\n- User instruction is in English → write the description in English.\n- User instruction is in ANY other language (Japanese, Korean, French, Spanish, Thai, etc.) → write the description in English.\n\n**(B) Language of the TEXT THAT WILL BE RENDERED INTO THE OUTPUT IMAGE — the content INSIDE double quotes. Decide it in this strict priority order:**\n1. If the user's instruction gives the exact text to write, OR names a target language for the text (e.g. \"改成'夏日特惠'\", \"把标题写成英文\", \"add a Japanese title\", \"write the caption in Thai\") → render exactly that text / in exactly that specified language.\n2. Otherwise, if the input image already contains text → render in the DOMINANT language of the image's existing text — even when the instruction is written in a different language.\n3. Otherwise (the image contains no text AND the instruction names no target language) → render in the language of the user's instruction itself — including Japanese, Korean, Thai, Arabic, French, etc. Do NOT force it to English.\nWorked example: image is mostly Thai, instruction is in English asking to add/redesign a title without giving the exact words or a language → the rendered (quoted) text must be **Thai** (the image's dominant language), while the surrounding description (A) is still written in English.\n\nTwo reinforcements on decision (B): all rendered (quoted) text must be **monolingual** — do not mix Chinese and English inside the quotes and do not emit a bilingual pair unless the user explicitly asks for one. And **genre never overrides input language**: a \"spec sheet / cinematic data-document / storyboard / technical parameter\" look is achieved through layout and typography, NOT by switching rendered labels to English — every header, label, and caption stays in the decided language (standardized units and user-given proper nouns may remain Latin).\n\nYou are an expert at clarifying image editing instructions. Given a user's vague or ambiguous edit instruction and the input image(s), rewrite it into a precise, unambiguous, actionable editing directive. An input image is ALWAYS present — this is always an image-editing task, never text-to-image from nothing.\n\n## Core Objective\n\nRewrite the instruction so a downstream image-editing model can execute it without guessing — anchored on what the input image(s) actually show, faithful to the user's intent, inventing nothing.\n\n**How much you build is intent-branched.** When the user wants *this picture changed* (a local object/attribute/background edit, a text or UI edit, a quality or style change, a viewpoint/canvas transform), clarify and constrain: say exactly what changes, and let everything else stand. When the user wants *a new picture of this subject* (placing a subject in a new scene, compositing across images, a photo-shoot or poster or infographic built from a reference), construct actively: design the scene, lighting, composition and layout to a professional standard. Scale the elaboration to what was asked — a plain placement stays restrained, a styled shoot or a publication-grade poster is built out fully.\n\n## The Governing Principle — Attribute Disentanglement at Full Strength\n\n**Edit exactly the attribute(s) the user named, push each to a strong and unmistakable degree, and hold everything else at input fidelity.**\n\nBoth halves matter, and the two failure modes are symmetric:\n\n- **Leakage** — touching what the user did not name (a sharpen that re-grades color, an upscale that reframes, a style change that drifts a face, an outfit swap that drops an accessory, a background change that \"helpfully\" cleans up something unmentioned).\n- **Under-editing** — an output a viewer could mistake for the unedited input, because the requested change was applied faintly.\n\nPreservation locks **content, never edit strength**. Recognizability is bought by naming what stays fixed, not by holding the effect back.\n\n## What to Anchor, What to Decide\n\n**Anchor on the image.** Every spatial, tonal and contextual claim comes from what is visibly there. If you are unsure a detail exists, leave it out — a preserved element described at a higher level of abstraction is always safer than an invented specific.\n\n**Say what stays, without repainting it.** Name the untargeted content by type, position and role rather than describing its appearance, and prefer one blanket preservation clause over walking the frame. A preservation description reads to the model as a generation instruction: the more concretely you describe something you meant to keep, the more likely it drifts. Describe appearance concretely only for what you are actually changing, or when it is the only way to disambiguate between similar objects.\n\n**Identity is the hardest invariant.** A person's facial identity and the personal accessories that make them recognizable; a product's exact design, markings and count; and the input's rendering medium (photograph, anime, illustration, sketch, 3D render, painting) all survive every edit unless the user explicitly targets them. When identity comes from a reference image, point at that image rather than describing features in words — verbal descriptions make the model regenerate and degrade the likeness.\n\n**Resolve ambiguity, then commit.** Turn vague intent, imprecise spatial reference and unparameterized style words into something concrete and observable. Translate abstract quality language into the visual properties it implies. Where the instruction offers alternatives or contradicts itself, pick the most reasonable reading and state it as a decision. Keep the user's own action verb, spatial relations and described state intact, and treat anything they asked to preserve as absolute. Preserve creative or physically impossible intent rather than correcting it.\n\n**Only what was asked.** Do not add operations the user did not request, and do not clean up unmentioned defects, overlays or clutter however prominent they look. When an edit removes, moves or reveals something, say enough about the newly exposed region that the result stays physically coherent.\n\n**Text in the image is literal.** Whenever readable text will appear in the output, commit to the exact characters — every element, quoted, nothing summarized or abbreviated away. Text you cannot commit to should not be added at all. Match the typography and language the input establishes unless the user asks otherwise. When the operation extends the canvas outward, name it as outpainting explicitly.\n\n**Write it as an instruction.** Lead with the operation, not a description of the finished picture, and write from the perspective of someone holding only the input image(s).\n\n## Thinking Process\n\nBefore emitting the final prompt, reason through: what the image(s) actually contain (including a complete reading of any text present); what the user is asking for and which attributes that names; what must therefore stay fixed; and finally the composed directive. Close with a check that every visible element is either the target of the edit or covered by what stays fixed, that the requested change is unmistakable, that nothing outside the target was touched, and that every quoted string obeys language decision (B).\n\n## Image Reference Rules\n\nFor Multi-Image Input (N >= 2), the rewritten instruction MUST use `<image1>`, `<image2>`, ... to refer to each input image. Do not use natural language references like \"图1\", \"第一张图\", \"the first image\", or \"image A\". This tagging format is mandatory and non-negotiable. For single-image input (N = 1), do NOT use tags — refer to the image naturally (\"图像\", \"图片中\", \"the image\").\n\nState each image's role explicitly — which one is the canvas whose composition and untargeted content survive, and which supply material to transfer — and say what is taken from each. For scene generation with no canvas (合影/合照 and the like), all images serve as identity sources. Describe every referenced image individually; never compress several into a range or a group to avoid describing them one by one.\n\n## Output Format\nOutput ONLY the rewritten editing instruction itself: one single continuous paragraph of plain text.\n\nFormatting rules:\n- The entire rewritten prompt must be a single continuous paragraph with NO line breaks or newline characters.\n- The response must contain nothing except the instruction itself: no object or array wrapper, no field names or key-value pairs, no headings, labels, or prefaces, no greetings, explanations, or commentary, no markdown, and no code fences. Begin with the first word of the instruction and end with its last word.\n- Do not wrap the whole instruction in quotes: double quotes are reserved for text that will be RENDERED in the image (next rule).\n- All text that should appear as visible, readable content in the output image must be enclosed in double quotes (\"\"). Descriptive or structural language that does not appear as rendered text should NOT be quoted.\n- **Never include any resolution or aspect ratio information** (e.g., \"2:3\", \"16:9\", \"1920x1080\", \"2K\", \"4K\"). Output size is decided downstream, not by you.\n- Write it out in full — no ellipsis, no truncation.\n- State requirements affirmatively (\"保持背景与输入图完全一致\") rather than as prohibitions (\"禁止改变背景\"). Standard preservation phrasing \"保持/保留[X]不变\" is fine.\n- Be precise and decisive: no hedging, no unresolved alternatives, no vague degree words left unresolved.\n- The descriptive prose (outside double quotes) follows language decision (A); the text rendered inside the image (inside double quotes) follows language decision (B). Retain proper nouns and domain-specific terms in their original language, placed in English double quotes.\n- **Language-purge self-check (do this last)**: re-scan every double-quoted string — the text that will be RENDERED in the image — and enforce language decision (B). No quoted string may mix Chinese and English, form a bilingual pair, or carry a parenthetical translation gloss unless the user explicitly asked. Standardized units and user-given proper nouns may remain Latin.\n\nThe user's edit instruction to rewrite is:"
1731 ],
1732 "widgets_values_named": {
1733 "value": "# Edit Prompt Enhancer — General (v2, 精简版)\n\n**FIRST — there are TWO separate language decisions. Do NOT conflate them.**\n\n**(A) Language of the rewritten prompt's DESCRIPTIVE prose — every word OUTSIDE double quotes (the description you write for the diffusion model, NOT the text painted into the image). This decision is final and non-negotiable:**\n- User instruction is in Chinese → write the description in Chinese.\n- User instruction is in English → write the description in English.\n- User instruction is in ANY other language (Japanese, Korean, French, Spanish, Thai, etc.) → write the description in English.\n\n**(B) Language of the TEXT THAT WILL BE RENDERED INTO THE OUTPUT IMAGE — the content INSIDE double quotes. Decide it in this strict priority order:**\n1. If the user's instruction gives the exact text to write, OR names a target language for the text (e.g. \"改成'夏日特惠'\", \"把标题写成英文\", \"add a Japanese title\", \"write the caption in Thai\") → render exactly that text / in exactly that specified language.\n2. Otherwise, if the input image already contains text → render in the DOMINANT language of the image's existing text — even when the instruction is written in a different language.\n3. Otherwise (the image contains no text AND the instruction names no target language) → render in the language of the user's instruction itself — including Japanese, Korean, Thai, Arabic, French, etc. Do NOT force it to English.\nWorked example: image is mostly Thai, instruction is in English asking to add/redesign a title without giving the exact words or a language → the rendered (quoted) text must be **Thai** (the image's dominant language), while the surrounding description (A) is still written in English.\n\nTwo reinforcements on decision (B): all rendered (quoted) text must be **monolingual** — do not mix Chinese and English inside the quotes and do not emit a bilingual pair unless the user explicitly asks for one. And **genre never overrides input language**: a \"spec sheet / cinematic data-document / storyboard / technical parameter\" look is achieved through layout and typography, NOT by switching rendered labels to English — every header, label, and caption stays in the decided language (standardized units and user-given proper nouns may remain Latin).\n\nYou are an expert at clarifying image editing instructions. Given a user's vague or ambiguous edit instruction and the input image(s), rewrite it into a precise, unambiguous, actionable editing directive. An input image is ALWAYS present — this is always an image-editing task, never text-to-image from nothing.\n\n## Core Objective\n\nRewrite the instruction so a downstream image-editing model can execute it without guessing — anchored on what the input image(s) actually show, faithful to the user's intent, inventing nothing.\n\n**How much you build is intent-branched.** When the user wants *this picture changed* (a local object/attribute/background edit, a text or UI edit, a quality or style change, a viewpoint/canvas transform), clarify and constrain: say exactly what changes, and let everything else stand. When the user wants *a new picture of this subject* (placing a subject in a new scene, compositing across images, a photo-shoot or poster or infographic built from a reference), construct actively: design the scene, lighting, composition and layout to a professional standard. Scale the elaboration to what was asked — a plain placement stays restrained, a styled shoot or a publication-grade poster is built out fully.\n\n## The Governing Principle — Attribute Disentanglement at Full Strength\n\n**Edit exactly the attribute(s) the user named, push each to a strong and unmistakable degree, and hold everything else at input fidelity.**\n\nBoth halves matter, and the two failure modes are symmetric:\n\n- **Leakage** — touching what the user did not name (a sharpen that re-grades color, an upscale that reframes, a style change that drifts a face, an outfit swap that drops an accessory, a background change that \"helpfully\" cleans up something unmentioned).\n- **Under-editing** — an output a viewer could mistake for the unedited input, because the requested change was applied faintly.\n\nPreservation locks **content, never edit strength**. Recognizability is bought by naming what stays fixed, not by holding the effect back.\n\n## What to Anchor, What to Decide\n\n**Anchor on the image.** Every spatial, tonal and contextual claim comes from what is visibly there. If you are unsure a detail exists, leave it out — a preserved element described at a higher level of abstraction is always safer than an invented specific.\n\n**Say what stays, without repainting it.** Name the untargeted content by type, position and role rather than describing its appearance, and prefer one blanket preservation clause over walking the frame. A preservation description reads to the model as a generation instruction: the more concretely you describe something you meant to keep, the more likely it drifts. Describe appearance concretely only for what you are actually changing, or when it is the only way to disambiguate between similar objects.\n\n**Identity is the hardest invariant.** A person's facial identity and the personal accessories that make them recognizable; a product's exact design, markings and count; and the input's rendering medium (photograph, anime, illustration, sketch, 3D render, painting) all survive every edit unless the user explicitly targets them. When identity comes from a reference image, point at that image rather than describing features in words — verbal descriptions make the model regenerate and degrade the likeness.\n\n**Resolve ambiguity, then commit.** Turn vague intent, imprecise spatial reference and unparameterized style words into something concrete and observable. Translate abstract quality language into the visual properties it implies. Where the instruction offers alternatives or contradicts itself, pick the most reasonable reading and state it as a decision. Keep the user's own action verb, spatial relations and described state intact, and treat anything they asked to preserve as absolute. Preserve creative or physically impossible intent rather than correcting it.\n\n**Only what was asked.** Do not add operations the user did not request, and do not clean up unmentioned defects, overlays or clutter however prominent they look. When an edit removes, moves or reveals something, say enough about the newly exposed region that the result stays physically coherent.\n\n**Text in the image is literal.** Whenever readable text will appear in the output, commit to the exact characters — every element, quoted, nothing summarized or abbreviated away. Text you cannot commit to should not be added at all. Match the typography and language the input establishes unless the user asks otherwise. When the operation extends the canvas outward, name it as outpainting explicitly.\n\n**Write it as an instruction.** Lead with the operation, not a description of the finished picture, and write from the perspective of someone holding only the input image(s).\n\n## Thinking Process\n\nBefore emitting the final prompt, reason through: what the image(s) actually contain (including a complete reading of any text present); what the user is asking for and which attributes that names; what must therefore stay fixed; and finally the composed directive. Close with a check that every visible element is either the target of the edit or covered by what stays fixed, that the requested change is unmistakable, that nothing outside the target was touched, and that every quoted string obeys language decision (B).\n\n## Image Reference Rules\n\nFor Multi-Image Input (N >= 2), the rewritten instruction MUST use `<image1>`, `<image2>`, ... to refer to each input image. Do not use natural language references like \"图1\", \"第一张图\", \"the first image\", or \"image A\". This tagging format is mandatory and non-negotiable. For single-image input (N = 1), do NOT use tags — refer to the image naturally (\"图像\", \"图片中\", \"the image\").\n\nState each image's role explicitly — which one is the canvas whose composition and untargeted content survive, and which supply material to transfer — and say what is taken from each. For scene generation with no canvas (合影/合照 and the like), all images serve as identity sources. Describe every referenced image individually; never compress several into a range or a group to avoid describing them one by one.\n\n## Output Format\nOutput ONLY the rewritten editing instruction itself: one single continuous paragraph of plain text.\n\nFormatting rules:\n- The entire rewritten prompt must be a single continuous paragraph with NO line breaks or newline characters.\n- The response must contain nothing except the instruction itself: no object or array wrapper, no field names or key-value pairs, no headings, labels, or prefaces, no greetings, explanations, or commentary, no markdown, and no code fences. Begin with the first word of the instruction and end with its last word.\n- Do not wrap the whole instruction in quotes: double quotes are reserved for text that will be RENDERED in the image (next rule).\n- All text that should appear as visible, readable content in the output image must be enclosed in double quotes (\"\"). Descriptive or structural language that does not appear as rendered text should NOT be quoted.\n- **Never include any resolution or aspect ratio information** (e.g., \"2:3\", \"16:9\", \"1920x1080\", \"2K\", \"4K\"). Output size is decided downstream, not by you.\n- Write it out in full — no ellipsis, no truncation.\n- State requirements affirmatively (\"保持背景与输入图完全一致\") rather than as prohibitions (\"禁止改变背景\"). Standard preservation phrasing \"保持/保留[X]不变\" is fine.\n- Be precise and decisive: no hedging, no unresolved alternatives, no vague degree words left unresolved.\n- The descriptive prose (outside double quotes) follows language decision (A); the text rendered inside the image (inside double quotes) follows language decision (B). Retain proper nouns and domain-specific terms in their original language, placed in English double quotes.\n- **Language-purge self-check (do this last)**: re-scan every double-quoted string — the text that will be RENDERED in the image — and enforce language decision (B). No quoted string may mix Chinese and English, form a bilingual pair, or carry a parenthetical translation gloss unless the user explicitly asked. Standardized units and user-given proper nouns may remain Latin.\n\nThe user's edit instruction to rewrite is:"
1734 }
1735 },
1736 {
1737 "id": 480,
1738 "type": "PreviewAny",
1739 "pos": [
1740 1040,
1741 -480
1742 ],
1743 "size": [
1744 470,
1745 680
1746 ],
1747 "flags": [],
1748 "order": 11,
1749 "mode": 0,
1750 "inputs": [
1751 {
1752 "localized_name": "source",
1753 "name": "source",
1754 "type": "*",
1755 "link": 791
1756 }
1757 ],
1758 "outputs": [
1759 {
1760 "localized_name": "STRING",
1761 "name": "STRING",
1762 "type": "STRING",
1763 "links": [
1764 743
1765 ]
1766 }
1767 ],
1768 "properties": {
1769 "Node name for S&R": "PreviewAny"
1770 },
1771 "widgets_values": [],
1772 "widgets_values_named": []
1773 },
1774 {
1775 "id": 484,
1776 "type": "ComfySwitchNode",
1777 "pos": [
1778 620,
1779 120
1780 ],
1781 "size": [
1782 270,
1783 80
1784 ],
1785 "flags": [],
1786 "order": 12,
1787 "mode": 0,
1788 "inputs": [
1789 {
1790 "localized_name": "on_false",
1791 "name": "on_false",
1792 "shape": 7,
1793 "type": "STRING",
1794 "link": 739
1795 },
1796 {
1797 "localized_name": "on_true",
1798 "name": "on_true",
1799 "shape": 7,
1800 "type": "STRING",
1801 "link": 806
1802 },
1803 {
1804 "localized_name": "switch",
1805 "name": "switch",
1806 "type": "BOOLEAN",
1807 "widget": {
1808 "name": "switch"
1809 },
1810 "link": 741
1811 }
1812 ],
1813 "outputs": [
1814 {
1815 "localized_name": "output",
1816 "name": "output",
1817 "type": "STRING",
1818 "links": [
1819 791
1820 ]
1821 }
1822 ],
1823 "properties": {
1824 "Node name for S&R": "ComfySwitchNode"
1825 },
1826 "widgets_values": [
1827 false
1828 ],
1829 "widgets_values_named": {
1830 "switch": false
1831 }
1832 },
1833 {
1834 "id": 485,
1835 "type": "BatchImagesNode",
1836 "pos": [
1837 -180,
1838 -310
1839 ],
1840 "size": [
1841 230,
1842 270
1843 ],
1844 "flags": [],
1845 "order": 13,
1846 "mode": 0,
1847 "inputs": [
1848 {
1849 "localized_name": "image0",
1850 "name": "images.image0",
1851 "type": "IMAGE",
1852 "link": 750
1853 },
1854 {
1855 "localized_name": "image1",
1856 "name": "images.image1",
1857 "shape": 7,
1858 "type": "IMAGE",
1859 "link": 779
1860 },
1861 {
1862 "localized_name": "image5",
1863 "name": "images.image5",
1864 "shape": 7,
1865 "type": "IMAGE",
1866 "link": 780
1867 },
1868 {
1869 "localized_name": "image6",
1870 "name": "images.image6",
1871 "shape": 7,
1872 "type": "IMAGE",
1873 "link": 781
1874 },
1875 {
1876 "localized_name": "image7",
1877 "name": "images.image7",
1878 "shape": 7,
1879 "type": "IMAGE",
1880 "link": 782
1881 },
1882 {
1883 "localized_name": "image8",
1884 "name": "images.image8",
1885 "shape": 7,
1886 "type": "IMAGE",
1887 "link": 783
1888 },
1889 {
1890 "localized_name": "image9",
1891 "name": "images.image9",
1892 "shape": 7,
1893 "type": "IMAGE",
1894 "link": 784
1895 },
1896 {
1897 "localized_name": "image10",
1898 "name": "images.image10",
1899 "shape": 7,
1900 "type": "IMAGE",
1901 "link": 785
1902 },
1903 {
1904 "localized_name": "image11",
1905 "name": "images.image11",
1906 "shape": 7,
1907 "type": "IMAGE",
1908 "link": 786
1909 },
1910 {
1911 "localized_name": "image12",
1912 "name": "images.image12",
1913 "shape": 7,
1914 "type": "IMAGE",
1915 "link": 787
1916 },
1917 {
1918 "localized_name": "image13",
1919 "name": "images.image13",
1920 "shape": 7,
1921 "type": "IMAGE",
1922 "link": null
1923 },
1924 {
1925 "localized_name": "image2",
1926 "name": "images.image2",
1927 "shape": 7,
1928 "type": "IMAGE",
1929 "link": null
1930 }
1931 ],
1932 "outputs": [
1933 {
1934 "localized_name": "IMAGE",
1935 "name": "IMAGE",
1936 "type": "IMAGE",
1937 "links": [
1938 801
1939 ]
1940 }
1941 ],
1942 "properties": {
1943 "Node name for S&R": "BatchImagesNode"
1944 }
1945 },
1946 {
1947 "id": 500,
1948 "type": "TextGenerate",
1949 "pos": [
1950 500,
1951 -480
1952 ],
1953 "size": [
1954 400,
1955 460
1956 ],
1957 "flags": [],
1958 "order": 14,
1959 "mode": 0,
1960 "showAdvanced": true,
1961 "inputs": [
1962 {
1963 "localized_name": "clip",
1964 "name": "clip",
1965 "type": "CLIP",
1966 "link": 800
1967 },
1968 {
1969 "localized_name": "image",
1970 "name": "image",
1971 "shape": 7,
1972 "type": "IMAGE",
1973 "link": 801
1974 },
1975 {
1976 "localized_name": "video",
1977 "name": "video",
1978 "shape": 7,
1979 "type": "IMAGE",
1980 "link": null
1981 },
1982 {
1983 "localized_name": "audio",
1984 "name": "audio",
1985 "shape": 7,
1986 "type": "AUDIO",
1987 "link": null
1988 },
1989 {
1990 "localized_name": "system_prompt",
1991 "name": "system_prompt",
1992 "shape": 7,
1993 "type": "STRING",
1994 "link": 901
1995 },
1996 {
1997 "localized_name": "prompt",
1998 "name": "prompt",
1999 "type": "STRING",
2000 "widget": {
2001 "name": "prompt"
2002 },
2003 "link": 802
2004 },
2005 {
2006 "localized_name": "max_length",
2007 "name": "max_length",
2008 "type": "INT",
2009 "widget": {
2010 "name": "max_length"
2011 },
2012 "link": 903
2013 },
2014 {
2015 "localized_name": "seed",
2016 "name": "sampling_mode.seed",
2017 "type": "INT",
2018 "widget": {
2019 "name": "sampling_mode.seed"
2020 },
2021 "link": 804
2022 },
2023 {
2024 "localized_name": "thinking",
2025 "name": "thinking",
2026 "shape": 7,
2027 "type": "BOOLEAN",
2028 "widget": {
2029 "name": "thinking"
2030 },
2031 "link": 902
2032 }
2033 ],
2034 "outputs": [
2035 {
2036 "localized_name": "generated_text",
2037 "name": "generated_text",
2038 "type": "STRING",
2039 "links": [
2040 806
2041 ]
2042 },
2043 {
2044 "localized_name": "thinking",
2045 "name": "thinking",
2046 "type": "STRING",
2047 "links": null
2048 }
2049 ],
2050 "properties": {
2051 "Node name for S&R": "TextGenerate"
2052 },
2053 "widgets_values": [
2054 "",
2055 4096,
2056 "on",
2057 1,
2058 20,
2059 0.95,
2060 0,
2061 1,
2062 0,
2063 0,
2064 true,
2065 true,
2066 "auto"
2067 ],
2068 "widgets_values_named": {
2069 "prompt": "",
2070 "max_length": 4096,
2071 "sampling_mode": "on",
2072 "sampling_mode.temperature": 1,
2073 "sampling_mode.top_k": 20,
2074 "sampling_mode.top_p": 0.95,
2075 "sampling_mode.min_p": 0,
2076 "sampling_mode.repetition_penalty": 1,
2077 "sampling_mode.seed": 0,
2078 "sampling_mode.presence_penalty": 0,
2079 "thinking": true,
2080 "use_default_template": true,
2081 "mtp": "auto"
2082 }
2083 }
2084 ],
2085 "groups": [
2086 {
2087 "id": 34,
2088 "title": "Models",
2089 "bounding": [
2090 -200,
2091 300,
2092 530,
2093 590
2094 ],
2095 "color": "#3f789e",
2096 "flags": []
2097 },
2098 {
2099 "id": 35,
2100 "title": "Image Size",
2101 "bounding": [
2102 -200,
2103 920,
2104 530,
2105 250
2106 ],
2107 "color": "#3f789e",
2108 "flags": []
2109 },
2110 {
2111 "id": 36,
2112 "title": "Conditioning",
2113 "bounding": [
2114 360,
2115 300,
2116 700,
2117 860
2118 ],
2119 "color": "#3f789e",
2120 "flags": []
2121 },
2122 {
2123 "id": 37,
2124 "title": "Sampling",
2125 "bounding": [
2126 1090,
2127 300,
2128 470,
2129 860
2130 ],
2131 "color": "#3f789e",
2132 "flags": []
2133 },
2134 {
2135 "id": 38,
2136 "title": "Prompt Enhancer",
2137 "bounding": [
2138 -200,
2139 -560,
2140 1750,
2141 830
2142 ],
2143 "color": "#3f789e",
2144 "flags": []
2145 }
2146 ],
2147 "links": [
2148 {
2149 "id": 649,
2150 "origin_id": 454,
2151 "origin_slot": 0,
2152 "target_id": 457,
2153 "target_slot": 1,
2154 "type": "VAE"
2155 },
2156 {
2157 "id": 650,
2158 "origin_id": 457,
2159 "origin_slot": 0,
2160 "target_id": -20,
2161 "target_slot": 0,
2162 "type": "IMAGE"
2163 },
2164 {
2165 "id": 651,
2166 "origin_id": 458,
2167 "origin_slot": 0,
2168 "target_id": 457,
2169 "target_slot": 0,
2170 "type": "LATENT"
2171 },
2172 {
2173 "id": 682,
2174 "origin_id": 468,
2175 "origin_slot": 0,
2176 "target_id": 458,
2177 "target_slot": 3,
2178 "type": "LATENT"
2179 },
2180 {
2181 "id": 684,
2182 "origin_id": 456,
2183 "origin_slot": 0,
2184 "target_id": 468,
2185 "target_slot": 1,
2186 "type": "LATENT"
2187 },
2188 {
2189 "id": 688,
2190 "origin_id": 451,
2191 "origin_slot": 0,
2192 "target_id": 469,
2193 "target_slot": 0,
2194 "type": "MODEL"
2195 },
2196 {
2197 "id": 689,
2198 "origin_id": 469,
2199 "origin_slot": 0,
2200 "target_id": 458,
2201 "target_slot": 0,
2202 "type": "MODEL"
2203 },
2204 {
2205 "id": 722,
2206 "origin_id": 474,
2207 "origin_slot": 0,
2208 "target_id": 458,
2209 "target_slot": 1,
2210 "type": "CONDITIONING"
2211 },
2212 {
2213 "id": 723,
2214 "origin_id": 474,
2215 "origin_slot": 1,
2216 "target_id": 458,
2217 "target_slot": 2,
2218 "type": "CONDITIONING"
2219 },
2220 {
2221 "id": 724,
2222 "origin_id": 474,
2223 "origin_slot": 2,
2224 "target_id": 468,
2225 "target_slot": 0,
2226 "type": "LATENT"
2227 },
2228 {
2229 "id": 791,
2230 "origin_id": 484,
2231 "origin_slot": 0,
2232 "target_id": 480,
2233 "target_slot": 0,
2234 "type": "STRING"
2235 },
2236 {
2237 "id": 806,
2238 "origin_id": 500,
2239 "origin_slot": 0,
2240 "target_id": 484,
2241 "target_slot": 1,
2242 "type": "STRING"
2243 },
2244 {
2245 "id": 739,
2246 "origin_id": -10,
2247 "origin_slot": 1,
2248 "target_id": 484,
2249 "target_slot": 0,
2250 "type": "STRING"
2251 },
2252 {
2253 "id": 741,
2254 "origin_id": -10,
2255 "origin_slot": 2,
2256 "target_id": 484,
2257 "target_slot": 2,
2258 "type": "BOOLEAN"
2259 },
2260 {
2261 "id": 658,
2262 "origin_id": -10,
2263 "origin_slot": 6,
2264 "target_id": 458,
2265 "target_slot": 6,
2266 "type": "FLOAT"
2267 },
2268 {
2269 "id": 659,
2270 "origin_id": -10,
2271 "origin_slot": 7,
2272 "target_id": 458,
2273 "target_slot": 5,
2274 "type": "INT"
2275 },
2276 {
2277 "id": 703,
2278 "origin_id": -10,
2279 "origin_slot": 8,
2280 "target_id": 468,
2281 "target_slot": 2,
2282 "type": "BOOLEAN"
2283 },
2284 {
2285 "id": 660,
2286 "origin_id": -10,
2287 "origin_slot": 9,
2288 "target_id": 456,
2289 "target_slot": 0,
2290 "type": "INT"
2291 },
2292 {
2293 "id": 661,
2294 "origin_id": -10,
2295 "origin_slot": 10,
2296 "target_id": 456,
2297 "target_slot": 1,
2298 "type": "INT"
2299 },
2300 {
2301 "id": 662,
2302 "origin_id": -10,
2303 "origin_slot": 11,
2304 "target_id": 458,
2305 "target_slot": 7,
2306 "type": "COMBO"
2307 },
2308 {
2309 "id": 668,
2310 "origin_id": -10,
2311 "origin_slot": 12,
2312 "target_id": 458,
2313 "target_slot": 8,
2314 "type": "COMBO"
2315 },
2316 {
2317 "id": 667,
2318 "origin_id": -10,
2319 "origin_slot": 13,
2320 "target_id": 458,
2321 "target_slot": 4,
2322 "type": "INT"
2323 },
2324 {
2325 "id": 663,
2326 "origin_id": -10,
2327 "origin_slot": 14,
2328 "target_id": 451,
2329 "target_slot": 0,
2330 "type": "COMBO"
2331 },
2332 {
2333 "id": 664,
2334 "origin_id": -10,
2335 "origin_slot": 15,
2336 "target_id": 453,
2337 "target_slot": 0,
2338 "type": "COMBO"
2339 },
2340 {
2341 "id": 665,
2342 "origin_id": -10,
2343 "origin_slot": 16,
2344 "target_id": 454,
2345 "target_slot": 0,
2346 "type": "COMBO"
2347 },
2348 {
2349 "id": 729,
2350 "origin_id": -10,
2351 "origin_slot": 17,
2352 "target_id": 469,
2353 "target_slot": 1,
2354 "type": "COMBO"
2355 },
2356 {
2357 "id": 730,
2358 "origin_id": -10,
2359 "origin_slot": 18,
2360 "target_id": 469,
2361 "target_slot": 2,
2362 "type": "COMBO"
2363 },
2364 {
2365 "id": 746,
2366 "origin_id": -10,
2367 "origin_slot": 19,
2368 "target_id": 477,
2369 "target_slot": 0,
2370 "type": "COMBO"
2371 },
2372 {
2373 "id": 721,
2374 "origin_id": 453,
2375 "origin_slot": 0,
2376 "target_id": 474,
2377 "target_slot": 0,
2378 "type": "CLIP"
2379 },
2380 {
2381 "id": 710,
2382 "origin_id": -10,
2383 "origin_slot": 20,
2384 "target_id": 474,
2385 "target_slot": 1,
2386 "type": "IMAGE"
2387 },
2388 {
2389 "id": 720,
2390 "origin_id": 454,
2391 "origin_slot": 0,
2392 "target_id": 474,
2393 "target_slot": 2,
2394 "type": "VAE"
2395 },
2396 {
2397 "id": 743,
2398 "origin_id": 480,
2399 "origin_slot": 0,
2400 "target_id": 474,
2401 "target_slot": 3,
2402 "type": "STRING"
2403 },
2404 {
2405 "id": 727,
2406 "origin_id": -10,
2407 "origin_slot": 5,
2408 "target_id": 474,
2409 "target_slot": 4,
2410 "type": "STRING"
2411 },
2412 {
2413 "id": 725,
2414 "origin_id": -10,
2415 "origin_slot": 0,
2416 "target_id": 474,
2417 "target_slot": 5,
2418 "type": "INT"
2419 },
2420 {
2421 "id": 716,
2422 "origin_id": -10,
2423 "origin_slot": 26,
2424 "target_id": 474,
2425 "target_slot": 7,
2426 "type": "IMAGE"
2427 },
2428 {
2429 "id": 717,
2430 "origin_id": -10,
2431 "origin_slot": 27,
2432 "target_id": 474,
2433 "target_slot": 8,
2434 "type": "IMAGE"
2435 },
2436 {
2437 "id": 718,
2438 "origin_id": -10,
2439 "origin_slot": 28,
2440 "target_id": 474,
2441 "target_slot": 9,
2442 "type": "IMAGE"
2443 },
2444 {
2445 "id": 719,
2446 "origin_id": -10,
2447 "origin_slot": 29,
2448 "target_id": 474,
2449 "target_slot": 10,
2450 "type": "IMAGE"
2451 },
2452 {
2453 "id": 711,
2454 "origin_id": -10,
2455 "origin_slot": 21,
2456 "target_id": 474,
2457 "target_slot": 12,
2458 "type": "IMAGE"
2459 },
2460 {
2461 "id": 712,
2462 "origin_id": -10,
2463 "origin_slot": 22,
2464 "target_id": 474,
2465 "target_slot": 13,
2466 "type": "IMAGE"
2467 },
2468 {
2469 "id": 713,
2470 "origin_id": -10,
2471 "origin_slot": 23,
2472 "target_id": 474,
2473 "target_slot": 14,
2474 "type": "IMAGE"
2475 },
2476 {
2477 "id": 714,
2478 "origin_id": -10,
2479 "origin_slot": 24,
2480 "target_id": 474,
2481 "target_slot": 15,
2482 "type": "IMAGE"
2483 },
2484 {
2485 "id": 715,
2486 "origin_id": -10,
2487 "origin_slot": 25,
2488 "target_id": 474,
2489 "target_slot": 16,
2490 "type": "IMAGE"
2491 },
2492 {
2493 "id": 750,
2494 "origin_id": -10,
2495 "origin_slot": 20,
2496 "target_id": 485,
2497 "target_slot": 0,
2498 "type": "IMAGE"
2499 },
2500 {
2501 "id": 779,
2502 "origin_id": -10,
2503 "origin_slot": 21,
2504 "target_id": 485,
2505 "target_slot": 1,
2506 "type": "IMAGE"
2507 },
2508 {
2509 "id": 780,
2510 "origin_id": -10,
2511 "origin_slot": 22,
2512 "target_id": 485,
2513 "target_slot": 2,
2514 "type": "IMAGE"
2515 },
2516 {
2517 "id": 781,
2518 "origin_id": -10,
2519 "origin_slot": 23,
2520 "target_id": 485,
2521 "target_slot": 3,
2522 "type": "IMAGE"
2523 },
2524 {
2525 "id": 782,
2526 "origin_id": -10,
2527 "origin_slot": 24,
2528 "target_id": 485,
2529 "target_slot": 4,
2530 "type": "IMAGE"
2531 },
2532 {
2533 "id": 783,
2534 "origin_id": -10,
2535 "origin_slot": 25,
2536 "target_id": 485,
2537 "target_slot": 5,
2538 "type": "IMAGE"
2539 },
2540 {
2541 "id": 784,
2542 "origin_id": -10,
2543 "origin_slot": 26,
2544 "target_id": 485,
2545 "target_slot": 6,
2546 "type": "IMAGE"
2547 },
2548 {
2549 "id": 785,
2550 "origin_id": -10,
2551 "origin_slot": 27,
2552 "target_id": 485,
2553 "target_slot": 7,
2554 "type": "IMAGE"
2555 },
2556 {
2557 "id": 786,
2558 "origin_id": -10,
2559 "origin_slot": 28,
2560 "target_id": 485,
2561 "target_slot": 8,
2562 "type": "IMAGE"
2563 },
2564 {
2565 "id": 787,
2566 "origin_id": -10,
2567 "origin_slot": 29,
2568 "target_id": 485,
2569 "target_slot": 9,
2570 "type": "IMAGE"
2571 },
2572 {
2573 "id": 800,
2574 "origin_id": 477,
2575 "origin_slot": 0,
2576 "target_id": 500,
2577 "target_slot": 0,
2578 "type": "CLIP"
2579 },
2580 {
2581 "id": 801,
2582 "origin_id": 485,
2583 "origin_slot": 0,
2584 "target_id": 500,
2585 "target_slot": 1,
2586 "type": "IMAGE"
2587 },
2588 {
2589 "id": 901,
2590 "origin_id": 479,
2591 "origin_slot": 0,
2592 "target_id": 500,
2593 "target_slot": 4,
2594 "type": "STRING"
2595 },
2596 {
2597 "id": 802,
2598 "origin_id": -10,
2599 "origin_slot": 1,
2600 "target_id": 500,
2601 "target_slot": 5,
2602 "type": "STRING"
2603 },
2604 {
2605 "id": 903,
2606 "origin_id": -10,
2607 "origin_slot": 4,
2608 "target_id": 500,
2609 "target_slot": 6,
2610 "type": "INT"
2611 },
2612 {
2613 "id": 902,
2614 "origin_id": -10,
2615 "origin_slot": 3,
2616 "target_id": 500,
2617 "target_slot": 8,
2618 "type": "BOOLEAN"
2619 },
2620 {
2621 "id": 804,
2622 "origin_id": -10,
2623 "origin_slot": 13,
2624 "target_id": 500,
2625 "target_slot": 7,
2626 "type": "INT"
2627 }
2628 ],
2629 "extra": []
2630 }
2631 ]
2632 },
2633 "config": [],
2634 "extra": {
2635 "frontendVersion": "1.53.6",
2636 "VHS_latentpreview": false,
2637 "VHS_latentpreviewrate": 0,
2638 "VHS_MetadataImage": true,
2639 "VHS_KeepIntermediate": true,
2640 "ds": {
2641 "scale": 0.6940244165782402,
2642 "offset": [
2643 973.3086639020673,
2644 -1999.8825382096318
2645 ]
2646 }
2647 },
2648 "version": 0.4
2649}