いつも画像生成はStable Diffusionを単体で立ち上げて、プロンプト入力して画像生成していたのですが、これLLMで連携して、geminiやChatGPT見たくチャット上からプロンプトで入力してできると聞いたので試してみた。

実際geminiにこんな感じで来てみました。

「同じPCの同じSSD内にStableとAnything-LLMがあり、これを連携させることはできる?」

すると

gemini
「はい、同じSSD内にあるStable DiffusionとAnythingLLM連携させることができます。」

「AnythingLLMにはチャット内で /img コマンドを使って画像生成プロバイダーを呼び出す機能が備わっています。お使いのStable DiffusionのWeb UI(AUTOMATIC1111 や ComfyUI など)のAPI機能を有効化し、AnythingLLM側でそのURLを指定することで連携が可能です。」

おお、これは便利そう!

ということで、普段はLM Studioを使っていたのですが、Anything-LLMというものを早速導入し、以下の手順で連携作業を行いました。

 

ステップ1:Stable Diffusion側でAPI機能を有効にする

通常通りStableDiffusionを起動するだけではAnythingLLMから接続できません。
外部からアクセスできるように「APIモード」で起動する必要があります。
Stable Diffusionのインストールフォルダ内にある webui-user.bat (Windowsの場合)を右クリックして編集(メモ帳などで開く)します。
set COMMANDLINE_ARGS= の行を探し、末尾に –api を追記します。
上書き保存して、通常通り webui-user.bat を実行してStable Diffusionを起動します。
起動後、ブラウザで http://127.0.0.1:7860(またはlocalhost:7860)にアクセスできる状態にしておきます。

ステップ2:AnythingLLM側で画像生成の設定をする

AnythingLLMを起動し、画面左下の設定(歯車マーク)を開きます。
左メニューから「AI Providers」>「Image Generation」を選択します。

連携するプロバイダーの選択肢(またはOpenAI互換やカスタム設定)から、Stable Diffusion(または WebUI / LocalAI など、お使いの環境の互換項目)を選択します。
接続基本URL(Base URL)を入力する欄に、同じPC内を示す以下のURLを入力します。
http://127.0.0.1:7860 (または http://localhost:7860)設定を保存します。

ステップ3:チャットで画像を生成してみる

設定が完了したら、任意のワークスペース(チャット画面)を開きます。
メッセージ入力欄で以下のように入力して送信します。
/img a futuristic city, high quality, cyberpunk style
これを行うと、AnythingLLMがバックグラウンドで同じSSD内にあるStable Diffusionを呼び出し、生成された画像がチャット画面内に直接表示されるようになります。

 

表示された手順で行うと、ステップ2でStable Diffusionという選択項目は見つかりませんでした。この件で問い合わせると、

「AnythingLLMの仕様上、プロバイダー選択で直接「Stable Diffusion」という名前の選択肢が用意されていない場合があります。
その場合は、かわりに以下のいずれかを選択して連携させます。」

早速訂正が出てきた。まあ日々バージョンアップされる時代ですから。

で、代わりの選択肢としてLocalAIをとのことで、こちらに変更しました。

 

設定手順(LocalAI または Custom を選ぶ場合)

プロバイダー(Image Generation Provider)の選択:一覧から LocalAI を選択

接続情報の入力:Base URL
http://127.0.0 もしくは http://localhost:7860/v1 と入力※末尾に /v1 をつけるのがポイント

API Key:空欄のままでよい。エラーで保存できない場合は any などの適当な文字を入力

モデル名(Model):空欄のままでよい。求められたらstable-diffusion または txt2img と入力

 

これで保存するとSuccessと出たので、チャットで/img cute catと入力してみた。ワクワク…

 

Could not respond to message.
Image generation failed: 404 status code (no body)

 

チーン

 

出来ませんでした。

このエラーを解消するために、以下の3つのチェックポイントが表示されました。

 

① Web UI側でAPIが本当に有効になっているか?
② AnythingLLM側の「Base URL」を微調整してみるAnythingLLMのカスタムAPIやLocalAIの設定項目は、内部の処理(ライブラリ)によって/v1を自動補完するものと、手動で入れなければいけないものがあります。現在入力しているURLを、以下のいずれかに書き換えて試してみてください。
パターンA:http://127.0.0.1:7860 (末尾の/v1を消す)パターンB:http://127.0.0 (末尾に/v1をつける)
③ ブラウザでAPIが生きているか直接確認するPCのブラウザ(ChromeやEdgeなど)を開き、アドレスバーに以下を入力してEnterを押してみてください。
http://127.0.0

 

③は入力してエンターを押すと勝手に補完されて実行できない。その為、①③はStableを立ち上げたときにコマンドプロンプト画面で表示されたログをコピーし、geminiに張り付けて聞いてみると有効になっていることが確認できたようなので良しとしました。

②に関しては手入力で色々と変えて保存を繰り返しました。

 

が、結果はダメ。

再度できなかったこと質問投げると、

先ほど「404エラー」が出たのは、AnythingLLMの設定で LocalAI や Generic OpenAIなどの「嘘の正体」を伝えていたため、URLの形式がズレていたのが原因です。
最新のAnythingLLMには、なんと「WebUI Forge / AUTOMATIC1111」を直接指定する項目が用意されています。

AnythingLLMの「Image Generation」設定を開きます。
Image Generation Provider の一覧をよく見て、Stable Diffusion WebUI(または AUTOMATIC1111、Forge などの表記)を選択してください。
※もし見当たらなければ、プロバイダーで Custom (Compatible) や Custom Generic ではなく、Stable Diffusion という単語が含まれる項目を選びます。
Base URL に以下を入力します。
http://localhost:7860(※末尾に /v1 や /docs は絶対につけないでください。これを付けると404エラーになります)
設定を保存し、チャットで /img a cute cat を実行します。

 

うん。
よーーーーーく見て、Stable Diffusionというの一文字も無い
またが書かれていました。

そして以下の文章が表示。

 

はっきりと事実を申し上げますと、AnythingLLMの「Image Generation Provider」の一覧には、Stable Diffusion(AUTOMATIC1111やForge)を直接選ぶ項目は存在しません

おぉ、すごいのがぶっ飛んできたw

そして、最終的に以下の文章、

もし「ローカルAI(LLM)と画像生成(Stable Diffusion)を同じ画面で連携させたい」という目的であれば、AnythingLLMではなく、「Open WebUI」という別の無料ツールを導入するのが、現在のローカルAI環境における唯一の正しい選択肢になります。

 

これまでの苦労は何?

ということでAnything-LLMは終了。

画像生成と連携させたい場合は選ぶべきではないと判断しました。

チャットだけで済ますのならLMStudioでも十分です。

 

ここで一番学んだこと

「Geminiが表示する回答が100%正解と思うな」

ってことです。

 

次はOpen WebUIの方では連携できるかを試してみます。