SillyTavern拡張:会話から画像を自動生成する仕組みを入れてみた
🗂 目次
はじめに
改造の概要
どんなことができるのか?
技術的な仕組み
実際の使い方
今後の展望
導入手順
おわりに(&GitHubリンク)
✏️ 1. はじめに
SillyTavernでキャラクターと会話してると、
「このシーン、画像で見たいな……」って思うこと、ありません?
今回紹介するのは、そんな気持ちに応える拡張機能です。
しかも、自分で書くのが苦手なので、このnoteはChatGPTに代筆してもらってます
一部、自分の文章もありますが、1割以下です。
この拡張では、**「会話の内容をもとにキャラクターの服装や場所、表情などを自動で要約し、Stable Diffusionで画像を生成」**できるようになります。
既存のSillyTavern拡張 sd-stablediffusion をベースに、ボタン1つで動くように改造しています。
改造は、ChatGPTとペアプログラミングしてました。
⚠️ 本記事に記載されているプロンプト構造には、登場人物の服装・表情・視覚的状態などを抽出する項目が含まれます。
出力結果や応用内容によっては、センシティブな描写(NSFW的なもの)を含む可能性がありますが、本記事の内容自体は技術的なプロンプト制御に関するものです。
AIモデルの出力は利用者の設定・使用環境により異なりますので、利用にはご注意ください。
✏️ 2. 改造の概要
ベースにしたのは、SillyTavern標準搭載の画像生成拡張 sd-stablediffusion です。
そこに新しく ex_image というボタンを追加し、そのボタンから以下の処理を走らせるようにしました:
会話の履歴から直近の内容を取得
キャラクター設定から「体・服・性格・場所」などのタグを抽出
それらを英語に翻訳(プロンプト用)
ローカルLLM(Oobabooga)で要約を2段階に分けて実施
最終的なプロンプトを組み立てて画像生成
✏️ 3. どんなことができるのか?
この改造を入れることで、こんなことができます:
💬 会話中に「暑いね〜水着に着替えたい」→ 水着の画像が生成される
📍 「ここは誰もいない教室だよ」→ 教室背景になる
😠 「怒ってるんだからねっ!」→ 表情が怒り顔に変わる
しかも、同じ会話が続いている限り、プロンプトの再生成をスキップするキャッシュ機構付き。
✏️ 4. 技術的な仕組み
この拡張のコアは、**「会話から画像プロンプトを自動生成する」**という部分です。
そのために内部では、以下のようなステップを踏んでいます:
🧠 ステップ1:キャラクター設定からタグを抽出
SillyTavernのキャラ説明に書かれたタグ(例:<体=銀髪,黒目>, <服=白シャツ>)を元に、
体・服・性格・場所などの特徴を取り出します。
🌍 ステップ2:タグを英語に翻訳(プロンプト用)
Stable Diffusionに渡すため、タグはすべて英語に変換します。
翻訳はローカルLLM(Oobabooga)を使って、JSONで受け取ります。
{
"clothe": "white shirt, pleated skirt",
"body": "silver hair, black eyes",
"place": "classroom"
}
💬 ステップ3:会話の要約(2段階)
会話の内容を元に、キャラの「状態変化」を2回に分けて推論:
1回目:服装や場所など → 全チャット履歴(10000件)を使用
2回目:表情や行動など → 直近のやり取り(6件)から推測
これもローカルLLMにJSONで回答してもらいます。
🎯 ステップ4:プロンプトを組み立て
最後に、これらの情報を組み合わせて最終的なプロンプトを作成します。
textコピーする編集する
17 years old female, silver hair, black eyes, light smile, white shirt open, pleated skirt, calm and quiet, walking in a hallway, background classroom
このプロンプトをそのままStable Diffusion Web UIに投げて、画像を生成!
🧠 キャッシュ処理もあり
同じキャラでチャットが進んでいなければ、前回の推論結果を再利用することで処理を高速化しています。
また、キャラタグの翻訳結果もキャッシュしているので、無駄なLLM呼び出しを減らせます。
✏️ 5. 実際の使い方
✅ 使い方は超シンプル
SillyTavernのチャット画面で会話を続ける
Extensions→Generate Image→Extend Create Imageを選択!
スペック次第だけど、1分ほど待つと、会話内容に応じた画像が生成されて表示される!
🧪 使用例
👤「今日は浜辺でのんびりしたいな」
→ 👙「水着姿でビーチにいる画像」が自動生成される
👤「ちょっと怒ってるよ…」
→ 😠「怒った表情で立ってるキャラ画像」が出力される
✏️ 6. 今後の展望
💬 要約を「会話引き継ぎ」に活用
→ システムプロンプトに自動挿入して、新セッションでも状態を維持🖼️ 画像生成の完全分離(新拡張化)
→ sd-stablediffusionから切り離して独立拡張として配布予定🔄 プロンプトテンプレの編集UI対応
→ GUIで出力スタイルのカスタマイズが可能に?
✏️ 7. 導入手順
📁 手順概要:
SillyTavern本体の sd-stablediffusion 拡張を開く
index.js にコードを追記(GitHub参照)
必要なライブラリや設定(例:LLM APIのURL)を設定
SillyTavernを再起動して完了!
GitHubにコード一式&設定サンプルも掲載してます👇
🔧 使用モデルについて
本拡張では、ローカルのLLMを用いて以下の処理を行っています:
(だって、ローカルじゃないとあれやこれやできないので・・・)
キャラクター設定タグの英訳
会話内容の要約(服装・行動・場所・表情)
モデルには、
💡 aya-expanse-32b-abliterated.i1-Q4_K_M.gguf を使用しています。
✏️ 8. おわりに(&GitHubリンク)
今回は、SillyTavernの拡張 sd-stablediffusion に
「会話要約 → 自動プロンプト生成 → 画像出力」の流れを組み込んだ話を紹介しました。
自分では文章を書くのが苦手なので、この記事はほぼChatGPTに任せました
でも、この拡張は本当に自分で使ってて便利なので、ぜひ試してみてください!
GitHubリポジトリはこちら → https://github.com/Fuua0408/SillyTavern_stable-diffusion_custom
普段、こういうことをしないしがないエンジニア
(VB.NET,Winform主戦場 Web系技術苦手)
なので、とっても疲れました。。。
上げたソースは煮るなり焼くなりして供養してあげてくださいまし・・・


コメント