見出し画像

複数モデル対応画像生成アプリをアップデート+SD 3.5/Recraft追加

Difyが0.10にアップデートされて、以前作成した複数モデル対応画像生成アプリに不具合が出るようになっていたので、可能な限り修正するとともに、新たな画像生成モデルとして「Stable Diffusion 3.5 Large」「Recraft」を追加することにしました。


生成画像のインライン表示

不具合が出ていたのは、前回 v0.9.2 対応として変更した、各画像生成AIの生成画像アップロード先URLから、「HTTPリクエスト」ブロックで画像をGETして「回答」ブロックに渡していた部分。

ここは、v0.10 にアップデートされた際、Dify側の不具合(?)で動作しなくなってしまっていたのですが、対応策を考えているうちに v0.11 にアップデートされ、再び動作するようになりました。

「HTTPリクエスト」ブロックで生成画像アップロード先URLからGET
「HTTPリクエスト」ブロックでGETした画像データを「回答」ブロックで参照

Dify v0.9 の時と同様、v0.11 では生成画像がインラインで表示されるようになりました。Dify 側で不具合が修正されたようです。

しかし、何故か画像が上下2段で表示されるようになってしまいました。でも、まあ、これでも別に使用上は支障ないし、追求するのも面倒なのでこのまま使い続けていますw

生成画像が上下2段でインライン表示されるようになった

Stable Diffusion 3.5 Large(Replicate)

10月22日、Stability AI から最新版の画像生成モデル「Stable Diffusion 3.5」シリーズが発表されました。

しかし、本家 Stability AI の Stable Diffusion 3/3.5 API のように、リクエストボディをFORM形式でPOSTするタイプのAPIは、先日の記事で書いたように、Dify 0.10にアップデートしてから動作しなくなってしまいました。

Dify の不具合(?)のようですが、現時点の最新バージョン v0.11.0 でもエラーが発生しているので、こちらも修正されるまで待つしかないようです…

そのため、まずは、Replicate が提供する Stable Diffusion 3.5 Large API を利用することにして、以前の「FLUX1.1 [pro]」の時と同様、APIのドキュメント通りに「HTTPリクエスト」ブロックを設定します。

「HTTPリクエスト」ブロックの設定

「JOSN Parse」ツールの「JSON filter」を「$.urls.stream」に設定し、「HTTPリクエスト」ブロックのレスポンスから、Replicate が生成画像をアップロードしたURLを取得します。

「JSON Parse」ツールの設定

Stable Diffusion 3.5 Large(fal.ai)

fal.ai が提供する API を利用する場合も、以前の「FLUX1.1 [pro]」の時と同様に、APIのドキュメント通りに「HTTPリクエスト」ブロックを設定します。

「HTTPリクエスト」ブロックの設定

しかし、Replicate の場合と違って「JSON Parse」ツールでは fal.ai が生成画像をアップロードしたURLを取得できないので、「パラメーター抽出」ブロックでLLMの力を借りて、「HTTPリクエスト」ブロックのレスポンスからURLを取得しています。

「パラメーター抽出」ブロックの設定

Recraft V3(Replicate)

Recraft V3は英国のRecraft社が10月30日に発表した画像生成AIモデルで、Midjourney v6.1 やFLUX 1.1 [pro]をしのぐELOスコア(イロ レーティング)を記録して話題となりました。

また、Recraft V3 はプロンプトに日本語が使えたり、生成画像に様々なスタイルを適用できるなど、高品質で多機能な画像生成モデルとなっています。

Recraft v3 は Stable Diffusion 3.5 と同様、いくつかのAIプラットフォームで提供されていますが、今回は Replicate から提供されている API を利用することにしました。

先ほどの Stable Diffusion 3.5 と同様、APIのドキュメント通りに「HTTPリクエスト」ブロックを設定しますが、リクエストが完了するまで待機するため、HTTPリクエストヘッダーに「Prefer: wait」を追加しています。

「HTTPリクエスト」ブロックの設定

しかし、「Stable Diffusion 3.5 Large」の場合と違って、「JSON Parse」ツールでは Replicate が生成画像をアップロードしたURLを取得できないので、「パラメーター抽出」ブロックでLLMの力を借りて、「HTTPリクエスト」ブロックから取得しています。

「パラメーター抽出」ブロックの設定

ワークフローの全体像

完成した、複数モデル対応画像生成アプリのワークフロー全体像です。

選択した画像生成モデルに応じて、「IF/ELSE」ブロックで分岐をしていますが、画像生成モデルからのアウトプット=生成画像のアップロード先URLを「変数集約器」で統合し、「HTTPリクエスト」ブロックでURLから画像データをGETして「回答」ブロックで参照しています。

複数モデル対応画像生成アプリのワークフロー全体像

Webアプリの利用画面

画像生成モデルを選択し、プロンプトを入力すれば画像が生成されます。また、あらかじめネガティブプロンプトを指定することもできます。(ただし、サポートしている画像生成モデル(「Stable Diffusion 3.5 Large(fal.ai)」「Ideogram」)のみ)

先ず初めに画像生成モデルを選択
指定した画像生成モデルで画像生成される
生成画像をクリックすると拡大表示される

スマホでの動作画面

出力したいイメージに適した画像生成モデルを選択したり、AIプラットフォームのクレジットの残額に応じて画像生成モデルを切り替えることができるなど、さまざまな機能が一つのWebアプリに集約できたので、スマートフォンから使用する場合でも、とても便利です♪

スマホでの複数モデル対応画像生成アプリ動作画面

いいなと思ったら応援しよう!