このエラーは sd-dynamic-prompts がプロンプトを解釈(パース)できずに止まっている 状態です。
結論から言うと、
👉 Dynamic Prompts の構文として不正な _(アンダースコア)が、特定の位置にある
のが原因です。
エラーの核心部分
pyparsing.exceptions.ParseException:
Expected end of text, found '_' (at char 169), (line:5, col:14)
これを分解すると:
-
Expected end of text
→ 「ここでプロンプトが終わるはずだった」 -
found '_'
→ でも実際には_が来た -
line:5, col:14
→ プロンプト5行目の14文字目
つまり
👉 5行目14文字目にある _ が、Dynamic Prompts の文法違反
よくある原因(かなり当てはまります)
① ワイルドカード名に _ を使っている
❌ NG例
__mecha_frame_parts__
Dynamic Prompts は
ワイルドカード名に使える文字が制限されており、
-
英数字はOK
-
_が文脈によってはNGになることがあります(特にネスト時)
✅ 安全な例
__mechaframeparts__
__mechaFrameParts__
② {} や [] の中で _ を含む選択肢
❌ NG例
{heavy_armor|light_armor}
これ、見た目は問題なさそうですが
dynamicprompts 側のパーサーではエラーになることがあります
✅ 修正例
{heavy armor|light armor}
または
{heavy-armor|light-armor}
③ ネガティブプロンプト側に Dynamic Prompts 構文が混じっている
Dynamic Prompts は
ネガティブプロンプトを厳密に解釈します。
❌ よくある地雷
bad_hands, bad_anatomy
これが Dynamic Prompts ON の状態だと落ちることがあります。
✅ 対処法
-
ネガティブは Dynamic Prompts を使わない
-
_をスペースにする
bad hands, bad anatomy
すぐ直すためのチェック手順(おすすめ)
✅ 手順1
5行目を確認
-
エラー通り「line:5」をまず見る
✅ 手順2
その行の 14文字目付近の _ を探す
✅ 手順3
以下のどれかに該当していたら修正
確実に直すための一時回避策
「原因特定が面倒」ならこれでほぼ直ります👇
-
_を すべてスペース or ハイフンに置換 -
ワイルドカード名は 英数字のみにする
-
ネガティブは Dynamic Prompts OFF
もしよければ
-
問題の プロンプト全文
-
特に 5行目
を貼ってもらえれば、
👉 どの _ が原因かピンポイントで指摘します。
sd-dynamic-prompts は便利ですが、
文法はかなりシビアなので、ここで躓く人は非常に多いです。