Prompt自动补全脚本安装教程[适用于A1111的SD WebUI, 推荐加载NovelAI/Waifu模型时用
姓符的绅士
2022年10月15日 02:54

注意:该教程适用于A1111的SD WebUI(AUTOMATIC1111/ stable-diffusion-webui), 如果你在使用的是Naifu/官方的服务, 该教程可能不适用于你.

该文章撰写于22.10.14晚,  a1111-sd-webui-tagcomplete的版本为1.4.3, 实测在本日最新SD WebUI内可用.

本教程是输入时自动补全prompt(tag),并非图片转prompt, 后者之前就早已实现, 在img2img里有选项可使用, 如感兴趣我单独写一篇来讲.

Q:我下的是懒人包,怎么判断自己是不是A1111的SD WebUI呢

A:如果你的界面类似这样, 那么你使用的正是AUTOMATIC1111的stable-diffusion-webui

截止至22.10.14, SD WebUI的网页UI界面

接下来进入正题.

关于prompt自动补全脚本, 这是由DominikDoom(https://github.com/DominikDoom)制作的自定义脚本, 适用于流行的 AUTOMATIC1111 Web UI. 该脚本在Github上开源, 项目地址为https://github.com/DominikDoom/a1111-sd-webui-tagcomplete .

你可以选择在其项目的Release (https://github.com/DominikDoom/a1111-sd-webui-tagcomplete/releases)下载最新版, 如果你的网络状态不好, 可以通过以下的链接来下载.

百度云:https://pan.baidu.com/s/1cJr1wgQ_zV2vRyllMOwtRQ?pwd=gt38

阿里云:最近没法分享, 如果我想起来的话日后补上

OneDrive:https://ufhy-my.sharepoint.com/:u:/g/personal/fu_ufhy_onmicrosoft_com/EdtIfl32_dFIk8VVpOr4gIkBoKd1zSz7vIKHEToaf33BtA?e=OP9d1J

(值得注意的,OneDrive打开后理论上是zip,不要点打开或点进文件夹, 直接点左上角下载就行)

简易部署教程:

当你下载完该安装包后, 解压到任一文件夹.

压缩包里面有 javascript , tags 文件夹

然后将里面的这两个文件夹复制或剪切, 放置到stable-diffusion-webui的根目录

(注意:不是您的scripts文件夹)

直接在根目录粘贴就行

默认情况下, 该脚本与现有WebUI没有文件冲突, 不会替换任何文件, 所以打算卸载时只需要对照压缩包将文件删除即可.

值得注意的, tags文件夹之前是没有的, 其用来存储默认填充的tag, 你可以在里面添加你自定义的tag, 详细使用将在下文讲解. 而javascript文件夹原本就存在, 存储着其他支撑着WebUI的js, 如果想卸载一定不要将该文件夹直接删除, 删去javascript\tagAutocomplete.js就行.

正确的放置了文件后,在网页端的setting底部点击"Restart Gradio and Refresh components (Custom Scripts, ui.py, js and css only)", 即可自动重新启动组件(自定义脚本,ui.py, js和css)

,短暂重启后你将可以在输入框自动补全prompt(tag)了.(当然...如果你闲得无聊, 重启整个WebUI也可以实现)

你看, 就在右下角, 点击一下就行了, 不用重启整个WebUI

效果如图

蛮好的, 有点写代码的感觉了

输入时会实时的在下方显示候选, 使用上下方向键选中其中一个后按回车即可上屏.

(可惜的是, 必须要使用方向键来选中,且只能用回车上屏, 不能用Tab直接输入补全,不确定日后会不会更新来解决该问题  22.10.15留)

题外话:   如果不方便使用方向键和回车, 推荐一个软件, Capslock+, 在Github开源的(https://github.com/wo52616111/capslock-plus),一个加强 Capslock 键的工具, 可将 Caps Lock 键变成与 Ctrl 等按键类似的修饰键.官网(https://capslox.com/capslock-plus/)

使用该软件时, 可以使用Capslock+D的快捷键,当作方向下键使用,同时, Capslock+空格(Space)是回车, 可以通过该软件优化你的使用体验.

标准安装流程到此结束, 现在你应该能在输入prompt(tag)的时候更快的补全他, 减少了在 web UI 和 booru 站点之间来回切换以复制粘贴标签的需要, enjoy it!

接下来是高级设置部分,或称进阶部分.

通过更改配置文件来实现自定义功能

tags\config.json是这个脚本的配置文件, 你可以通过更改他来载入其他Tag文件什么的, 具体看以下注释(注意:json不支持注释, 我写后面只是为了这篇文章, 将代码复制到你本地的config.json可能导致错误)

代码块
JavaScript
自动换行
复制代码
复制成功

新增自定义Tag/更改现有Tag

你知道的, 在安装的时候, 他在根目录放了一个Tags文件夹, 事实上也很容易猜到, 它所调用的Tag相关的功能都来自这个文件夹. 其中, 记录了Tag的文件是\tags\danbooru.csv 和\tags\e621.csv (默认加载的是danbooru.csv, 建议只改这儿)

这是一个逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号)文件, 你可以把他当作表格打开,用WPS或者MS office. 当然 , 实际上由于它本质是文本文件, 你可以使用记事本/VS code这类软件打开, 也是没有问题的.

我们尝试用Excel打开该文件, 可以看到有两个竖列, 其中第一列是其记录的Tag,

第二列我个人猜测是该Tag的权重(或许称之为"优先级"更合适?), 体现为该数值越高, 在补全的列表里越靠前(靠上), 你可以通过更改该列的值来使得你常用的Tag更快的出现在顶端.(默认该值是0,不确定不填该值是否会导致问题)

恩...上面那些是错的, 我去查了查, 第二列是标签类型,遵循https://danbooru.donmai.us/wiki_pages/api%3Atags

不过好像还是该值越高越靠上?

在 Danbooru 表现为:

  • 价值 描述

  • 0 一般的

  • 1 艺术家

  • 3 版权

  • 4 特点

  • 5 元(meta)

你也可以在上面发过的Github连接里的readme里最下面看到, 由于B站专栏不能使用表格, e621的我就不打了,什么时候能支持下markdown啊(

你可以在表格末端的新一行首列加入你的Tag, 并且在第二列加入权重(至少填个0,不支持小数),如果是用文本编辑器, 只需要在末行回车新建一行然后输入"tag,0"即可(不包含双引号, 需要用英文逗号), 再强制刷新网页(Ctrl+F5) 就有了.

如图,记得加",0"

(必须要且只要强制刷新网页, 不然以前的缓存一直在, 我还以为是我哪里设置出了问题)

强制刷新后, 即可看到自己新加的tag, 或者更改后的tag

测试用的Tag,无意义

使用通配符更快的检索Tag

默认情况下,通配符是关掉的, 你可以在config.json的line11处更改

` "useWildcards": false `为 ` "useWildcards": true `来启用他,

并且你需要在 tags/wildcardNames.txt 里将您想要使用的通配符写进去,这样脚本才能访问它们,文件默认提供了几个,你可以取消注释(也就是把//删了)来使用他们

例如这样

于是, 它将会在\scripts\wildcards寻找同名的.txt文件(注意,默认是没有的, 你需要自己加)

如ufhy.txt

文件的结构如下(需要换行,可以添加符号, 届时会直接写入)

代码块
JavaScript
自动换行
复制代码
tag1
tag2
tag3
复制成功

实例(tag均为无意义tag)

当你使用  __通配符名字__  时, 便会加载该文件内的tag, 你可以自定义某方面的tag在此方便你的输入(或许日后我会自制些分享也说不定?)

 a1111-sd-webui-tagcomplete目前已有的功能似乎就那么多了, 如果有遗漏的讲错的恳请在评论区内告诉我, 我及时查漏补缺. 不会的也可以在评论区讨论.