ComfyUIでFluxの画像生成をしてDiscord botで投稿する方法
この記事の目的
Discordから画像生成をする
生成にはComfyUIを使う
Fluxを使う
DiscordボットはComfyUI-Discord-Botを使います。インストール方法は前の記事をご覧下さい。
Flux画像生成のワークフローを作る
極力シンプルなワークフローを作ります。
Eagleで画像管理をしたいのでD2 Send Eagleを使います。
https://github.com/da2el-ai/ComfyUI-d2-send-eagleモデルはFlux Fusion DS v0 Q8 GGUF版を使います。
https://civitai.com/models/630820?modelVersionId=736153GGUFのためにComfyUI-GGUFを使います。
https://github.com/city96/ComfyUI-GGUF
というわけで出来たのがこちら!ドン!
API用のJSONを出力する
歯車から設定に入り「Dev Mode」をONにすると「Save(API Format)」というボタンが表示されます。このボタンからAPI用のワークフローJSONを保存します。
Discord botにカスタムハンドラーを追加
ここで言うハンドラーはDiscordから呼び出す機能グループと思ってください。
ComfyUI-Discord-Bot/custom_handlers の中に flux というフォルダを作成
fluxフォルダの中に新規テキストファイル prompts.py を作成
ComfyUI-Discord-Bot/
+-- custom_handlers/
+-- flux/
+-- prompts.py
prompts.py に変数を追記し、先程保存したjsonの内容をペーストします。
FLUX_SIMPLE_PROMPT = """
{ここにペースト}
"""
最後にDiscord bot が受け取るための画像保存ノード "save_image_websocket_node" を追加します。
追加前の最後のノードの最後に「,」を追加するのを忘れずに。
FLUX_SIMPLE_PROMPT = """
{
"6": {
"inputs": {
"text": [
"40",
0
],
"clip": [
"11",
0
]
},
"class_type": "CLIPTextEncode",
"_meta": {
"title": "CLIP Text Encode (Positive Prompt)"
}
},
///////// 省略 /////////////
"48": {
"inputs": {
"text": [
"41",
0
],
"clip": [
"11",
0
]
},
"class_type": "CLIPTextEncode",
"_meta": {
"title": "CLIP Text Encode (Negative Prompt)"
}
},
"save_image_websocket_node": {
"inputs": {
"images": [
"8",
0
]
},
"class_type": "SaveImageWebsocket",
"_meta": {
"title": "SaveImageWebsocket"
}
}
}
"""
実際に動くサンプル
というわけで実際に動くサンプルがこちらです。
ComfyUI-Discord-Bot/custom_handlers の中で
> git clone https://github.com/da2el-ai/ComfyUI-Discord-Bot-sample.git
すると使えると思います(試してません)。
サンプルの説明
FlagHandler.py
ComfyUI-Discord-Bot/handlers/handlers.py (標準のtxt2imgなどが記載されている)に記載されてるパラメーター変更のロジックを切り出したものです。
handlers.py
カスタムハンドラーの本体。
標準のtxt2imgハンドラーなどでは --res --steps --seed などでパラメーターを変更できるのですが、ユーザーからは変更不可にしたいのでごっそり削りました。
ハンドラー作成のポイント
謎の数値がハードコーディングされていますが、これらはノードIDです。
self._flags_handler.set_flags("seed", [["46", "inputs", "seed"]])
例えばseedの "46" というのはワークフロー内のKSamplerを指しています。
"46": {
"inputs": {
"seed": 672655501467235,
"steps": 4,
"cfg": 1,
"sampler_name": "euler",
"scheduler": "simple",
"denoise": 1,
"model": [
"44",
0
],
"positive": [
"6",
0
],
"negative": [
"48",
0
],
"latent_image": [
"27",
0
]
},
"class_type": "KSampler",
"_meta": {
"title": "KSampler"
}
},
あとは実際に触って試してください。
ワークフローを組み替えれば何でもできそうな気がします。
最後に
ComfyUI-Discord-Bot は色々できて便利ですね。
しかしDiscord botへのメッセージ受け渡しが普通のメッセージじゃなくてスラッシュコマンドだから、プロンプトを見れないのが残念です。
そこだけ変更してほしいなぁ……。
この記事が気に入ったらサポートをしてみませんか?