Files
ketle-man-comfyui-chat-te/example_workflows/chat_te_sample_qwen_image_edit.json
ketle-manandClaude Sonnet 5 6bd1cb6d16 Initial public release: Qwen2.5-VL / Qwen3-VL chat bridge for ComfyUI
Chat with an already-loaded Qwen2.5-VL or Qwen3-VL text encoder instead of
loading a separate LLM -- multi-turn, vision-capable chat sharing the same
VRAM, exposed as both a sidebar panel and an OpenAI-compatible
/v1/chat/completions endpoint.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 15:40:02 +09:00

347 lines
11 KiB
JSON

{
"id": "chat-te-sample-qwen-image-edit",
"revision": 0,
"last_node_id": 200,
"last_link_id": 20,
"nodes": [
{
"id": 99,
"type": "MarkdownNote",
"pos": [0, -260],
"size": [700, 220],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Chat TE サンプルワークフロー",
"properties": {},
"widgets_values": [
"このワークフローは Chat TE (chat_TE カスタムノード) の推奨連携パターンを示すサンプルです。\n\n1. CLIPLoader (下のノード) の直後に `Qwen Chat Bridge (Register CLIP)` を挿入し、そのCLIPをチャットのバックエンドとして登録しています。\n2. 画像生成側 (TextEncodeQwenImageEdit x2) にも同じCLIPを配線しているため、チャットと画像生成が完全に同一の重みを共有します (VRAM二重消費なし)。\n3. 左サイドバーの「Chat TE」タブでモデルを再ロードする必要はありません。ワークフロー実行時にこのグラフがロードしたCLIPがそのまま使われます。\n4. キャンバス上で下の「Positive Prompt (chat_te)」ノードを選択し、チャットパネルの返答から「Send to encoder」を押すと、そのテキストがこのノードの `prompt` ウィジェットに書き込まれます。"
],
"color": "#222",
"bgcolor": "#000"
},
{
"id": 37,
"type": "UNETLoader",
"pos": [0, 0],
"size": [330, 90],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{ "name": "MODEL", "type": "MODEL", "links": [1] }
],
"properties": {
"cnr_id": "comfy-core",
"Node name for S&R": "UNETLoader",
"models": [
{ "name": "qwen_image_edit_fp8_e4m3fn.safetensors", "url": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_edit_fp8_e4m3fn.safetensors", "directory": "diffusion_models" }
]
},
"widgets_values": ["diffusion_models\\qwen_image_edit_fp8_e4m3fn.safetensors", "default"]
},
{
"id": 38,
"type": "CLIPLoader",
"pos": [0, 150],
"size": [330, 110],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{ "name": "CLIP", "type": "CLIP", "links": [5] }
],
"properties": {
"cnr_id": "comfy-core",
"Node name for S&R": "CLIPLoader",
"models": [
{ "name": "qwen_2.5_vl_7b_fp8_scaled.safetensors", "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors", "directory": "text_encoders" }
]
},
"widgets_values": ["qwen_2.5_vl_7b_fp8_scaled.safetensors", "qwen_image", "default"]
},
{
"id": 200,
"type": "QwenChatBridgeLoader",
"pos": [400, 150],
"size": [300, 60],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{ "name": "clip", "type": "CLIP", "link": 5 }
],
"outputs": [
{ "name": "CLIP", "type": "CLIP", "links": [6, 7] }
],
"title": "Qwen Chat Bridge (Register CLIP)",
"properties": {
"Node name for S&R": "QwenChatBridgeLoader"
},
"widgets_values": []
},
{
"id": 39,
"type": "VAELoader",
"pos": [0, 300],
"size": [330, 60],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{ "name": "VAE", "type": "VAE", "links": [8, 9, 10, 11] }
],
"properties": {
"cnr_id": "comfy-core",
"Node name for S&R": "VAELoader",
"models": [
{ "name": "qwen_image_vae.safetensors", "url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors", "directory": "vae" }
]
},
"widgets_values": ["qwen_image_vae.safetensors"]
},
{
"id": 78,
"type": "LoadImage",
"pos": [0, 420],
"size": [274, 314],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{ "name": "IMAGE", "type": "IMAGE", "links": [12] },
{ "name": "MASK", "type": "MASK", "links": null }
],
"properties": {
"cnr_id": "comfy-core",
"Node name for S&R": "LoadImage"
},
"widgets_values": ["example.png", "image"]
},
{
"id": 93,
"type": "ImageScaleToTotalPixels",
"pos": [340, 420],
"size": [270, 106],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{ "name": "image", "type": "IMAGE", "link": 12 }
],
"outputs": [
{ "name": "IMAGE", "type": "IMAGE", "links": [13, 14, 15] }
],
"properties": {
"cnr_id": "comfy-core",
"Node name for S&R": "ImageScaleToTotalPixels"
},
"widgets_values": ["lanczos", 1.5, 1]
},
{
"id": 89,
"type": "LoraLoaderModelOnly",
"pos": [400, 0],
"size": [300, 82],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{ "name": "model", "type": "MODEL", "link": 1 }
],
"outputs": [
{ "name": "MODEL", "type": "MODEL", "links": [2] }
],
"properties": {
"cnr_id": "comfy-core",
"Node name for S&R": "LoraLoaderModelOnly",
"models": [
{ "name": "Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors", "url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors", "directory": "loras" }
]
},
"widgets_values": ["qwen\\Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors", 1]
},
{
"id": 66,
"type": "ModelSamplingAuraFlow",
"pos": [740, 0],
"size": [290, 60],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{ "name": "model", "type": "MODEL", "link": 2 }
],
"outputs": [
{ "name": "MODEL", "type": "MODEL", "links": [3] }
],
"properties": { "cnr_id": "comfy-core", "Node name for S&R": "ModelSamplingAuraFlow" },
"widgets_values": [3]
},
{
"id": 75,
"type": "CFGNorm",
"pos": [1060, 0],
"size": [290, 60],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{ "name": "model", "type": "MODEL", "link": 3 }
],
"outputs": [
{ "name": "patched_model", "type": "MODEL", "links": [4] }
],
"properties": { "cnr_id": "comfy-core", "Node name for S&R": "CFGNorm" },
"widgets_values": [1]
},
{
"id": 76,
"type": "TextEncodeQwenImageEdit",
"pos": [740, 150],
"size": [360, 150],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{ "name": "clip", "type": "CLIP", "link": 6 },
{ "name": "vae", "type": "VAE", "shape": 7, "link": 8 },
{ "name": "image", "type": "IMAGE", "shape": 7, "link": 13 }
],
"outputs": [
{ "name": "CONDITIONING", "type": "CONDITIONING", "links": [16] }
],
"title": "Positive Prompt (chat_te)",
"properties": { "cnr_id": "comfy-core", "Node name for S&R": "TextEncodeQwenImageEdit" },
"widgets_values": ["背景を夕焼けの海辺に変更し、全体を暖色系のトーンにしてください。"],
"color": "#223",
"bgcolor": "#335"
},
{
"id": 77,
"type": "TextEncodeQwenImageEdit",
"pos": [740, 350],
"size": [360, 150],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{ "name": "clip", "type": "CLIP", "link": 7 },
{ "name": "vae", "type": "VAE", "shape": 7, "link": 9 },
{ "name": "image", "type": "IMAGE", "shape": 7, "link": 14 }
],
"outputs": [
{ "name": "CONDITIONING", "type": "CONDITIONING", "links": [17] }
],
"title": "Negative Prompt",
"properties": { "cnr_id": "comfy-core", "Node name for S&R": "TextEncodeQwenImageEdit" },
"widgets_values": [""],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 88,
"type": "VAEEncode",
"pos": [400, 560],
"size": [180, 46],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{ "name": "pixels", "type": "IMAGE", "link": 15 },
{ "name": "vae", "type": "VAE", "link": 10 }
],
"outputs": [
{ "name": "LATENT", "type": "LATENT", "links": [18] }
],
"properties": { "cnr_id": "comfy-core", "Node name for S&R": "VAEEncode" },
"widgets_values": []
},
{
"id": 3,
"type": "KSampler",
"pos": [1150, 150],
"size": [300, 474],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{ "name": "model", "type": "MODEL", "link": 4 },
{ "name": "positive", "type": "CONDITIONING", "link": 16 },
{ "name": "negative", "type": "CONDITIONING", "link": 17 },
{ "name": "latent_image", "type": "LATENT", "link": 18 }
],
"outputs": [
{ "name": "LATENT", "type": "LATENT", "links": [19] }
],
"properties": { "cnr_id": "comfy-core", "Node name for S&R": "KSampler" },
"widgets_values": [0, "randomize", 4, 1, "euler", "simple", 1]
},
{
"id": 8,
"type": "VAEDecode",
"pos": [1500, 150],
"size": [210, 46],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{ "name": "samples", "type": "LATENT", "link": 19 },
{ "name": "vae", "type": "VAE", "link": 11 }
],
"outputs": [
{ "name": "IMAGE", "type": "IMAGE", "links": [20] }
],
"properties": { "cnr_id": "comfy-core", "Node name for S&R": "VAEDecode" },
"widgets_values": []
},
{
"id": 60,
"type": "SaveImage",
"pos": [1750, 150],
"size": [400, 420],
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{ "name": "images", "type": "IMAGE", "link": 20 }
],
"outputs": [],
"properties": { "cnr_id": "comfy-core", "Node name for S&R": "SaveImage" },
"widgets_values": ["chat_te_sample"]
}
],
"links": [
[1, 37, 0, 89, 0, "MODEL"],
[2, 89, 0, 66, 0, "MODEL"],
[3, 66, 0, 75, 0, "MODEL"],
[4, 75, 0, 3, 0, "MODEL"],
[5, 38, 0, 200, 0, "CLIP"],
[6, 200, 0, 76, 0, "CLIP"],
[7, 200, 0, 77, 0, "CLIP"],
[8, 39, 0, 76, 1, "VAE"],
[9, 39, 0, 77, 1, "VAE"],
[10, 39, 0, 88, 1, "VAE"],
[11, 39, 0, 8, 1, "VAE"],
[12, 78, 0, 93, 0, "IMAGE"],
[13, 93, 0, 76, 2, "IMAGE"],
[14, 93, 0, 77, 2, "IMAGE"],
[15, 93, 0, 88, 0, "IMAGE"],
[16, 76, 0, 3, 1, "CONDITIONING"],
[17, 77, 0, 3, 2, "CONDITIONING"],
[18, 88, 0, 3, 3, "LATENT"],
[19, 3, 0, 8, 0, "LATENT"],
[20, 8, 0, 60, 0, "IMAGE"]
],
"groups": [],
"config": {},
"extra": {},
"version": 0.4
}