关于【SD-WEBUI】的API:开发代码示例和帮助文档

news2024/12/27 13:57:11

文章目录

  • (零)前言
  • (一)启用API
  • (二)编写调用程序
    • (2.1)Python例子代码
    • (2.2)执行
    • (2.3)结果
  • (三)帮助文档
    • (3.1)问题:无法显示API帮助
    • (3.2)原因:Gradio版本
    • (3.3)简单办法

(零)前言

本篇主要将到不通过WEB浏览器,而是程序调用API的方式访问WEBUI的服务(开发相关)。
更多不断丰富的内容参考:🔗《继续Stable-Diffusion WEBUI方方面面研究(内容索引)》

(一)启用API

当使用--api参数来启动WEBUI时,API就开启了:

  • 方法一:直接启动的,修改webui-user.bat中的set COMMANDLINE_ARGS=--api
  • 方法二:通过启动器启动,打开其中的启用API选项:在这里插入图片描述

(二)编写调用程序

启用API后,就可以通过HTTP的发送请求+得到返回的方式来调用API,生成结果。
所以适合各种语言开发的程序,也可以嵌入任何系统中。

(2.1)Python例子代码

import json
import requests
import io
import base64
from PIL import Image, PngImagePlugin

url = "http://127.0.0.1:7860"

payload = {
    "prompt": "1girl, upper body, looking at viewer, overcoat, ..., (photorealistic:1.4), best quality, masterpiece",
    "negative_prompt":"EasyNegative, bad-hands-5, paintings, sketches, (worst quality:2), ..., NSFW, child, childish",
    "steps": 20,
    "sampler_name": "DPM++ SDE Karras",
    "width": 480,
    "height": 640,
    "restore_faces": True
}

response = requests.post(url=f'{url}/sdapi/v1/txt2img', json=payload)

r = response.json()

for i in r['images']:
    image = Image.open(io.BytesIO(base64.b64decode(i.split(",",1)[0])))

    png_payload = {
        "image": "data:image/png;base64," + i
    }
    response2 = requests.post(url=f'{url}/sdapi/v1/png-info', json=png_payload)

    PI = PngImagePlugin.PngInfo()
    PI.add_text("parameters", response2.json().get("info"))
    image.save('output.png', pnginfo=PI)

(2.2)执行

代码存为SDWEBAPI.py文件后直接执行。
如果缺少python的模块请pip自行安装。

PS D:\xxx> python .\SDWEBAPI.py
PS D:\xxx>

等一小会儿,如果程序返回了没有报错,则在当前目录下成功生成了output.png

(2.3)结果

结果和我们通过浏览器操作WEBUI并没有什么不同。
生成的output.png文件大概如下:
请添加图片描述

上面只是一个文生图的例子。
参数很多,还可以暂时覆盖WEBUI的设置。
也可以选择先修改WEBUI的设置,再进行其它操作。

具体参数可以查看帮助文档,参考来自:官网WIKI关于API部分。

(三)帮助文档

官网WIKI提到可以通过你启动的地址加/doc的路径来查看帮助文档:

http://127.0.0.1:7860/docs

帮助文档如果能出来的话,大概就是下面这个样子。
包括各种方法/参数写得很清楚(为啥不多举点例子)。

问题是目前正常情况下:⚠️根本看不到这个页面,啊啊啊!!!
在这里插入图片描述

(3.1)问题:无法显示API帮助

如果你也是目前最新版本,也按照WIKI添加了--api,但还是看不到帮助而是如下画面。
那么先不要着急,我这里也一样的 😢 。
在这里插入图片描述

(3.2)原因:Gradio版本

  • 从WEBUI的commit 101a18f(bump gradio to 3.27) 开始出现的问题,有很多issue在讨论。
  • 而新版Gradio删除了swagger /docs/,只使用新的gradio_client文档。Gradio相关issue在要求恢复。

总之是基础框架和帮助框架的神仙打架,凡人遭殃。
目前Gradio没有重新引入Swagger API文档,但可以上述issue讨论的帖子给出的例子,通过修改源码,或自己代码方式来绕过。而不改别人的代码,也有个相对简单的办法。

(3.3)简单办法

就是添加--nowebui参数来启动WEBUI(用不启动WEBUI的方式启动WEBUI:所以这是绕口令么)。
添加这个参数之后,就不会再有浏览器界面了,但是暂时可以通过http://127.0.0.1:7860/docs看见API的帮助。

我们可以先这样打开帮助页面(不要关)。然后去掉此参数,重启WEBUI。
就既可以看到帮助(没关的页面),又可以通过浏览器操作了(苦笑)。


😜Happy Coding……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/508435.html

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

相关文章

第7章 动静分离

第7章 动静分离 Nginx的负载均衡和静态代理结合在一起,我们可以实现动静分离,这是实际应用中常见的一种场景。 动态资源,如jsp由tomcat或其他web服务器完成 静态资源,如图片、css、js等由nginx服务器完成 它们各司其职&#x…

苹果备忘录永久删除了怎么办?3种备忘录恢复的方法!

案例:iPhone备忘录彻底删除了怎么办? 【友友们,苹果备忘录永久删除了,还可以恢复吗?有什么方法?】 苹果备忘录是苹果系统自带的一款备忘录应用,可以帮助我们记录日程安排、备忘事项、重要信息等…

深度学习技巧应用13-神经网络中数据并行训练的原理

大家好,我是微学AI,今天给大家介绍一下人工智能基础部分15-神经网络中数据并行训练的原理,在神经网络中,数据并行训练是一种常用的训练技术。它利用多个GPU或多个计算机对同一个模型进行训练,不同的设备处理相同的模型和数据,但会随机选择不同的批次数据,并使用反向传播…

视频创作教程-蜜蜂剪辑软件

视频创作教程-蜜蜂剪辑软件 作者介绍 一、视频剪辑软件二、蜜蜂剪辑软件使用1.视频比例选择2.添加视频素材3.视频分割4.添加文字5.转场滤镜6.其它 三、创作实例四、软件分享 作者介绍 熊文博,男,西安工程大学电子信息学院,2020级硕士研究生&…

「隐语小课」LDP和CDP在联邦学习中对于隐私性以及鲁棒性的作用

本次分享内容为NDSS收录的一篇文章:《Local and Central Differential Privacy for Robustness and Privacy in Federated Learning》。这篇论文主要分析了LDP和CDP在联邦学习中对于隐私性以及鲁棒性的作用。围绕这篇论文的分享将分为以下4个部分: 动机与…

mac录屏软件推荐!相信我,看完你不会后悔

有粉丝后台问小编,自己的电脑是mac电脑,不知道如何使用mac电脑录屏,有没有mac录屏软件推荐?小编之前也是用的Windows电脑进行录屏,后来换了mac,经过多年的摸索,熟练掌握了录屏方法。今天小编就带…

在facebook上最容易开展的营销活动是什么?如何开展?

在Facebook上最容易开展的营销活动包括社交媒体广告、社群互动、社交内容分享以及活动与促销。这些活动可以帮助企业吸引目标受众、增加品牌曝光度、提高用户参与度和促进销售。下面让我们详细了解一下如何开展这些活动,并给出相应的案例。 1.社交媒体广告&#xff…

全景丨0基础学习VR全景制作,平台篇第20章:热点功能-文章

大家好,欢迎观看蛙色VR官方——后台使用系列课程! 功能说明 应用场景 热点,指在全景作品中添加各种类型图标的按钮,引导用户通过按钮产生更多的交互,增加用户的多元化体验。 文章热点,即点击热点后会嵌入…

Java EE--多线程(二)

目录 四、多线程案例之--单例模式 3.1 单例模式 3.2 怎么去设计一个单例? 饿汉模式 懒汉模式 3.3 两种模式的总结 四、多线程案例之--单例模式 4.1 单例模式 是校招中最常考的设计模式之一. 啥是设计模式? 设计模式好比象棋中的 " 棋谱 &quo…

Cookie的使用

1.Cookie的工作原理 Web应用程序中使用的是HTTP.HTTP是无状态协议,客户端与服务器完成业务交互后,它们之间的联系会关闭.由于交互式Web应用的需求增加,管理会话和识别用户的身份应运而生.比如,用户A登录一个网站后,在第二次登录的时候会免登录,自动进入用户A的个人主页. 服务…

哪种蓝牙耳机戴着最舒服?佩戴最舒服的真无线蓝牙耳机

无论在地铁、咖啡厅、商场甚至是机场,佩戴蓝牙耳机可以让我们尽情地享受音乐,戴上耳机可以避免影响他人的同时也能避免隐私的泄露。因此这几年真无线蓝牙耳机也受到了广大网友的追捧。,下面分享几款佩戴舒适的蓝牙耳机给大家。 一、南卡小音…

修改文章的软件-有没有自动修改文章的软件

自动修改文章神器 自动修改文章神器是一种利用人工智能和自然语言处理技术,帮助用户快速修改和优化文章的工具。该软件能够检测文章的语法和拼写错误、表达不当的问题,并自动提供修改和优化建议。用户只需根据软件的提示进行修改,就能得到高…

三子棋游戏的实现

前言:相信大家都玩过三子棋吧,曾想经常和同学在考试之后玩一个晚自习的三子棋。那么,如何自己编写一个三子棋游戏呢,请看下面的分析; 1.游戏设计思路 在写任何代码时,最好先有个大致的框架,然后…

二维数组---C语言(行列抽象思维)

目录 前言: 1.数组 1.1数组的初始化 1.2数组的访问方法 2.二维数组 2.1二维数组的创建和初始化 2.2二维数组的访问 2.3内存中的二维数组 ❤博主CSDN:啊苏要学习 ▶专栏分类:C语言◀ C语言的学习,是为我们今后学习其它语言打好基础&am…

探索 Elasticsearch 8.X Terms Set 检索的应用与原理

1、Terms Set 检索简介 Terms Set查询是Elasticsearch中一种强大的查询类型,主要用于处理多值字段中的文档匹配。 其核心功能在于,它可以检索至少匹配一定数量给定词项的文档,其中匹配的数量可以是固定值,也可以是基于另一个字段的…

快速排序、希尔排序、归并排序、堆排序、插入排序、冒泡排序、选择排序(递归、非递归)C语言详解

1.排序的概念及其运用 1.1排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录&…

postman 的 console 窗口,助力 http 请求错误时的问题排查

postman 是个很不错的 http 请求测试工具,有时我们使用它发送 http 请求,但是因为各种原因,导致请求失败,没有 response 返回,可能只有一个状态码,这让我们排查起来非常困难,比如下图所示&#…

GitLab + Jenkins 实现持续集成CI

1 软件版本 2 基础环境安装 2.1 docker 安装 yum install -y docker-ce-20.10.16 systemctl start docker && systemctl enable docker docker version 2.2 docker-compose 安装 curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-c…

虚拟化无法开启

虚拟化无法开启 开启虚拟机,突然出现以下报错: 此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。 如果已在 BIOS/固件设置中禁用 Intel VT-x,或主机自更改此设置后从未重新启动,则 Intel VT-x 可能被禁用。 (1…

modbus 协议地址

modbus 仿真软件 modbus slave: 用作 modbus 服务器(也叫做modbus从站), 通常用于仿真PLC设备.modbus poll: 用作 modbus 客户端(也叫做modbus主站), 用于仿真上位机程序, 通常使用它在现场验证PLC设备的modbus通讯是否OK 理解 modbus 寻址 modbus 分4个数据区, 实际因为第4区可…