当前位置: 首页 > 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.xdnf.cn/news/1314181.html

相关文章:

  • 非功能性需求设计:可解释性、鲁棒性、隐私合规
  • implement libwhich for Windows
  • STM32标准库学习笔记
  • 40 C++ STL模板库9-容器2-vector
  • 深度剖析Redisson分布式锁项目实战
  • 8.从零开始写LINUX内核——初始化中断控制芯片
  • 三、memblock 内存分配器
  • 《软件工程导论》实验报告五 设计建模工具的使用(一)类图
  • 《AI 与数据质量的深度碰撞:颠覆传统治理模式的变革》文章提纲
  • Java -- 泛型-自定义泛型
  • 《从入门到精通:Kafka核心原理全解析》
  • 中级统计师-会计学基础知识-第三章 会计凭证与会计账簿
  • ZYNQ QSPI控制器说明
  • OpenStack Neutron中的L2 Agent与L3 Agent:新手友好指南
  • Java 9 新特性及具体应用
  • InfluxDB 数据迁移工具:跨数据库同步方案(二)
  • 【笔记】动手学Ollma 第一章 Ollama介绍
  • 各种读取csv文件的工具性能比较
  • GEEPython-demo1:利用Sentinel-2监测北京奥林匹克森林公园2024年NDVI变化(附Python版)
  • 从零开始大模型之实现GPT模型
  • Spring Framework:Java 开发的基石与 Spring 生态的起点
  • RecSys:多目标模型和MMOE
  • Oracle数据库文件管理与空间问题解决指南
  • Reduce系列
  • GaussDB 数据库架构师修炼(十三)安全管理(3)-行级访问控制
  • 测试18种RAG技术,找出最优方案(四)
  • 用Pygame开发桌面小游戏:从入门到发布
  • 衡石使用指南嵌入式场景实践之仪表盘嵌入
  • 【FreeRTOS】队列集
  • 聊聊智慧这个东西之三:从食物的毒性、偏性聊起