ローカル環境のStable Diffusion × Difyの連携がついにできた

「ローカル環境のStable Diffusion × Difyの連携がついにできた」のタイトル画像 環境構築
スポンサーリンク

こんにちは、ice_soiです!
フリーランスエンジニアをしています。

前にDifyの環境をローカルに作ってStable Diffusionと連携しようとしてみたんですが結果連携できませんでした・・・
その後いろいろと試してみてやっと連携する事ができたので備忘も兼ねて残す事にしました!
以前の環境構築などの記事は下記になります。
VirtualBox + Vagrant + Docker環境でDifyを動かしてみた
ローカル環境のStable Diffusion × Difyを連携しようとしてできなかった

原因調査

以前の記事でも記載してますが、現在はStable Diffusionの認証時にError111が出て認証が上手くいかないと状態です。
とりあえずChatGPTさんにも聞いてみたところ下記のようなところをみるとよいとのことでした。

  1. Stable DiffusionのAPIが動いているか
  2. ネットワークが正しく設定されているか
  3. Firewallなどでブロックされていないか

結果として1のAPIは動いてるのは確認できており、3のFirewallも特にブロックはしていませんでした。
そこで2のネットワーク周りの確認でStableDiffusion(WSL2)とDify(Vagrant)で疎通ができているか確認しました。
pingを打ったところ、どうやらpingが通らないので疎通できていないようです。

現在のネットワーク環境だとWSL2とVagrantが別のネットワークとなっておりWSL2が172.18.144.11でVagrantが192.168.33.11でした。
別のネットワークだったので疎通ができなかったのではと思います。

対応方法

WSL2側とVagrant側でそれぞれ対応しました。

まずWSL2側ですがWindows側からもアクセスできるようにミラーモードの設定をしました。
設定方法は下記を参考にしました。
https://qiita.com/shigeokamoto/items/bad3ce237f0b19aea147

ユーザーフォルダ配下の.wslconfigに下記の設定を追加しました。

[experimental]
networkingMode=mirrored

設定した結果ホスト側と同じネットワークのIP(192.168.10.115)が表示されるようになりました。
WSL側のIPの画像
次にVagrant側の設定ですが、ブリッジ接続でホストと同じネットワークにアクセスできるように設定しました。
設定するファイルはDifyを動かしているフォルダのVagrantfileでpublic_networkにホスト側のアダプタを指定しました。
Vagrantfileにネットワークの設定を追加した画像

こちらも設定した結果ホスト側と同じネットワークのIP(192.168.10.125)が表示されるようになりました。
VagrantのIPの画像

これでWSLとVagrantでそれぞれpingを飛ばすと疎通できるようになりました!

Stable Diffusion × Difyの連携を再挑戦

ネットワークの設定ができたので前回エラーになったURL欄ににWSLのIPとポートを指定して保存します。今回はhttp://192.168.10.115:7860と設定しました。

ついに認証が通りました!
認証が通った後のDifyの画像
後はPromptに出力したい画像のプロンプトを設定します。
Modelは認証時に設定したものがデフォルトになっているみたいですが、他にもある場合は選択できるみたいです。

そして、終了ノードの出力変数にfilesを設定します。これはStableDiffusionで生成した画像ファイルのようです。
Difyの終了ノードの設定画像
一通り設定したので実行してみました。
実行の部分を押すと実際に処理を行い、処理自体は成功したようです!Difyno処理が終了した画像
結果のタブから生成した画像が見れました。
画像生成も成功したようです!
Difyの処理が成功し画像が生成されている画像

なんとかこれでStable Diffusion × Difyの連携ができました!

まとめ

今回はStable Diffusion × Difyの連携に再挑戦しました!
Difyの連携設定自体はわりと簡単に設定できたんですが、ネットワーク周りの設定など環境部分で結構苦労しました。
今回は固定のプロンプトを設定して画像を出力するといったシンプルなものを作りましたが、他にも連携できるようです。
他のサービス連携もやってみていろいろ試してみようと思いました!
今回の記事が何かの参考になれば幸いです!

最後までお読みいただきありがとうございました。

スポンサーリンク