ComfyUI的三个 Checkpoint 加载器 API & JSON 实用指南【002】
API 快速参考表
| 特性 | CheckpointLoaderSimple | unCLIPCheckpointLoader | ImageOnlyCheckpointLoader |
|---|---|---|---|
| class_type | CheckpointLoaderSimple | unCLIPCheckpointLoader | ImageOnlyCheckpointLoader |
| 输入 | ckpt_name | ckpt_name | ckpt_name |
| 输出 0 | MODEL | MODEL | MODEL |
| 输出 1 | CLIP | CLIP | CLIP_VISION |
| 输出 2 | VAE | VAE | VAE |
| 输出 3 | - | CLIP_VISION | - |
| 适用场景 | 标准文生图/图生图 | 图像变体/编辑 | 视频生成 |
| 推荐模型 | SD 1.x/2.x/SDXL | SD 2.1 unCLIP | SVD, SVD-XT |
JSON 撰写注意事项
- 节点 ID 必须唯一 - 可以是数字或字符串
- 连接格式 - ["源节点ID", 输出索引]
- 模型文件名 - 必须与 ComfyUI models/checkpoints 目录下的文件名完全一致
- 先获取模型列表 - 调用 /api/models/checkpoints 确认可用模型
- 输出索引从 0 开始 - 一定要对应正确的输出类型
让我从实际使用角度给你一份实用指南:
一、CheckpointLoaderSimple(最常用)
1. API 定义
类名: CheckpointLoaderSimple
输入:
Python
INPUT_TYPES = {
"required": {
"ckpt_name": (["模型文件名列表"], {"tooltip": "要加载
的 checkpoint 文件名"})
}
}
输出:
Python
RETURN_TYPES = ("MODEL", "CLIP", "VAE")
# 索引: 0 1 2
2. JSON 标准格式
最简版本:
JSON
{
"1": {
"inputs": {
"ckpt_name": "v1-5-pruned-emaonly.safetensors"
},
"class_type": "CheckpointLoaderSimple"
}
}
在完整工作流中使用:
JSON
{
"1": {
"inputs": {
"ckpt_name": "v1-5-pruned-emaonly.safetensors"
},
"class_type": "CheckpointLoaderSimple"
},
"2": {
"inputs": {
"text": "masterpiece, best quality, a cat",
"clip": ["1", 1]
},
"class_type": "CLIPTextEncode"
},
"3": {
"inputs": {
"text": "worst quality",
"clip": ["1", 1]
},
"class_type": "CLIPTextEncode"
},
"4": {
"inputs": {
"width": 512,
"height": 512,
"batch_size": 1
},
"class_type": "EmptyLatentImage"
},
"5": {
"inputs": {
"seed": 12345,
"steps": 20,
"cfg": 8,
"sampler_name": "euler",
"scheduler": "normal",
"denoise": 1,
"model": ["1", 0],
"positive": ["2", 0],
"negative": ["3", 0],
"latent_image": ["4", 0]
},
"class_type": "KSampler"
},
"6": {
"inputs": {
"samples": ["5", 0],
"vae": ["1", 2]
},
"class_type": "VAEDecode"
},
"7": {
"inputs": {
"filename_prefix": "ComfyUI",
"images": ["6", 0]
},
"class_type": "SaveImage"
}
}
3. 使用方法
获取可用模型列表:
Bash
运行
# API 调用
GET http://127.0.0.1:8188/api/models/checkpoints
# 响应示例
["v1-5-pruned-emaonly.safetensors", "realisticVisionV51.
safetensors", "sdxl_base.safetensors"]
提交工作流:
Bash
运行
POST http://127.0.0.1:8188/api/prompt
Content-Type: application/json
{
"prompt": { /* 上面的完整 JSON */ }
}
二、unCLIPCheckpointLoader
1. API 定义
类名: unCLIPCheckpointLoader
输入:
Python
INPUT_TYPES = {
"required": {
"ckpt_name": (["模型文件名列表"], )
}
}
输出:
Python
RETURN_TYPES = ("MODEL", "CLIP", "VAE", "CLIP_VISION")
# 索引: 0 1 2 3
2. JSON 标准格式
最简版本:
JSON
{
"1": {
"inputs": {
"ckpt_name": "sd21-unclip.safetensors"
},
"class_type": "unCLIPCheckpointLoader"
}
}
在完整工作流中使用(图像变体示例):
JSON
{
"1": {
"inputs": {
"ckpt_name": "sd21-unclip.safetensors"
},
"class_type": "unCLIPCheckpointLoader"
},
"2": {
"inputs": {
"image": "reference_image.png",
"upload": "image"
},
"class_type": "LoadImage"
},
"3": {
"inputs": {
"clip_vision": ["1", 3],
"image": ["2", 0]
},
"class_type": "CLIPVisionEncode"
},
"4": {
"inputs": {
"text": "a beautiful variation",
"clip": ["1", 1]
},
"class_type": "CLIPTextEncode"
},
"5": {
"inputs": {
"conditioning": ["4", 0],
"clip_vision_output": ["3", 0]
},
"class_type": "unCLIPConditioning"
},
"6": {
"inputs": {
"width": 512,
"height": 512,
"batch_size": 1
},
"class_type": "EmptyLatentImage"
},
"7": {
"inputs": {
"seed": 12345,
"steps": 20,
"cfg": 8,
"sampler_name": "euler",
"scheduler": "normal",
"denoise": 1,
"model": ["1", 0],
"positive": ["5", 0],
"negative": ["4", 0],
"latent_image": ["6", 0]
},
"class_type": "KSampler"
},
"8": {
"inputs": {
"samples": ["7", 0],
"vae": ["1", 2]
},
"class_type": "VAEDecode"
},
"9": {
"inputs": {
"filename_prefix": "unCLIP_output",
"images": ["8", 0]
},
"class_type": "SaveImage"
}
}
三、ImageOnlyCheckpointLoader
1. API 定义
类名: ImageOnlyCheckpointLoader
输入:
Python
INPUT_TYPES = {
"required": {
"ckpt_name": (["模型文件名列表"], )
}
}
输出:
Python
RETURN_TYPES = ("MODEL", "CLIP_VISION", "VAE")
# 索引: 0 1 2
2. JSON 标准格式
最简版本:
JSON
{
"1": {
"inputs": {
"ckpt_name": "svd.safetensors"
},
"class_type": "ImageOnlyCheckpointLoader"
}
}
在完整工作流中使用(图像转视频示例):
JSON
{
"1": {
"inputs": {
"ckpt_name": "svd.safetensors"
},
"class_type": "ImageOnlyCheckpointLoader"
},
"2": {
"inputs": {
"image": "start_frame.png",
"upload": "image"
},
"class_type": "LoadImage"
},
"3": {
"inputs": {
"width": 1024,
"height": 576,
"video_frames": 14,
"motion_bucket_id": 127,
"fps": 6,
"augmentation_level": 0,
"clip_vision": ["1", 1],
"init_image": ["2", 0],
"vae": ["1", 2]
},
"class_type": "SVD_img2vid_Conditioning"
},
"4": {
"inputs": {
"seed": 12345,
"steps": 20,
"cfg": 8,
"sampler_name": "euler",
"scheduler": "normal",
"denoise": 1,
"model": ["1", 0],
"positive": ["3", 0],
"negative": ["3", 1],
"latent_image": ["3", 2]
},
"class_type": "KSampler"
},
"5": {
"inputs": {
"samples": ["4", 0],
"vae": ["1", 2]
},
"class_type": "VAEDecode"
},
"6": {
"inputs": {
"filename_prefix": "SVD_video",
"images": ["5", 0]
},
"class_type": "SaveImage"
}
}
四、API 提交通用方法
1. 完整 API 请求示例(Python)
Python
import requests
import json
# ComfyUI 地址
COMFYUI_URL = "http://127.0.0.1:8188"
# 工作流 JSON
workflow = {
"1": {
"inputs": {
"ckpt_name": "v1-5-pruned-emaonly.safetensors"
},
"class_type": "CheckpointLoaderSimple"
},
# ... 其他节点
}
# 提交工作流
response = requests.post(
f"{COMFYUI_URL}/api/prompt",
json={"prompt": workflow}
)
result = response.json()
print(f"Prompt ID: {result['prompt_id']}")
2. 获取执行结果
Python
# 获取历史记录
history = requests.get(f"{COMFYUI_URL}/api/history/
{prompt_id}").json()
# 获取输出图片
outputs = history[prompt_id]["outputs"]
for node_id, node_output in outputs.items():
if "images" in node_output:
for image in node_output["images"]:
print(f"Image: {image['filename']}")
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)