nonebot2聊天机器人插件12:stable_diffusion_webui_api

2023-10-29 12:40

本文主要是介绍nonebot2聊天机器人插件12:stable_diffusion_webui_api,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

nonebot2聊天机器人插件12:stable_diffusion_webui_api

  • 1. 插件用途
  • 2. 代码实现
  • 3. 实际效果

该插件涉及知识点:定时器,调用bot的api发送消息
插件合集:nonebot2聊天机器人插件

该系列为用于QQ群聊天机器人的nonebot2相关插件,不保证完全符合标准规范写法,如有差错和改进余地,欢迎大佬指点修正。
前端:nonebot2
后端:go-cqhttp
插件所用语言:python3
前置环境安装过程建议参考nonebot2官方文档。

1. 插件用途

插件名:绘图(stable diffusion webui api)

用处是对接当前热门的AI绘图项目stable diffusion webui的api,调用该项目完成AI绘图,随后通过机器人发送到群里。

2. 代码实现

鉴于发送和接收这些功能的实现方式在本篇系列之前的内容中已经反复描述,此处不再赘述相关结构与代码,直接给出具体的核心模块实现。

前置:在你的电脑上配置stable diffusion webui,配置它所需要的环境,并且能够成功运行。
在启动时,设置为以api模式运行,在启动命令后面加上--api参数。
使用这个插件时,需要确保stable diffusion webui处于正常可用状态。

基于通用绘图api接口的stable diffusion webui api对接类
SD_webui_API.py

import io
import base64
from PIL import Image
import requestsclass SD_webui_API():# 配置def __init__(self):# stable diffusion webui的地址self.url = "http://127.0.0.1:7860"# 固定的负面tagself.payload = {"negative_prompt": "nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, ""extra digit, fewer digits, cropped, worst quality, low quality, ""normal quality, jpeg artifacts, signature, watermark, username, blurry, ""artist name, bad feet","steps": 28,"width": 1024,"height": 576,"cfg_scale": 7,}# 绘图,并保存到传入路径def draw_img(self, msg, temp_img_path):# 剔除一些居心不良的玩意msg = msg.replace("nsfw", "").replace("r18", "").replace("R18", "")# 添加前置词# 别问我为什么偷偷暗藏萝莉体型,懂得都懂self.payload["prompt"] = f"best quality, masterpiece, highres, extremely detailed wallpaper, younger child, {msg}"self.payload["prompt"] = self.payload["prompt"].replace(",", ",")# 发送和接收的信息response = requests.post(url=f'{self.url}/sdapi/v1/txt2img', json=self.payload)# 解析信息response = response.json()# 保存图像到磁盘for image_byte in response['images']:image = Image.open(io.BytesIO(base64.b64decode(image_byte.split(",", 1)[0])))image.save(temp_img_path)

调用绘图通用API的方式

from drawAPI import SD_webui_APIdraw_api = SD_webui_API.SD_webui_API()test_img_path = "temp/test.png"msg = "蓝色的小鸟,树林"
# 翻译输入的内容为英文,此处调用另外写的翻译api接口
msg, state = trans_to_en(msg)# 将图像绘制后保存到磁盘
draw_api.draw_img(msg, test_img_path)

完整的绘图插件主代码因为过长,就不再完整放出了~
翻译api因为涉及到一些别的东西,就不在这里给出了,如果你不知道怎么写,就直接用英文输入好了~
就当是留了个作业吧
不要问我为什么偷偷在代码里面锁定了生成萝莉体型的角色,懂得都懂

3. 实际效果

在这里插入图片描述

这篇关于nonebot2聊天机器人插件12:stable_diffusion_webui_api的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/300734

相关文章

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

Maven(插件配置和生命周期的绑定)

1.这篇文章很好,介绍的maven插件的。 2.maven的source插件为例,可以把源代码打成包。 Goals Overview就可以查看该插件下面所有的目标。 这里我们要使用的是source:jar-no-fork。 3.查看source插件的example,然后配置到riil-collect.xml中。  <build>   <plugins>    <pl

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

基于树梅派的视频监控机器人Verybot

最近这段时间做了一个基于树梅派 ( raspberry pi ) 的视频监控机器人平台 Verybot ,现在打算把这个机器人的一些图片、视频、设计思路进行公开,并且希望跟大家一起研究相关的各种问题,下面是两张机器人的照片:         图片1:                   图片2                    这个平台的基本组成是:

Restful API 原理以及实现

先说说API 再说啥是RESRFUL API之前,咱先说说啥是API吧。API大家应该都知道吧,简称接口嘛。随着现在移动互联网的火爆,手机软件,也就是APP几乎快爆棚了。几乎任何一个网站或者应用都会出一款iOS或者Android APP,相比网页版的体验,APP确实各方面性能要好很多。 那么现在问题来了。比如QQ空间网站,如果我想获取一个用户发的说说列表。 QQ空间网站里面需要这个功能。

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a