こんにちは、スタジオ真榊です。この記事では、ローカル用の拡張機能「Dynamic prompts」を使って、プロンプトの一部をランダム化する方法について解説します。(これまでの記事内容を2026年5月現在のものに刷新しました)

例えば眼鏡の色を指示する部分だけランダム化することで、このように毎回色が違う画像を生成することができます。うまく組み合わせれば、キャラクターを固定しながら、ポーズや表情、シチュエーション、背景などにバリエーションを出すことが可能です。

プロンプトの一部をランダム化 「Dynamic Prompts」の基本と応用:図版1

さらに、DynamicPromptsには「wildcard」機能が同梱されています。こちらはwildcardフォルダに保存しておいたテキストからプロンプトを呼び出せる機能で、DynamicPromptsによる特殊記法と組み合わせるとさまざまな応用がききます。

ローカル画像生成の最も便利なところは、外出中でもずっと画像を生成し続けられるところ。プロンプトの一部ランダム化はバリエーション豊かな画像を狙った通りに大量生成するのに必須の技術ですので、できるだけ早めに使い方を覚えておきましょう。

ダイナミックプロンプトの基本

SDwebUIやForgeのExtension画面で拡張機能「sd-dynamic-prompts」をインストールすることで、txt2imgやimg2img画面で特殊なプロンプト記法やwildcard機能が使えるようになります。

DynamicPromptsはWebUIの拡張機能リストの中にあるので、webUIの日本語化のときと同様、下記のどちらかの手順でインストールするだけでOKです。

【一覧からインストールする場合】

①拡張機能(Extensions)タブから拡張機能リストを開き、読み込みボタンをクリック。

②リスト下方にある「wild card」の欄の「Install」ボタンをクリック(見つからない場合は検索欄の下の「スクリプト」のチェックを外す)

③拡張機能リストの左隣の「インストール済」タブから「適用してUIを再起動」

④成功していれば、「設定」タブの左隣あたりに「Wildcardの管理(Wildcards Manager)」タブが現れる

【URLからインストールする場合】

①拡張機能(Extensions)から「URLからインストール」のタブを開く

②「拡張機能のリポジトリのURL」欄に「https://github.com/adieyal/sd-dynamic-prompts」と入力

③インストールボタンを押す。インストールが終わったら、拡張機能リストの左隣の「インストール済」タブから「適用してUIを再起動」

④成功していれば、「設定」タブの左隣あたりに「Wildcardの管理(Wildcards Manager)」タブが現れる

インストールが成功していれば、Controlnetなどが表示される部分にこのようなメニューが追加されます。特にデメリットがないので、「Dynamic Prompts有効化」には常にチェックを入れておいて大丈夫です。

【URLからインストールする場合】:図版1

・基本は{Aword|Bword|Cword}

Dynamic Promptsがオンになっていると、{ }と縦棒「|」を組み合わせて複数のプロンプトを記述することで、これらのうちどれかを毎回ランダム選択するようAIに指示することができます。例えば、{red|blue|yellow|purple}-framed eyewearのように利用すると、さきほどのように毎回赤/青/黄/紫の眼鏡のうちどれかが4分の1の確率で選ばれることになります。

「|」で区切ればいくつでもタグを増やせるので、例えば「black hair,black eyes|blue hair,blue eyes|red hair,red eyes」のように複数タグを並列した記述もできます。(smile:1.3)のような強調構文との併用ももちろん可能ですので、表情をランダム化しつつ強調したいなら({smile|angry|embarrassed|sad}:1.3)のように記述すればOKです。

どのタグが選ばれるかは完全にランダムですが、採用結果はSeed値に基づいて決められていることを覚えておきましょう。たとえDynamicPromptsをふんだんに使われたプロンプトでも、前回とSeed値が同じなら全く同じタグが選ばれ、同じ画像が生成されます。

・「組み合わせ生成」で総当たりが可能

完全ランダムの状態だと、4枚同時生成の中に赤が三つ選ばれてしまうような偏りが自然と生じますが、DynamicPrompts欄の「組み合わせ生成」にチェックを入れると、記述した内容から考えられる組み合わせが総当たりされます。下手にオンにすると数百枚の連続生成が始まりかねないので、ここはよく機能の中身を理解しておいてください。

まず、組み合わせ生成がオンになると、DynamicPromptsで記述されたのと同じ順番に一つずつ採用されます。先ほどの例なら、4枚同時生成で必ず「赤/青/黄/紫」の順に生成されるというわけです。

・基本は{Aword|Bword|Cword}:図版1

ただし、これは「順番に生成する」機能ではなく、「あり得る組み合わせを全て順番に生成する」機能なので、ランダム化されているタグが複数個所あると、4x5x3...とどんどん掛け合わされて、とんでもない数の生成数になってしまいます。これを防ぐために、「最大生成数」の設定があります。

たとえば、{smile|angry|sad|surprised},{standing|sitting|lookingback},{day|evening|night}だと4×3×3=36通りですが、最大生成数が8なら、最初の8通りだけ生成されます。ランダム指定を複数入れた状態で「組み合わせ生成」をオンにすると、生成枚数が一気に膨れ上がってしまいますので、初回は必ず「最大生成数」を小さめに設定しておきましょう。デフォルトの「0」だと、そのまま全ての組み合わせで総当たりが始まります。

さらに、これから行うことになった組み合わせ生成を何回繰り返すか、「組み合わせのバッチ」欄で決められます。考えられる組み合わせが36通りある状態で最大生成数を8に設定すると、先頭の8通りまでが順次生成されますが、「組み合わせのバッチ」を2にすると、この8通りを2周して16枚画像を生成することができます。ちなみに、普段画像生成をする際に何枚同時生成するかを選ぶ欄がありますが、そちらを4枚にしていると、4枚ずつ4回生成して16枚を出力する動きになります。

{|||}で記述するDynamicPromptsだけでなく、この総当たりはwildcardにも及びます。wildcardのテキストに100種類(つまり100行)のプロンプトが用意されていた場合、その全ての組み合わせ生成が始まりますし、{red|blue|yellow|purple} eyesと同時に記述していたら、x3で計300枚の画像が順次処理されていくというわけです。

・採用頻度を操作するには

採用結果に偏りを付けたい場合は、{white|white|black}のように、多く選択させたいタグの数を多めに表記する方法があります。こうしておけば、3分の2が白、3分の1が黒になるわけですね。もっと細かく採用頻度を決めたい場合は、{0.7::smile|0.2::angry|0.1::crying}のように二つのコロンを使って記述すると、それぞれのプロンプトが70%・20%・10%の確率で採用されます。(ちなみに数値は相対値ですので、合計が1にする必要はありません)

{ }内に空欄を増やす方法もあります。例えば、プロンプトの末尾に{||||v}と記述すると、5分の4は空欄が選ばれますが、5分の1の確率で「v」が追加されるので、「20%の確率でピース画像が混じるプロンプト」にすることができます。縦棒で区切った中に半角スペースなどを入れる必要はありません。

・高度なランダム設定

このほか、ややこしいのであまり実践では使いませんが、下記のような方法でより高度なランダム指定も可能です。

{2$$A|B|C}

3つのプロンプトのうち、どれか2つがランダムで選択される。同じ候補は重複して選ばれない。

{1-3$$A|B|C}

3つのプロンプトのうち、1~3つがランダムで選択される

{2$$and$$ A|B|C}

A, B, C のうちどれか2つが選択され、「and」で結合される。