当前位置: 首页 > 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.dtcms.com/a/334258.html

相关文章:

  • 分布式存储与存储阵列:从传统到现代的存储革命
  • Windows Manager:全方位优化你的Windows系统
  • PCB高频板与普通电路板的核心差异
  • JavaScript 闭包与递归深度解析:从理论到实战
  • [优选算法专题二滑动窗口——最大连续1的个数 III]
  • 【轨物方案】预防性运维:轨物科技用AI+机器人重塑光伏电站价值链
  • K8S的ingress
  • 石头科技披露半年报:营收79.03亿元,同比大增78.96%
  • vscode中用python调用matlab的函数(环境安装)
  • pdf合并代码
  • Autosar Os新手入门
  • IOMMU多级页表查找的验证
  • 从0到1掌握 Spring Security(第三篇):三种认证方式,按配置一键切换
  • Flink Stream API 源码走读 - print()
  • TDengine IDMP 高级功能(3. 概念解释)
  • 用Pygame开发桌面小游戏:从入门到发布
  • MixOne:Electron Remote模块的现代化继任者
  • AI 云电竞游戏盒子:从“盒子”到“云-端-芯”一体化竞技平台的架构实践
  • 【BFS 重构树】P11907 [NHSPC 2023] F. 恐怖的黑色魔物|省选-
  • AI的下一个竞争焦点——世界模型
  • 笔试——Day40
  • 超酷炫的Three.js示例
  • Proteus 入门教程
  • 深度剖析setjmp/longjmp:非局部跳转的内部机制与协程应用限制
  • 双重调度(Double Dispatch):《More Effective C++》条款31
  • RD-Agent for Quantitative Finance (RD-Agent(Q))
  • C#单元测试(xUnit + Moq + coverlet.collector)
  • 深度学习——常见问题与优化改进
  • java中消息推送功能
  • Xiaothink-T6-0.15B混合架构模型深度解析