本地安装的 Stable Diffusion WebUI 开启 API 模式非常简单,核心是通过启动参数启用 API 功能,同时可以配置跨域、端口等参数适配电商工作室的自动化需求(如批量生成商品图)。以下是分步骤的完整教程:
一、核心启动参数(关键)
Stable Diffusion WebUI 的 API 功能默认关闭,需要在启动时添加以下参数:
bash
--api # 核心参数:启用 API 功能
--cors-allow-origins=* # 可选:允许跨域请求(方便 Python 脚本远程调用)
--port=7861 # 可选:指定 API 端口(避免与 WebUI 端口 7860 冲突)
--listen # 可选:允许局域网/外网访问(服务器部署时必加)
--no gradio # 可选:仅启动 API,不加载 WebUI 界面(节省资源,适合后台运行)
二、不同系统的启动方法
- Windows 系统(常用)
- 找到 Stable Diffusion WebUI 的启动脚本 webui-user.bat
- 右键编辑,修改 set COMMANDLINE_ARGS= 这一行,添加 API 参数:
bat
set COMMANDLINE_ARGS=--api --cors-allow-origins=* --port=7861 --listen
- Linux/macOS 系统(服务器部署优先)
- 编辑启动脚本 webui-user.sh
- 修改 COMMANDLINE_ARGS 变量:
bash
COMMANDLINE_ARGS="--api --cors-allow-origins=* --port=7861 --listen --no-gradio"
- 执行 ./webui.sh 启动,或用 nohup ./webui.sh & 实现后台持久运行(适合 Linux 服务器)。
三、验证 API 是否开启
启动后,访问以下地址,若返回 JSON 数据则说明 API 正常:
plaintext
http://localhost:7861/docs # Swagger 文档(查看所有 API 接口)
http://localhost:7861/sdapi/v1/models # 获取当前加载的模型列表
四、Python 调用 API 示例(电商批量生成商品图)
开启 API 后,你可以用 Python 脚本批量调用 Stable Diffusion 生成商品主图、详情图,完美适配店群自动化需求。以下是最简示例:
python
import requests
import json
API 地址(本地或服务器地址)
url = "http://localhost:7861/sdapi/v1/txt2img"
生成参数(可根据商品类型调整 prompt)
payload = {
"prompt": "high quality product photo of a wireless earphone, white background, professional lighting",
"negative_prompt": "blurry, low quality, watermark",
"width": 512,
"height": 512,
"batch_size": 4, # 一次生成 4 张图(批量效率更高)
"steps": 20,
"cfg_scale": 7.5
}
发送请求
response = requests.post(url, json=payload)
data = response.json()
保存生成的图片
for i, img_data in enumerate(data["images"]):
import base64
from PIL import Image
from io import BytesIO
img = Image.open(BytesIO(base64.b64decode(img_data.split(",", 1)[0])))
img.save(f"product_{i}.png")
五、高级配置(适配 Linux 服务器集群)
1. Docker 部署 API 服务:将 Stable Diffusion API 打包成 Docker 镜像,通过 KVM 虚拟化批量部署到多个服务器节点,实现负载均衡。
2. API 密钥认证:若对外提供 API 服务,可通过第三方插件(如 sd-webui-api-auth )添加密钥认证,防止滥用。
3. 模型自动切换:通过 API 调用 sdapi/v1/options 接口,动态切换不同模型(如商品图模型、场景图模型),适配不同业务需求。
六、常见问题
1. API 调用无响应:检查是否添加 --listen 参数,服务器防火墙是否开放 7861 端口。
2. 跨域错误:确保添加 --cors-allow-origins=* 参数,或在 Python 脚本中设置 headers={"Origin": "http://localhost"} 。
3. 显存不足:批量生成时降低 batch_size ,或使用 --xformers 参数优化显存占用。
需要我为你编写一个批量生成商品图的 Python 脚本吗?它可以自动读取商品名称列表,调用 Stable Diffusion API 生成并分类保存图片,直接适配你的店群自动化流程。