项目文件夹

0
wehub-resource-sync 8920c7a2e7
Test / lint (push) Has been cancelled
Test / test (push) Has been cancelled
docs: make Chinese README the default
2026-07-13 10:09:18 +00:00

Note

本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。

Stable Diffusion Dynamic Prompts 扩展

面向 AUTOMATIC1111/stable-diffusion-webui 的自定义扩展,实现了富有表现力的模板语言,用于随机或组合式提示词生成,并支持深层通配符(wildcard)目录结构。

在找 ComfyUI 节点?请见这里.

目录

基本用法

使用本脚本时,提示词:

A {house|apartment|lodge|cottage} in {summer|winter|autumn|spring} by {2$$artist1|artist2|artist3}

将生成以下任意一种提示词:

  • 一间 house,在 summer,由 artist1artist2 绘制
  • 一间 lodge,在 autumn,由 artist3artist1 绘制
  • 一间 cottage,在 winter,由 artist2artist3 绘制
  • ...

若你在寻找艺术家与风格的有趣组合,这会特别有用。

你也可以从文件中随机选取字符串。假设你在 WILDCARD_DIR(见下文)中有文件 seasons.txt,那么:

__seasons__ is coming

可能生成:

  • Winter is coming
  • Spring is coming
  • ...

同一通配符也可使用两次:

I love __seasons__ better than __seasons__
  • I love Winter better than Summer
  • I love Spring better than Spring

更完整的文档见这里
更喜欢教程?点此查看
需要通配符库?我们已为你准备好

在线资源

教程与通配符包列表见这里

安装

可直接在 WebUI 的 Extensions 标签页中安装本扩展

也可在 webui 目录下运行以下命令手动安装:

git clone https://github.com/adieyal/sd-dynamic-prompts/ extensions/sd-dynamic-prompts

你可以在 extensions/sd-dynamic-prompts/wildcards 中创建通配符文件,或在 Web UI 的 "Wildcards Manager" 标签页中使用预装集合

配置

可在 Settings 标签页的 Dynamic Prompts 分区中调整 Dynamic Prompts 的各项行为设置。

修改语法

若与其他扩展存在语法冲突,Dynamic Prompts 允许你修改变体起始与结束的定义。默认分别为 {},例如 {red|green|blue}。在设置页可将二者改为任意字符串,例如 <red|green|blue>::red|green|blue::

默认情况下,通配符以 __(双下划线)开头,以 __ 结尾。可在设置页的 wildcard wrap 下修改。

通配符设置

Dynamic Prompts 会在使用前自动对通配符文件去重并排序。若要禁用,可在设置页取消相应复选框。

勾选 "shuffle wildcards" 将随机打乱通配符顺序,使组合式模式在不同运行中生成不同图像。

将模板保存到元数据

默认行为是先将所有通配符解析为可用提示词,再将该提示词存入 PNG info 或 txt 文件(例如 I love Winter better than Summer)。若你还想保留带通配符的原始模板,可开启此选项,将保存:

I love Winter better than Summer
Template: I love __seasons__ better than __seasons__

注意:此额外的 "Template" 分区不会在生成页显示,但可在 PNG Info(若已安装 image browser 扩展,也可在该扩展中)查看。

故障排除

若使用 Dynamic Prompts 时遇到问题,请按以下步骤排查:

  1. 确认 Dynamic Prompts 扩展与库均为最新版本。查看已安装版本:在 txt2image 的 Dynamic Prompts 分区打开 Need Help? accordion。扩展最新版本号见这里,库见这里.

  2. 若版本不一致,在 extensions 标签页更新扩展并重启 webui。扩展应会自动更新库。

  3. 若上一步无效,可能需用以下命令手动更新库:

python -m pip install -U dynamicprompts[attentiongrabber,magicprompt]
  1. 重启 webui 并检查。若 webui 使用不同的 python 二进制,请找到正确的 python 路径并运行:
/path/to/python/binary/python -m pip install -U dynamicprompts[attentiongrabber,magicprompt]
  1. 若 Wildcard UI 不显示,可能是库版本过旧。检查终端报错,并按步骤 3 更新库。

  2. 若出现 "No values found for wildcard some/wildcard" 错误,请确保 wildcard.txt 位于 extensions/sd-dynamic-prompts/wildcards/some/。需要完整路径,暂不支持相对路径。

  3. 若问题仍在,请在 GitHub issues 区讨论论坛. 搜索解决方案。若找不到,请新建 issue 并使用描述性标题,例如 "Wildcard values are being ignored in prompt templates"。提供必要上下文,包括 Dynamic Prompts 扩展与库的版本,以及操作系统或 colab 环境。若终端有报错,请复制粘贴全文或截图。

  4. 最后,请务必测试并应用我们发布的修复。你的反馈很有价值,在我们环境中正常的问题在你的环境中未必正常。

兼容脚本

Dynamic Prompts 与 X/Y Plot 配合效果特别好——将 Dynamic Prompts 设为组合模式(combinatorial mode,同时配合使用 X/Y Plot,即可同时穷举测试提示词与参数的各种变体。

模板语法

文档见此处

模糊 Glob/递归通配符文件/目录匹配

除标准通配符标记(如 __times__ -> times.txt)外,你还可以使用 glob 一次性匹配多个文件。 例如:

__colors*__ 将匹配以下任意一项:

  • WILDCARD_DIR/colors.txt
  • WILDCARD_DIR/colors1.txt
  • WILDCARD_DIR/nested/folder/colors1.txt

__light/**/*__ 将匹配:

  • WILDCARD_DIR/nested/folder/light/a.txt
  • WILDCARD_DIR/nested/folder/light/b.txt

但不会匹配

  • WILDCARD_DIR/nested/folder/dark/a.txt
  • WILDCARD_DIR/a.txt

你也可以使用字符范围 [0-9][a-z],以及单个通配符字符 ?。更多示例见这篇文章.

WILDCARD_DIR 默认为 extensions/sd-dynamic-prompts/wildcards

组合生成

与从模板随机生成提示词不同,组合生成会基于给定字符串生成所有可能的提示词。例如: I {love|hate} {New York|Chicago} in {June|July|August}

将生成:

  • I love New York in June
  • I love New York in July
  • I love New York in August
  • I love Chicago in June
  • I love Chicago in July
  • I love Chicago in August
  • I hate New York in June
  • I hate New York in July
  • I hate New York in August
  • I hate Chicago in June
  • I hate Chicago in July
  • I hate Chicago in August

如果提供了 __wildcard__,则会为通配符文件中的每个值各生成一条新提示词。例如: My favourite season is __seasons__

将生成:

  • My favourite season is Summer
  • My favourite season is August
  • My favourite season is Winter
  • My favourite season is Sprint

你还可以在通配符内任意嵌套组合,或在组合内嵌套通配符。

若你想为文件中的每位艺术家各生成一张图像,组合生成会很有用。可在 UI 中勾选 Combinatorial generation 复选框来启用。为避免意外生成数千张图像,可用 Max Generations 滑块限制生成的提示词总数。值为 0(默认)表示不设上限。

组合批次

组合批次滑块可让你用不同种子将同一组提示词重复若干次。默认批次数为 1。

提高最大生成数量

默认情况下,automatic1111 的 Batch count 滑块最大值为 100。使用组合生成时,这可能限制最大生成数量。你可编辑 ui-config.json 并修改:

txt2img/Batch count/maximum": 100

改为更大的值,例如:

txt2img/Batch count/maximum": 1000

固定种子

若希望每张生成图像使用相同种子,请勾选此项。若没有通配符,则所有图像将完全相同。适用于测试某个特定修饰词的效果。例如:

A beautiful day at the beach __medium/photography/filmtypes__

这样即可在特定场景下单独观察各胶片类型的影响。部分结果如下:

Magic Prompt

可使用多种提示词生成模型来丰富你的提示词。

使用 Gustavosta's MagicPrompt 模型,该模型基于 Lexica.art 的 80,000 条提示词训练,可围绕给定主题提供有趣的新提示词。以下是针对 "dogs playing football" 自动生成的部分变体:

dogs playing football, in the streets of a japanese town at night, with people watching in wonder, in the style of studio ghibli and makoto shinkai, highly detailed digital art, trending on artstation

dogs playing football, in the background is a nuclear explosion. photorealism. hq. hyper. realistic. 4 k. award winning.

dogs playing football, in the background is a nuclear explosion. photorealistic. realism. 4 k wideshot. cinematic. unreal engine. artgerm. marc simonetti. jc leyendecker

这与上文所述的通配符语法兼容。

其他模型

首次使用某模型时会自动下载。体积约 500mb,下载时间取决于网络速度。首次激活时模型加载到内存也需要数秒。注意:若显存不足,可能出现 Cuda 错误。我的 GPU 占用不到 8GB,但具体情况因人而异(YMMV)。

可用 Max magic prompt length 滑块控制提示词最大长度。Magic prompt creativity 可调整生成的提示词,但需自行试验该设置。

使用 Magic prompt blocklist regex 可过滤关键词。例如,若想避免包含 Greg Rutkowski 的提示词,可将他的名字填入该字段。

若使用 Magic Prompt 大量生成提示词,增大 Magic Prompt batch size 可显著提升提示词生成速度。若同时还在生成图像,提升可能不明显,因为图像生成远慢于提示词生成。

I'm feeling lucky

使用 lexica.art API 生成随机提示词。适合寻找灵感,或懒得自己想提示词时使用。启用该选项后,主提示词框中的内容会作为搜索字符串。例如,提示词 "Mech warrior" 可能返回:

  • A large robot stone statue in the middle of a forest by Greg Rutkowski, Sung Choi, Mitchell Mohrhauser, Maciej Kuciara, Johnson Ting, Maxim Verehin, Peter Konig, final fantasy , 8k photorealistic, cinematic lighting, HD, high details, atmospheric,
  • a beautiful portrait painting of a ( ( ( cyberpunk ) ) ) armor by simon stalenhag and pascal blanche and alphonse mucha and nekro. in style of digital art. colorful comic, film noirs, symmetry, brush stroke, vibrating colors, hyper detailed. octane render. trending on artstation
  • symmetry!! portrait of a robot astronaut, floral! horizon zero dawn machine, intricate, elegant, highly detailed, digital painting, artstation, concept art, smooth, sharp focus, illustration, art by artgerm and greg rutkowski and alphonse mucha, 8 k

将提示词框留空会返回一系列完全随机选取的提示词。

Attention grabber

此选项会在你的提示词中随机选择一个关键词,并添加随机程度的强调(emphasis)。下方示例展示了它如何影响提示词:

a portrait an anthropomorphic panda mage casting a spell, wearing mage robes, landscape in background, cute, dnd character art portrait, by jason felix and peter mohrbacher, cinematic lighting

勾选 Advanced options 下的 Fixed seed 复选框,即可在不变更种子的前提下观察强调如何影响图像。

Write prompts to file

勾选 write prompts to file 复选框,可创建包含所有已生成提示词的文件。生成的文件名是提示词的 slug 化版本,与生成图像位于同一目录,例如 outputs/txt2img-images

Jinja2 templates

Jinja2 templates 是一项实验性功能,可让你以命令式方式定义提示词。这是高级功能,仅推荐给熟悉编写脚本的用户。

要启用此功能,请展开高级折叠面板并选择 Enable Jinja2 templates

更详细的说明请参阅 此处

WILDCARD_DIR

扩展会在 WILDCARD_DIR 中查找通配符(wildcard)文件。默认位置为 /path/to/stable-diffusion-webui/extensions/sd-dynamic-prompts/wildcards。也可在主 webui 的 config.json 中通过 wildcard_dir 手动指定。如有疑问,webui 中该扩展的帮助文本会列出 WILDCARD_DIR 的完整路径。

Collections

collections 目录包含可直接使用或作为自建基础的修饰符库。入门方式:在 Wildcard Manager 选项卡将一个或多个集合复制到 wildcards 文件夹,或手动复制文件。dynamic prompts 扩展内置三个集合。

若使用 Unix/Linux 系统,若无需修改集合,可创建符号链接而非复制。例如:

ln -sr collections/parrotzone wildcards/

还可在扩展根目录(即 extensions/sd-dynamic-prompts/)中运行 python _tools/download_collections.py 下载更多扩展。

Dynamic Prompts and Random Seeds

随机种子在控制生成结果的随机性方面起重要作用。下面说明 Dynamic Prompts 在不同场景下如何与随机种子配合工作。

Without Dynamic Prompts Enabled

  1. 若种子设为 -1:会随机选取一个种子。该种子用于生成第一张图像,随后下一张使用 seed + 1,后续图像依此类推。
  2. 若种子设为大于 -1 的特定数值:流程与上类似,但从用户指定的种子开始。
  3. 若已定义 variation seed,但 variation strength 为 0:流程与前两点相同。
  4. 若 variation seed 设为大于 0 的数值:每张图像均使用同一初始种子(随机选取或由用户设定)生成。variation seed 为随机(若设为 -1)或用户所选值。第一张图像用该 variation seed 生成,下一张为 variation seed + 1,依此类推。

Using With Dynamic Prompts Enabled in Random/Standard Mode:

  1. 若种子设为 -1:流程与上一节第 1 点类似。但若使用随机提示词生成器,提示词也会用同一种子选取。
  2. 若种子设为大于 -1 的数值:流程与上一节第 2 点类似。区别在于若使用提示词生成器,还会用所选种子生成随机提示词。
  3. 若勾选 fixed seed 复选框:所有图像与提示词使用同一种子。这意味着会重复生成相同图像(适用于组合式生成)。
  4. 若同时勾选 fixed seed 与 unlink seed from prompt 复选框:提示词使用随机种子,但所有图像使用同一种子。若想观察不同提示词对同一张图像生成的影响,此设置很有用。

Variation Seeds with Dynamic Prompts

  1. variation strength 设为 0:忽略 variation。
  2. variation 设为大于 0 的数值:每张图像分配一个 variation seed,每次递增 1。但只会生成 1 个提示词,因为你要的是同一张图像的变体。

Combinatorial Mode with Variation Strength > 0

此情况下只会为你生成第一张图像,可能并非预期。要得到想要的结果,可能需要调整设置或换用其他模式。