見出し画像

【アップデート】プロンプト構築を手軽にする新機能と使いやすさの追求|Esuta Tag Selector|ComfyUI|ローカルLLM

ComfyUI用のプロンプト構築自作ノード『Esuta Tag Selector』をアップデートした。「画風ガチャを回せるようにしたい」という小さな欲望から始まり、アタッチメント改修で重み付け機能の追加、2系統のAuto-Diceへの改修、プリセット保存機能の追加、そしてUIの表示領域拡張まで、プロンプト錬成に必要な機能を実装した強力なコックピット完成の記録である。

■ 第1章:きっかけは「画風ガチャ」への小さな欲望

BREAKタグ(アテンションブロックの区切り記号)という存在が、ずっと悩みのタネだった。

開発を開始した当初、【00_クオリティ・スタイル】カテゴリーの中にBREAKを同居させていたため(セクション分けをしていなかった)、ダイスを回すと画風タグとBREAKが混ざるリスクが常にあった。結果として、一番触りたかったはずの【00】カテゴリーのダイスを封印していた。「画風だけランダムに変えたい」という、それだけのことが実現できていなかった。

解決策は単純だった。
単純というか実現できる環境になっていたのに見落としていた。各カテゴリー内にセクションを作って、セクション内でAuto Diceが出来るのだから、BREAKだけを格納する専用セクションで隔離すればいい。髪型セクションにBREAKが混入することも、服装セクションがランダムのたびに壊れることも、構造的に起こせなくなる。各カテゴリーの下部にBREAK専用セクションを設けることで、プロンプト構築がスムーズに行えるようになった。

■ 第2章:データ崩壊を防ぐ「物理封鎖」

このノードは、各タグに対して「slotId」と呼ばれるメタデータを内部で保持している。Auto-Diceの制御やタグ間の関係性はすべてこのデータに依存している。そしてこのメタデータは、プロンプト表示欄(textarea)への手入力によってAuto Diceのバグ原因になっていた。

直接修正できたら便利かと思っていたのだが、手で直接テキストを書き換えると、UIが保持していた属性情報との整合性が取れなくなる。その結果、Auto-Diceが意図しない動作をしたり、データそのものが消失したりする。発見した時点で、対応は一つしかなかった。

プロンプト表示欄を、完全なリードオンリーにした。

コピーはできる。読むことはできる。ただし書き込めない。タグの追加・削除・編集は、すべてUI上のチップ操作のみに限定した。入口を一本に絞れば、データが壊れる経路がなくなる。手術は地味だが、これによってメタデータは安全に保たれるようになった。

■ 第3章:UXの極大化(表示領域とスクロール制御)

大量のタグを扱う作業において、UIのストレスは思考の消耗に直結する。3つの改修を施した。

【1】表示領域の手動リサイズ化

このノードは大量のタグを表示するのでデカい。しかし、選択したタグを表示するカート領域が狭かった。作業量に応じて表示エリアを自由に広げられるよう、ドラッグ式のリサイズハンドルを設置した。小さな画面で大量のタグを管理する必要がなくなった。

【2】スクロールの暴走制御

ノード内でホイールを回すと、必要以上にスクロールしてしまう。これを防ぐため、ホイール操作によるスクロール移動量を独自に制御し、意図した場所だけが動くよう調整した。

【3】同セクションタグの隣接挿入

以前は、タグを追加すると常にリストの最後尾に飛んでいた。同じセクションのタグを続けて入れていると、視覚的に整理されていかない違和感があった。今は、同じセクションのタグの直後へ自然に挿入されるロジックに変更している。

■ 第4章:プロンプト錬成を極める新機能群

実装した機能を、順に記録する。

【1】2系統のAuto-Dice制御(今回の目玉機能)

「セクション全体の候補からランダムに1つ選ぶ通常のAuto Dice」と「あらかじめ選択した複数候補の中からランダムに1つ選ぶ選択Auto Dice(黄緑ダイス+☆マーク)」に分離した。後者は、選んだ候補の中でだけガチャを回す仕組みだ。複数選択後に選択のトグルスイッチをONにすると以下のように表示される。

【2】アタッチメント機能(チャンク化)

タグに対して「接頭語」「サイズ」「色」「柄」を個別に付与できる機能だ。たとえば dress という1つのタグに対し、silk / tight / black / striped をそれぞれアタッチすると、 silk tight black striped dress という塊(チャンク)として出力される。属性をバラバラに並べるのではなく、対象に紐づけて管理できるため、プロンプトの構造が崩れない。よく使いそうなモノを入れてあるが、ここにないものは、カテゴリー09の色・模様などを参考に、手動で入力してほしい(英語タグ)。なおEsuta Prompt Makerと連携しているなら、日本語入力でもOKだ。

【3】重み付け対応 チップのダブルクリックなどで、タグに対して重み付けを付与・保存できるようにした。(タグ:1.2) のような出力形式で記録される。※主にSDXLモデル用。モデルによっては効果がないので注意。

【4】出力フォーマットの確立 Danbooruタグのアンダーバー(例:white sailor_suit)は厳密に維持しつつ、アタッチメント部分はスペースで連結する。モデルが最も正確に読み取れる形式として、このフォーマットを固定した。

■ 第5章:最強のストック資産「プリセット保存」

キャラクターの基本設定、重み付け、ネガティブプロンプト、アタッチメントの組み合わせを毎回再現するのは、純粋なコストだった。

今回実装した「カート全体プリセット保存機能」は、構築済みのPositive・Negativeプロンプト、重み、アタッチメントの全情報をJSONファイルとして一括保存する。次回以降は、保存済みの一覧から選んで読み込むだけだ。
※Auto Dice、選択Auto Diceのタグは保存時のタグのみ読み込まれる。

お気に入りのキャラクター設定、検証済みのネガティブプロンプト、実績のある画風の組み合わせ。これらは再起動のたびに消えるものではなく、手元に積み上がっていくストックになった。

■ おわりに

画風ガチャを回したかっただけなのに、気づいたらより使いやすいモノにできていた。こういう作業の転がり方は、悪くない。改善要望などあれば気軽にコメントして欲しい。

もしこの記事で興味を持ってもらえたらスキで教えてほしい。そして、サポートしていただいた方には心より感謝を。いただいた投資は、次回の検証用パーツ代(または徹夜の栄養ドリンク代)として全額突っ込む。

Esuta Tag Selectorの導入はこちらから👇️

タグセレクターとの連携で、様々なモデルに対応する、プロンプト翻訳ノード、Esuta Prompt Maker👇️

AI副業への挑戦、PCの買い替えやアップグレードを考えているなら👇️の記事も参考にして欲しい。


いいなと思ったら応援しよう!

えすた |Radeon AI 戦略室 サポートしていただいた方には心より感謝を。今後の活動、検証の燃料としてありがたく使わせていただきます😁