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, // 开启高清hrdenoising_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, // 开启高清hrdenoising_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.mzph.cn/pingmian/73788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7 部署RuoYi 项目

换源 备份现有的 YUM 源配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 默认的 CentOS 官方镜像源替换为阿里云的镜像源,以提高下载速度和稳定性。 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.co…

从 WPF 到 MAUI:跨平台 UI 开发的进化之路

一、引言 在软件开发领域,用户界面(UI)开发一直是至关重要的环节。随着技术的不断发展,开发者对于创建跨平台、高性能且美观的 UI 需求日益增长。Windows Presentation Foundation(WPF)和 .NET Multi - pl…

C++ stack容器总结

stack 基本概念 概念: stack是一种后进先出(Last In First Out, LIFO)的数据结构,它只有一个出口 栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为 栈中进入的数据称为----入栈(PUSH) 栈中出去的数据成…

【SDMs分析1】基于ENMTools R包的生态位分化分析和图像绘制(identity.test())

基于ENMTools包的生态位分化 1. 写在前面2. 生态位分化检验案例13. 生态位分化检验案例21. 写在前面 最近学了一个新的内容,主要是关于两个物种之间生态位分化检验的 R 语言代码。生态位分化是物种分布模型(SDM )研究中的关键部分,许多 SCI 论文都会涉及这一分析。该方法主…

SpringBoot 7 种实现 HTTP 调用的方式

1. HttpClient HttpClient是Apache基金会提供的一个用于发送HTTP请求的Java客户端库。 尽管它功能强大,但由于其API设计较为复杂且包体积庞大,在一些轻量级的应用场景中可能显得过于臃肿。 不过,在需要高度定制化的HTTP请求时,H…

Ubuntu与Windows之间相互复制粘贴的方法

一、打开Ubuntu终端 二、卸载已有的工具 sudo apt-get autoremove open-vm-tools 三、安装工具 sudo apt-get install open-vm-tools-desktop 四、重启 直接输入reboot 注:有任何问题欢迎评论区交流讨论或者私信!

ECharts实现数据可视化

ECharts实现数据可视化 一、Echarts的简介二、Echarts使用教程1.下载echarts.min.js文件2.编写echarts代码(1)创建渲染实列(2)修改option达到预期的效果(3)创建配置项到实例中 三、Echarts的基础配置四、前…

ArcGIS 10.8.1之后发布栅格数据的MapServer 动态工作空间 替换数据源渲染问题

背景 经过测试,Server 10.8.1、11.0、11.1发布相关服务设置动态空间之后,前端都无法自动读取同名的clr色彩映射表文件进行渲染,服务都是由ArcGIS Pro进行发布。 原因 基于ArcMap发布的服务才支持,但是10.8.1之后不支持ArcMap发…

vscode在使用 alt + tab 切换程序窗口时,输入法总是自动变为中文模式

因为需要在 vscode 中编写代码,将输入法设为英文模式,但是用 alt tab 切换到浏览器查看文档,此时浏览器也是英文模式,但是再切回 vscode 后就变为中文模式了,需要使用 shift 键切换为英文模式,一次两次还好…

【Linux加餐-网络命令】

一、Ping命令 Ping 是一种网络工具,用于测试主机之间的连通性。它通过发送 ICMP(Internet Control Message Protocol)回显请求 报文到目标主机,并等待目标主机返回 ICMP 回显应答 报文,从而判断网络是否通畅以及测量往…

Maven工具学习使用(六)——聚合与继承

Maven的聚合特性能够把项目的各个模块聚合在一起构建,而Maven的继承特性则能帮助抽取个模块相同的依赖和插件等配置,在简化POM的同时,还能促进各个模块配置的一致性。 一般说来一个项目的子模块都应该使用同样的groupId,如果他们一起开发和发布,还应该使用同样的version,…

vulhub靶场jangow-01-1.0.1

启动靶机时点shift停在这个界面 点e进入编辑页面,把ro改成rw signie init/bin/bash Ctrlx保存,ip a查看网卡信息 vim /etc/network/interfaces 把enp0s17改为ens33,保存退出 重启靶机,nmap扫ip ip为192.168.93.179 nmap扫端口 扫…

C++11QT复习 (四)

Day6-1 输入输出流运算符重载(2025.03.25) 1. 拷贝构造函数的调用时机 2. 友元2.1 友元函数 3. 输入输出流运算符重载3.1 关键知识点3.2 代码3.3 关键问题3.4 完整代码 4. 下标访问运算符 operator[]4.1 关键知识点4.2 代码 5. 函数调用运算符 operator…

数仓架构告别「补丁」时代!全新批流一体 Domino 架构终结“批流缝合”

在数字化转型的浪潮中,企业对数据处理的需求日益复杂多变,传统的批处理和流处理架构已难以满足日益增长的性能和时效性要求。在此背景下,YMatrix CEO 姚延栋发布了深度文章《数仓架构告别「补丁」时代!全新批流一体 Domino 架构终…

一文详解QT环境搭建:ubuntu20.4安装配置Qt5

随着软件开发技术的不断进步,跨平台应用程序的需求日益增长,开发者们面临着如何在不同操作系统之间保持代码的一致性和效率的问题。Qt作为一个成熟的跨平台C框架,在这方面提供了卓越的支持,不仅简化了GUI应用程序的创建过程&#…

安全+低碳+高效:Acrel-3000助力企业打造未来型电能管理体系-安科瑞黄安南

一 背景 电能因为方便传输、易于转换、便于控制等特性,成为广大企事业单位生产、办公最主要的能量来源。双碳背景下,由于电能清洁、高效、零排放的特点,能源消费侧将逐步以电代煤、以电代油、以电代气,形成以电为中心的能源消费体…

Docker 安装 RabbitMQ

以下是在Docker中安装RabbitMQ并实现配置、数据、日志文件映射的完整步骤。 步骤 1:创建本地目录结构 # 创建配置、数据、日志目录 mkdir -p /root/docker/rabbitmq/{conf,data,logs}# 目录结构说明: # - conf: 存放自定义配置文件 # - data: 持久化存储…

SAP-ABAP:SAP数据集成全场景技术指南(BAPI、RFC、IDOC、BATCHJOB、ODATA、WEBSERVICE):从实时交互到批量处理

SAP数据集成全场景技术指南:从实时交互到批量处理 #mermaid-svg-hpPMerJYUerla0BJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hpPMerJYUerla0BJ .error-icon{fill:#552222;}#mermaid-svg-hpPMerJYUerla0BJ .er…

运维规则之总结(Summary of Operation and Maintenance Rules)

运维规则之总结 在运维领域,经验和流程往往决定了系统的稳定性与可靠性。一个运维人,总结出了以下10条运维规则,涵盖了从基础管理到高级策略的全面内容,旨在帮助运维人员更好地应对各种挑战,确保系统的平稳运行。 1.…

⑦(ACG-网络配置)

网络配置是指对计算机网络的各种参数进行设置和调整,以实现网络正常运行和高效通信。网络配置包括多方面的内容,常见的配置包括: 1. IP地址设置:IP地址是设备在网络中的身份标识,设置IP地址是网络配置的基础&#xff…