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

Stable Diffusion vue本地api接口对接,模型切换, ai功能集成开源项目 ollama-chat-ui-vue

1.开启Stable Diffusion的api服务

编辑webui-user.bat 添加 –api 开启api服务,然后保存启动就可以了
在这里插入图片描述

2.api 文档地址

http://127.0.0.1:7860/docs

在这里插入图片描述

3. 文生图 接口

地址

/sdapi/v1/txt2img   //post 请求

入参

{
  enable_hr: false, // 开启高清hr
  denoising_strength: 0, // 降噪强度
  hr_scale: 2, // 高清级别
  hr_upscaler: "",
  hr_second_pass_steps: 0,
  hr_resize_x: 0,
  hr_resize_y: 0,
  hr_sampler_name: "",
  hr_prompt: "",
  hr_negative_prompt: "",
  prompt: "", // 正向关键字
  styles: [],
  seed: -1, // 随机种子
  subseed: -1, // 子级种子
  subseed_strength: 0, // 子级种子影响力度
  seed_resize_from_h: -1,
  seed_resize_from_w: -1,
  sampler_name: "",
  batch_size: 1, // 每次生成的张数
  n_iter: 1, // 生成批次
  steps: 50, // 生成步数
  cfg_scale: 7, // 关键词相关性
  width: 512, // 生成图像宽度
  height: 512, // 生成图像高度
  restore_faces: false, // 面部修复
  tiling: false, // 平铺
  do_not_save_samples: false,
  do_not_save_grid: false,
  negative_prompt: "", // 反向关键字
  eta: 0, // 等待时间
  s_min_uncond: 0,
  s_churn: 0,
  s_tmax: 0,
  s_tmin: 0,
  s_noise: 1,
  override_settings: {}, // 覆盖性配置
  override_settings_restore_afterwards: true,
  script_args: [], // lora 模型参数配置
  sampler_index: "Euler", // 采样方法
  script_name: "",
  send_images: true, // 是否发送图像
  save_images: false, // 是否在服务端保存生成的图像
  alwayson_scripts: {}, // alwayson配置
  //模型
  model_name: "",
};

实现逻辑

import {txt2img} from "@/api/sd/index";
const img = ref('')
const txt2imgFun = async () => {
  const response = await txt2img(txt2imgData.value);
  if (response.status === 200 && response.data) {
    try {
      const images = response.data.images;
      if (images.length === 0) return;
      //单图,多图得用数组遍历
      img.value = images.map((item) => `data:image/png;base64,${item}`);
    } catch (err) {
      console.log("err", err);
    }
}

生成进度接口

接口

/sdapi/v1/progress  //get请求

参数

实现逻辑

  import {progress} from "@/api/sd/index";
  const img = ref('')
  const progressNum = ref(0)
  const progressFun=()=>{
	 let { data } = await progress();
 	 progressNum.value = parseInt(data.progress * 100);
     img.value = `data:image/png;base64,${data.current_image}`;
 }

终止生成接口

接口

/sdapi/v1/interrupt  //post请求

参数

实现逻辑

import {interrupt} from "@/api/sd/index";
const termination = async () => {
  await interrupt();
};

4.模型切换

(1)api.py 文件

这块需要修改sdwebui的源码
首先打开 \modules\api下的 api.py 文件
在这里插入图片描述
注意一点

得先在头部引入 sd_models

from modules import sd_models

在这里插入图片描述

api.py 下的 text2imgapi这个类里面 添加代码

在这里插入图片描述
代码如下

send_images = args.pop('send_images', True)
args.pop('save_images', None)
model_name = img2imgreq.model_name  #新增
with self.queue_lock:
    if model_name is not None:  #新增
       pathName = os.path.abspath('..')  #新增
       pathName = pathName.replace('\\','/')  #新增
       w_info = sd_models.CheckpointInfo(os.path.join(pathName+'/webui/models/Stable-diffusion/'+model_name)) #新增,这里的地址参考自己的路径,我这个是旧版
       sd_models.reload_model_weights(info=w_info)	#新增
	with closing(StableDiffusionProcessingImg2Img(sd_model=shared.sd_model, **args)) as p:

然后另外一个 img2imgapi 类同理
在这里插入图片描述
代码如下

send_images = args.pop('send_images', True)
args.pop('save_images', None)
model_name = img2imgreq.model_name  #新增
with self.queue_lock:
    if model_name is not None:  #新增
       pathName = os.path.abspath('..')  #新增
       pathName = pathName.replace('\\','/')  #新增
       w_info = sd_models.CheckpointInfo(os.path.join(pathName+'/webui/models/Stable-diffusion/'+model_name)) #新增,这里的地址参考自己的路径,我这个是旧版
       sd_models.reload_model_weights(info=w_info)	#新增
	with closing(StableDiffusionProcessingImg2Img(sd_model=shared.sd_model, **args)) as p:

(2)models.py 文件

首先打开 \modules\api下的 models.py 文件
在这里插入图片描述
找到StableDiffusionTxt2ImgProcessingAPIStableDiffusionImg2ImgProcessingAPI这两个类添加代码
在这里插入图片描述
代码

{"key": "model_name", "type": str, "default": None},

(3)processing.py 文件

首先打开 \modules下的 processing.py 文件
StableDiffusionProcessingTxt2ImgStableDiffusionProcessingImg2Img 新增代码
在这里插入图片描述
在这里插入图片描述

model_name: str = None

然后源码这块已经修改完成了

注意:py的代码格式,不要多一个空格或者少一个,因为可能会导致控制台报错

然后在vue前端接口调用,文生图接口,图生图接口 ,新增个 model_name 的字段即可完成,通过修改model_name字段即可切换模型,如下

文生图接口地址

/sdapi/v1/txt2img   //post 请求

入参

{
  enable_hr: false, // 开启高清hr
  denoising_strength: 0, // 降噪强度
  hr_scale: 2, // 高清级别
  hr_upscaler: "",
  hr_second_pass_steps: 0,
  hr_resize_x: 0,
  hr_resize_y: 0,
  hr_sampler_name: "",
  hr_prompt: "",
  hr_negative_prompt: "",
  prompt: "", // 正向关键字
  styles: [],
  seed: -1, // 随机种子
  subseed: -1, // 子级种子
  subseed_strength: 0, // 子级种子影响力度
  seed_resize_from_h: -1,
  seed_resize_from_w: -1,
  sampler_name: "",
  batch_size: 1, // 每次生成的张数
  n_iter: 1, // 生成批次
  steps: 50, // 生成步数
  cfg_scale: 7, // 关键词相关性
  width: 512, // 生成图像宽度
  height: 512, // 生成图像高度
  restore_faces: false, // 面部修复
  tiling: false, // 平铺
  do_not_save_samples: false,
  do_not_save_grid: false,
  negative_prompt: "", // 反向关键字
  eta: 0, // 等待时间
  s_min_uncond: 0,
  s_churn: 0,
  s_tmax: 0,
  s_tmin: 0,
  s_noise: 1,
  override_settings: {}, // 覆盖性配置
  override_settings_restore_afterwards: true,
  script_args: [], // lora 模型参数配置
  sampler_index: "Euler", // 采样方法
  script_name: "",
  send_images: true, // 是否发送图像
  save_images: false, // 是否在服务端保存生成的图像
  alwayson_scripts: {}, // alwayson配置
  //********************模型
  model_name: "",
};

5.项目实例

github开源项目,ollama-chat-ui-vue,该项目包涵 stable diffusionollama,deepseek 本地接口对接,后续支持更多ai功能集成包括,ai生音乐生成ppt等 ,最后githut开源项目不易,帮忙点点star
在这里插入图片描述
在这里插入图片描述
stable diffusion 的内容在 develop-stablediffusion 分支中
在这里插入图片描述

https://github.com/LovelittleBears/ollama-chat-ui-vue

关于:
(1)stable diffusion 本地部署教程
(2) ollama-chat-ui-vue,一个可以用vue对接ollama的开源项目,可接入deepSeek


http://www.kler.cn/a/613714.html

相关文章:

  • java对pdf文件分页拆分
  • [特殊字符] 2025蓝桥杯备赛Day14——P8752 [蓝桥杯 2021 省 B2] 特殊年份
  • 使用QT画带有透明效果的图
  • Linux 配置NFS服务器
  • 自动化发布工具CI/CD实践Jenkins部署与配置教程
  • 算法 | 2024最新算法:鳑鲏鱼优化算法原理,公式,应用,算法改进研究综述,matlab代码
  • Android Gradle 插件问题:The option ‘android.useDeprecatedNdk‘ is deprecated.
  • 浙江大学|DeepSeek系列专题公开课|第一季|PDF+视频(全)
  • word光标一直闪的解决办法
  • linux协议栈网卡接收数据到tcp缓冲区
  • 3.1go流程控制语句
  • 深度学习笔记19-YOLOv5-C3模块实现(Pytorch)
  • Python 爬虫:一键解锁 3GPP 标准协议下载难题
  • XCode16 在Other LInker Flags中,添加-ld64与不添加,有什么区别?
  • sql-labs靶场 less-1
  • hadoop客户端环境准备
  • Linux Shell 脚本使用YAD工具实现Shell图形化界面
  • SpringSecurity过滤器链:核心过滤器的执行顺序与职责
  • spring security设置多个数据源和登录验证码
  • 故障识别 | 基于改进螂优化算法(MSADBO)优化变分模态提取(VME)结合稀疏最大谐波噪声比解卷积(SMHD)进行故障诊断识别,matlab代码