当前位置: 首页 > news >正文

dify 调用本地的 stable diffusion api生成图片的工作流搭建

Dify调用本地Stable Diffusion API的工作流搭建指南

核心架构
Dify应用
HTTP请求节点
本地SD API
图片生成
结果返回
详细步骤
  1. 准备Stable Diffusion API服务

    • 确保本地已部署SD WebUI(如Automatic1111)
    • 启动API服务:
      python launch.py --api --port 7860
      
    • 验证API可用性:
      curl -X POST http://localhost:7860/sdapi/v1/txt2img -H 'Content-Type: application/json' -d '{"prompt":"test"}'
      
  2. 在Dify中创建应用

    • 新建工作流类型应用
    • 添加「HTTP请求」节点
    • 配置节点参数:
      {"url": "http://localhost:7860/sdapi/v1/txt2img","method": "POST","headers": {"Content-Type": "application/json"},"body": {"prompt": "{{input}}","steps": 20,"width": 512,"height": 512}
      }
      
  3. 数据处理配置

    • 添加「变量提取」节点处理API响应:
      import base64def process(data):image_b64 = data['images'][0]return {"image": f"data:image/png;base64,{image_b64}","info": data['info']}
      
  4. 输出节点配置

    • 设置返回数据结构:
      {"image_url": "{{image}}","generation_info": "{{info}}"
      }
      
完整工作流示例
# Dify工作流伪代码
def main(input_text):# 构造SD API请求payload = {"prompt": input_text,"negative_prompt": "ugly, blurry","cfg_scale": 7}# 调用本地APIresponse = requests.post("http://localhost:7860/sdapi/v1/txt2img",json=payload)# 解析响应result = response.json()image_data = result['images'][0]# 返回结果return {"image": f"data:image/png;base64,{image_data}","parameters": result['parameters']}
关键注意事项
  1. 网络配置

    • 确保Dify服务与SD API在同一网络域
    • 若跨域访问需配置CORS:
      export COMMANDLINE_ARGS="--api --cors-allow-origins=*"
      
  2. 安全加固

    • 添加请求频率限制(建议使用Dify的速率限制中间件)
    • 在SD API端设置身份验证:
      # webui.py修改
      app.add_middleware(AuthMiddleware, token="YOUR_SECRET")
      
  3. 性能优化

    • 启用SD的--xformers加速
    • 设置Dify超时参数:
      # dify配置
      request_timeout: 300  # 单位秒
      
调试技巧
  1. 使用Postman测试API端点:

    POST http://localhost:7860/sdapi/v1/options
    Body: {"sd_model_checkpoint": "v2-1_768-ema-pruned.safetensors"}
    
  2. 查看SD日志定位问题:

    tail -f ~/stable-diffusion-webui/logs/api.log
    
  3. Dify调试模式启用:

    • 工作流编辑页开启「调试输出」
    • 查看每个节点的输入/输出数据

提示:首次运行时建议使用简单提示词(如"a red apple")测试基础功能,逐步增加复杂度。当处理1024×10241024\times10241024×1024以上分辨率时,需调整显存设置:--medvram-sdxl

http://www.lryc.cn/news/622730.html

相关文章:

  • 掌握长尾关键词优化SEO技巧
  • 神经网络 常见分类
  • 分布式存储与存储阵列:从传统到现代的存储革命
  • 本地部署前端构建工具 Vite 并实现外部访问
  • 模式组合应用-桥接模式(一)
  • 容器化部署:用Docker封装机器翻译模型与服务详解
  • 她的热情为何突然冷却?—— 解析 Kafka 吞吐量下降之谜
  • 数据结构:满二叉树 (Full Binary Tree) 和 完全二叉树 (Complete Binary Tree)
  • 无痕HOOK 检测及对抗
  • 数据结构:构建 (create) 一个二叉树
  • OpenJDK 17的C1和C2编译器实现中,方法返回前插入安全点(Safepoint Poll)的机制
  • 【lubancat】鲁班猫4实现开机后自动播放视频
  • 攻击者如何毒害人工智能工具和防御系统
  • 罗技MX Anywhere 2S鼠标修复记录
  • 【攻防实战】红队攻防之Goby反杀
  • 云原生俱乐部-RH124知识点总结(1)
  • PHP反序列化的CTF题目环境和做题复现第2集_POP链构造
  • 布隆过滤器的原理及使用
  • 基于STM32的智能书房系统设计与实现
  • 从阿里一面真题看:索引树搜索次数背后的逻辑
  • Sklearn 机器学习 邮件文本分类 加载邮件数据
  • 防御保护16
  • Redis集群设计实战:从90%缓存命中率看高并发系统优化
  • Rust 语法基础教程
  • AI应用安全 - Prompt注入攻击
  • [1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络
  • 【LeetCode题解】LeetCode 35. 搜索插入位置
  • Dify实战应用指南(上传需求稿生成测试用例)
  • Jenkins常见问题及解决方法
  • STM32 延时函数详解