基于 ComfyUI + SDXL 的本地图片生成技能。适用于需要高质量配图、素材生成、本地私密生图、或对在线生成有频率限制的场景。
在以下场景时使用:
不要用于:
直接描述想要的图片内容,例如:
Agent 收到后执行生图脚本,发送结果给用户。
项目参数模型Stable Diffusion XL 1.0 (fp16)显卡NVIDIA RTX 3080 (10GB VRAM)出图尺寸默认 1024×768,可调整生图速度~18秒/张(euler 采样,20步)可用采样器euler, dpmpp_2m, lcm, ddim 等API 端口localhost:8188
python
import subprocess
result = subprocess.run(
["python3", "/path/to/scripts/sdxl_generate.py",
"--prompt", "一只狐狸在森林里",
"--negative", "模糊, 低质量",
"--steps", "20",
"--seed", "42",
"--output", "/tmp/output.png"],
capture_output=True, text=True
)
print(result.stdout)
python
import requests, time, json
COMFYUI = "http://localhost:8188"
def generate(prompt, negative="", steps=20, seed=42, width=1024, height=768):
workflow = {
"loader": {"class_type": "CheckpointLoaderSimple",
"inputs": {"ckpt_name": "sdxl-base-1.0.safetensors"}},
"positive": {"class_type": "CLIPTextEncode",
"inputs": {"text": prompt, "clip": ["loader", 1]}},
"negative": {"class_type": "CLIPTextEncode",
"inputs": {"text": negative, "clip": ["loader", 1]}},
"latent": {"class_type": "EmptyLatentImage",
"inputs": {"width": width, "height": height, "batch_size": 1}},
"sampler": {"class_type": "KSampler",
"inputs": {"seed": seed, "steps": steps, "cfg": 7.0,
"sampler_name": "euler", "scheduler": "normal",
"denoise": 1.0,
"positive": ["positive", 0], "negative": ["negative", 0],
"model": ["loader", 0], "latent_image": ["latent", 0]}},
"decode": {"class_type": "VAEDecode",
"inputs": {"samples": ["sampler", 0], "vae": ["loader", 2]}},
"save": {"class_type": "SaveImage",
"inputs": {"images": ["decode", 0], "filename_prefix": "sdxl_gen"}}
}
r = requests.post(f"{COMFYUI}/prompt", json={"prompt": workflow})
pid = r.json()["prompt_id"]
# 等待完成(轮询)
for _ in range(30):
time.sleep(2)
hist = requests.get(f"{COMFYUI}/history/{pid}").json()
if pid in hist:
return f"{COMFYUI}/view?filename=sdxl_gen_00001_.png"
return None
参数默认值说明--prompt(必填)图片描述,越详细越好--negative"blurry, low quality, distorted"反向提示词--steps20采样步数,越高质量越好越慢--seed随机种子,决定具体画面--width1024宽度(8的倍数)--height768高度(8的倍数)--samplereuler采样器(euler/dpmpp_2m/lcm/ddim)--cfg7.0CFG 强度(1-20)--output自动输出路径
场景推荐参数写实风景/人物--steps 25 --cfg 7 --sampler euler动漫/插画风格--steps 20 --cfg 8 --negative "写实, 照片"快速草图/验证--steps 4 --sampler lcm --cfg 1.0(需要 LCM 模型)16:9 横幅图--width 1280 --height 720
生图完成后,脚本自动将图片保存到指定路径或 /tmp/ 目录,并通过飞书发送图片消息给用户。
python3 main.py --port 8188)