Only display strings change: the "VLA" row label becomes "Decision", the tooltip, node DESCRIPTION, locales descriptions and README wording follow. Identifiers, the saved-settings key and the /models response keys are unchanged, so saved selections and behavior are unaffected. pyproject.toml is left as is on purpose (pushing it triggers the Registry publish workflow). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
5.9 KiB
5.9 KiB
ComfyUI-LiveChatStream
LLM / VLM とチャットし、ストリーミング応答を画像にする ComfyUI カスタムノードです。 モデルがプロンプトを書き終えた時点で、返信の続きをストリーミングしている途中でも画像生成を始めます。
バックエンドは現在 Ollama です(将来ほかのバックエンドを追加できるよう、ノード名はバックエンドに依存しません)。
前提
- ローカルで動作している Ollama(既定は
http://127.0.0.1:11434。別のホストは注意を参照) - チャット用のモデルが1つ以上。画像を添付する(VLM)には
vision対応モデルが必要です。 - 任意: 画像入力に対応した意思決定モデル(例:
clef、Ollama 0.35.1 以上)。生成画像の判定に使います。意思決定モデルは文章を書かず、型付きの質問(yes/no・選択・スコア)に確率で答えます。 - 同じグラフ内の text-to-image ワークフロー(サンプルは SDXL + LCM LoRA)
インストール
このリポジトリを ComfyUI/custom_nodes/ に置いて ComfyUI を再起動してください。追加の Python 依存はありません。
機能
- ノード内でチャット(トークンのストリーミング、停止ボタン付き)
- 2系統のプロンプト
- A(
positive/negative): 返信の<prompt>ブロックから取り出した整った画像プロンプト - B(
chat_p/chat_n): モデル自身の思考・返信・内面独白(<mind>ブロック)をそのまま2つ目のプロンプトに使い、キャラクターの気持ちや考えを画像として見られます
- A(
- ストリーミング中に生成:
</prompt>が閉じたら(既定)/ ストリーミング中に連続生成 / 手動 - プリセット / キャラクターをモーダルで管理(サーバーに保存): 通常のシステムプロンプト、または構造化したキャラクター(性格・固定の外見タグ・感情表現ルール)。キャラの一貫性を保ち、感情を絵に出せます
- 画像の入力 / 出力(I2I):
image入力に画像をつなぐ(ドロップした画像より優先)か、ドロップ・貼り付け・選択。image出力をVAE Encodeにつなぐと img2img になります - VLM: チャットに画像を添付(ドロップ・クリック・貼り付け)
- 意思決定モデルによる判定(任意): 生成画像が「依頼と合っているか」と品質を採点
- VRAM 管理: 手動の
Unloadボタンと、画像生成の前に Ollama のモデルをアンロードするオプション(auto-freeはドライバから実測した空きが目標に届くまで、必要な台数だけアンロード) - 画像 ON/OFF チェックボックス: 画像を作らない通常のチャットとして使えます
- 設定 / プロンプト を折りたたみ可能(チャットが主役)
- 英語 / 日本語 / 簡体字中国語に対応(ComfyUI の言語設定に従います。変更後はページを再読み込みしてください)
ノード
Live Chat Stream(LiveChatStream)
| 出力 | 型 | 説明 |
|---|---|---|
positive / negative |
STRING | 系統A のプロンプト(CLIP Text Encode へ) |
response |
STRING | 返信全文(ストリーミング中も更新) |
chat_p / chat_n |
STRING | 系統B のプロンプト(思考 / 返信 / <mind>)とそのネガティブ |
thinking |
STRING | モデルの思考テキスト |
image |
IMAGE | 入力画像(socket またはドロップした画像)。画像が無いときは下流の実行を止めます |
入力: image(任意)。プロンプト欄はノードの プロンプト セクションで編集できます。
使い方
workflows/live_chat_stream.json(text-to-image)またはworkflows/live_chat_stream_i2i.json(img2img)を開きます。- 設定 を展開し、Ollama の URL を確認して LLM / VLM(判定したい場合は意思決定モデル=
Decisionの行も)を選びます。 - メッセージを入力して
Ctrl+Enter。<prompt>ブロックが完成した時点で画像が生成されます。
ヒント
- キャラクターは プリセット… の
+ キャラクターで作成し、保存して使用します。 chat_p = <mind> ブロックにするとキャラが内面独白を書きます。mind 英語 にチェックすると英語で書かせます(画像モデルは英語のほうが解釈しやすい)。- GPU が小さい場合は VRAM: 自動解放 と目標(例: 8 GB)を設定すると、画像生成の前に Ollama のモデルをアンロードします。そのとき返信を生成中のモデルはアンロードしません。
注意
- 空き VRAM は
nvidia-smi(NVIDIA GPU)で取得します。それ以外の GPU では ComfyUI の値にフォールバックします。 - プリセットは
<ComfyUI の user フォルダ>/live_chat_stream/presets.jsonに保存されます。 - I2I 用にドロップした画像は
input/live_chat_stream/にアップロードされます。 - Ollama のアドレスはサーバー側で設定し、ブラウザやリクエストからは受け取りません。 サーバーは環境変数
LIVE_CHAT_STREAM_OLLAMA_URL、または<ComfyUI の user フォルダ>/live_chat_stream/config.json({"ollama_url": "http://192.168.1.20:11434"}。再起動なしで反映)から読み、未設定ならhttp://127.0.0.1:11434を使います。リダイレクトは辿りません。ComfyUI を--listenで起動すると、ComfyUI に到達できる人はあなたの Ollama に対してチャットのルートを使えます(接続先は変えられません)。信頼できるネットワークでのみ使ってください。