AI绘画联动:OpenClaw+GLM-4.7-Flash生成SD提示词并自动出图

1. 为什么需要这个自动化流程?

上周我在设计一个游戏角色时,遇到了创作瓶颈——脑海中有了大致的形象轮廓,却总是难以用精确的Stable Diffusion提示词表达出来。每次都要在ChatGPT和SD WebUI之间反复切换,手动复制粘贴生成的提示词,效率极低。更糟糕的是,当需要批量生成不同风格的变体时,这个过程会变得异常繁琐。

于是我开始思考:能否让AI自动完成从创意描述到最终成图的完整流程?经过多次尝试,终于用OpenClaw+GLM-4.7-Flash搭建了一套自动化解决方案。这个方案最吸引我的地方在于:

  1. 自然语言交互:只需用日常语言描述需求(如"赛博朋克风格的女黑客,霓虹灯光,机械义肢")
  2. 智能转换:GLM-4.7-Flash会自动生成符合SD语法规范的结构化prompt
  3. 端到端执行:自动调用SD API生成图片并保存到指定目录
  4. 可追溯性:每次生成的prompt和图片都会自动建立关联存档

2. 环境准备与核心组件

2.1 基础环境搭建

我选择在MacBook Pro(M1芯片,16GB内存)上部署整个流程。以下是关键组件及其作用:

# 安装OpenClaw核心框架
curl -fsSL https://openclaw.ai/install.sh | bash

# 验证安装
openclaw --version
# 输出应为 v0.8.2 或更高版本

2.2 GLM-4.7-Flash模型部署

使用Ollama在本地运行GLM-4.7-Flash模型:

# 拉取镜像(约8GB)
ollama pull glm-4.7-flash

# 启动服务(默认端口11434)
ollama run glm-4.7-flash

在OpenClaw配置文件中添加模型端点(~/.openclaw/openclaw.json):

{
  "models": {
    "providers": {
      "glm-local": {
        "baseUrl": "http://localhost:11434",
        "api": "openai-completions",
        "models": [
          {
            "id": "glm-4.7-flash",
            "name": "Local GLM",
            "contextWindow": 128000
          }
        ]
      }
    }
  }
}

2.3 Stable Diffusion API配置

我使用的是本地部署的SD WebUI的API接口(默认地址http://127.0.0.1:7860)。确保已开启"启用API"选项,并在OpenClaw中配置:

{
  "skills": {
    "sd-webui": {
      "apiUrl": "http://127.0.0.1:7860",
      "outputDir": "~/Downloads/sd_output"
    }
  }
}

3. 核心实现流程剖析

3.1 自然语言到结构化Prompt的转换

这是整个流程最精妙的部分。通过设计特定的system prompt,让GLM理解SD的语法规范:

你是一个专业的Stable Diffusion提示词生成器。请将用户的自然语言描述转换为符合以下规范的结构化prompt:

1. 英文输出,逗号分隔
2. 按"主体描述,风格,细节,质量"顺序组织
3. 艺术风格参考:anime, cyberpunk, realistic等
4. 质量标记:4k, best quality, ultra detailed等

示例:
输入:"古风美女,水墨画风格"
输出:"a beautiful woman in traditional Chinese costume, ink painting style, delicate facial features, flowing robes, 4k, best quality"

实际测试时,我发现添加负面提示词能显著提升输出质量。于是在配置中增加了固定negative prompt:

{
  "skills": {
    "sd-webui": {
      "negativePrompt": "lowres, bad anatomy, extra digits, blurry"
    }
  }
}

3.2 自动化执行链路

整个工作流通过OpenClaw的skill机制实现。关键步骤如下:

  1. 接收自然语言输入(通过Web控制台或飞书机器人)
  2. 调用GLM生成prompt
    def generate_prompt(description):
        response = openclaw.models.generate(
            model="glm-local/glm-4.7-flash",
            messages=[
                {"role": "system", "content": system_prompt},
                {"role": "user", "content": description}
            ]
        )
        return response.choices[0].message.content
    
  3. 调用SD API生成图片
    def generate_image(prompt):
        payload = {
            "prompt": prompt,
            "negative_prompt": config.negativePrompt,
            "steps": 20,
            "width": 512,
            "height": 768
        }
        response = requests.post(
            f"{config.apiUrl}/sdapi/v1/txt2img",
            json=payload
        )
        return response.json()["images"][0]
    
  4. 结果保存与归档
    def save_result(description, prompt, image):
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        filename = f"sd_{timestamp}.png"
        with open(f"{config.outputDir}/{filename}", "wb") as f:
            f.write(base64.b64decode(image))
        
        # 保存元数据
        with open(f"{config.outputDir}/metadata.csv", "a") as f:
            f.write(f"{timestamp},{description},{prompt},{filename}\n")
    

4. 实际应用中的优化经验

4.1 Prompt工程调优

初期直接使用GLM生成的prompt时,发现图像质量不稳定。通过分析生成的200组数据,总结出以下改进措施:

  1. 添加权重控制:在关键词后添加(1.2)等权重标记
  2. 固定开头模板:所有prompt以"masterpiece, best quality"开头
  3. 风格强化:明确要求"studio lighting, professional photo shoot"等描述

调整后的system prompt示例:

...(前略)...
必须遵守以下规则:
1. 开头固定为:"masterpiece, best quality, ultra detailed, "
2. 主体描述中重要元素要加权重,如:red dress(1.3)
3. 必须包含光照描述:studio lighting, soft shadows
4. 必须包含镜头效果:professional photo shoot, 85mm焦距

4.2 异常处理机制

在无人值守运行时,需要处理各种异常情况:

try:
    prompt = generate_prompt(description)
    if not validate_prompt(prompt):  # 检查是否包含SD关键词
        raise ValueError("Invalid prompt format")
    
    image = generate_image(prompt)
    if image_is_blank(image):  # 检查纯色图片
        raise RuntimeError("SD generation failed")
    
    save_result(description, prompt, image)
except Exception as e:
    openclaw.notify(f"生成失败: {str(e)}")
    log_error(description, str(e))

4.3 性能优化技巧

  1. GLM参数调优
    {
        "temperature": 0.7,
        "max_tokens": 150,
        "stop": ["\n\n"]
    }
    
  2. SD批量生成:通过batch_size参数一次生成多个变体
  3. 结果缓存:对相同描述使用MD5哈希做缓存键

5. 效果展示与使用建议

经过两周的持续优化,现在只需简单的自然语言描述就能获得专业级的SD作品。例如输入:

"未来都市中的猫耳少女,穿着发光服饰,背景有全息广告牌,赛博朋克风格"

生成的prompt示例:

masterpiece, best quality, ultra detailed, cat-ear girl(1.3) in futuristic city, wearing glowing cyberpunk outfit(1.2), holographic billboards in background, neon lights, rain wet ground, studio lighting, professional photo shoot, 85mm焦距

对应的生成效果:角色形象鲜明,赛博朋克元素完整,光影效果专业。

给初学者的实用建议

  1. 从简单描述开始,逐步增加细节要求
  2. 建立自己的关键词库(如特定艺术风格术语)
  3. 定期检查metadata.csv分析生成效果
  4. 重要作品建议手动调整prompt后再批量生成

这套方案特别适合:

  • 独立游戏开发者快速生成概念图
  • 小说作者为角色创作视觉参考
  • 设计师寻找创意灵感
  • 自媒体内容批量生产

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐