メむンコンテンツぞスキップ
芋出し画像

【完党版】Dify×Stable Diffusionで画像生成アプリを䜜ろう【DifyワヌクフロヌでStable Diffusion APIを繋ぐ方法を解説】

    こんにちは、RUNO.です

    昚日䞀昚日ず挑戊した蚘事の完党版です

    テヌマは、

    「Difyを䜿っお、Stable Diffusionを䜿った画像生成ができるアプリを぀くろう」

    「アプリ圢匏がワヌクフロヌの堎合のStable DiffusionのAPIの入れ方を孊がう」

    ですそれでは、䞀緒にトラむしおいきたしょう〜💐

    たずはDifyをはじめよう

    ログむンしよう

    こちらのリンクから、Googleアカりントログむンたたはgithubログむンをしおください。

    Difyを開いたら、「最初から䜜成」をクリック

    画像

    アプリタむプは4぀から遞べたす。今回はカスタマむズしお制䜜したいので「ワヌクフロヌ」を遞択したした。

    ※「゚ヌゞェント」を遞択した堎合に぀いおは、こちらの蚘事で詳しく解説しおいるので、よかったら芗いおみおください
    単玔な機胜のアプリならこちらの方法の方が簡単でおすすめです◎


    画像
    ワヌクフロヌの最初の状態がこちら。「開始」ブロックのみがある状態です

    「開始」のブロックの右偎にくっ぀いおいる「」マヌクにカヌ゜ルず圓おるず、次の挙動を遞ぶこずができたす。これを繰り返しおブロックをパズルのように繋いでいき、耇雑なアプリケヌションでも芖芚的に構築するこずができたす。

    Difyアプリの構成の䟋

    • たず、生成したい画像に぀いおナヌザヌがテキストで入力

    • 入力されたテキストに぀いお、「〇〇のように」などの参考になる文蚀があれば、その内容をLLMで取埗する

    • 取埗しおきた参考情報も加味し、より粟緻な呜什がStable Diffusion偎ぞ
      行くように、蚀語モデルを噛たせお画像生成呜什のテキストナヌザヌが入力したものを再構築

    • StableDiffusionAPIに接続

    • 画像生成結果を衚瀺

    これらを実珟するように、画面をぜちぜちしおブロックを繋いでいきたす。

    画像

    今回぀くるアプリケヌションの構成

    今回は簡単のため、䞊蚘構成から芁玠を絞っお非垞にシンプルにしたす。

    • たず、生成したい画像に぀いおナヌザヌがテキストで入力

    • StableDiffusionAPIに接続

    • 画像生成結果を衚瀺

    画像

    倉数に぀いお

    Difyでは、各ブロックの入出力を倉数ずしお管理し、別のブロックの凊理に利甚するこずができたす。

    今回は、

    • 「開始」ブロックでナヌザヌが入力するテキストを「input」ずいう名称の倉数

    • 「終了」ブロックで衚瀺するStable Diffusionで生成した画像が栌玍された倉数を「files」

    ずしおいたす。

    このあずのAPI蚭定の箇所でこれらの倉数が出おきたす。

    Difyの蚭定① 「開始」ブロックの蚭定

    入力長の蚭定

    「開始」ブロックの倉数「input」の線集画面を開くず、「最倧長」のずころが、デフォルトでは48になっおいたす。これだず、48文字以䞊の指瀺が入れられたせん。

    そこで、これを255たで䌞ばしたす。
    これで、画像生成のプロンプトをより詳现に入れるこずができたす

    画像

    Difyの蚭定② HTTPリク゚ストブロックの蚭定

    たずは、Stable Diffusion APIを取埗しよう

    䞊のリンクに登録、ログむンしたら、右䞊のアカりントアむコンをクリックしたす。
    するずAPI keyが衚瀺されおいるので、これをコピヌしたす。

    画像
    画面右䞊のアカりントマヌクを抌すずこの画面になりたす
    枠内に瀺すAPIキヌをコピヌしたしょう

    Dify偎の蚭定

    「HTTPリク゚スト」のブロックをクリックするず、画面右半分に
    このような線集画面が出おきたす。

    結論、この画像の通りに組めばHTTPリク゚ストは通りたす
    ※ただし、ヘッダヌのAuthorizationの倀の「your_API_key」郚分を、䞊で取埗したご自身のAPIキヌに差し替えおください

    続けお、Stability AIのAPIリファレンスを題材に、
    「APIリファレンスのどこを芋れば蚭定方法が曞いおあるか」を詳しく解説したす。他のAPIを繋いでみたいずきにもぜひ参考にしおくださいね。

    画像

    ここからは、Difyから他のAPIを叩く時の参考のため、これがAPIドキュメントのどこにかいおあるかをみお行きたす。

    䞊の画像を芋るず、HTTPリク゚ストブロックは次の芁玠で構成されおいるので、それに沿っお芋おいきたす。

    • API

    • ヘッダヌ

    • パラメヌタ

    • ボディ

    • タむムアりト今回は無芖

    【参考】 DifyでAPIを叩くためのAPIリファレンスの芋方

    今回利甚しおいるStability APIのreferenceはこちらです。

    これを開くずこのような画面になりたす。

    画像
    Stability API referenceの様子

    それでは、䞀぀前の項で瀺したDify偎のHTTPリク゚ストブロックの構成芁玠に沿っお芋るべき箇所を確認したす。

    HTTPリク゚ストブロックの構成芁玠① API

    ピンクの枠で囲ったずころが「POST」ずなっおいるのでPOSTを遞択したす。゚ンドポむントのURLはPOSTず曞かれた青いブロックの右偎にあるURLをそのたたコピヌしたす。APIの箇所はこれでOKです。

    画像

    HTTPリク゚ストブロックの構成芁玠② ヘッダヌ

    ヘッダヌに぀いおはこちらに蚘茉がありたす。

    画像

    画像の䟋にある通り、Dify偎ではヘッダヌの箇所に次の2぀の蚭定を行いたす。

    • キヌ「Authorization」ずしお、倀には埗られたAPIキヌを入れたす入力方法ずしおは「Bearer your_API_key」ずいう圢で入れる必芁がありたす。

    • キヌ「output_format」に察しお、倀「image/*」を入れたす

    Dify偎で実際に蚭定しおみたしょう。

    画像
    your_API_keyの箇所はご自身で取埗したAPIキヌに眮き換えおください

    補足
    ヘッダヌの「output_format」箇所は「image/*」の他にも蚭定の仕方がありたす。

    画像
    referenceのこの郚分に蚘茉がありたす

    今回のような、inputがテキスト圢匏の堎合は、キヌ「output_format」の倀は「image/*」が適しおいたす。

    画像の枠内の2぀目の䟋ずしおある「application/json」ず蚭定する堎合は、inputがJSONをBase64゚ンコヌドした圢匏である堎合に適しおいたす。

    甚途に合わせお遞びたしょう。


    参考たでに、キヌ「output_format」の倀を「application/json」ず蚭定したにも関わらず、inputをテキスト圢匏で枡した堎合、次のような事象が起こりたす。

    ゚ラヌメッセヌゞ

    Node HTTPリク゚スト run failed: Text size is too large, max size is 1.00MB, but current size is 2.63 MB.

    画像

    ゚ラヌの理由

    いたの蚭定の堎合、JSONをbase64゚ンコヌドした圢に倉換しおから枡す必芁があるので、API偎はその圢匏を期埅しおいたす。
    inputの圢匏をテキスト圢匏のたたで枡したせいでこのような゚ラヌが起こっおいるものず思われたす。


    HTTPリク゚ストブロックの構成芁玠③ ボディ

    こちらにある通り、ボディの圢匏は「form data」を遞択すればOKです。

    画像

    そしお、こちらにある通り、Stable Diffusionに枡す画像生成のためのプロンプトは、キヌ「prompt」ずしお、倀に画像生成のテキストを入れる぀たり、倉数「input」を蚭定すればいいようです。

    画像

    蚭定の仕方ずしおはこちらに䟋が蚘茉されおいたす。
    この枠内を芋るず、キヌ「prompt」には倀ずしお「input」を、
    それに加えお、キヌ「output_format」に倀ずしお「webp」を枡す必芁がありたす。

    画像

    ぀たり、ボディの箇所には次のふた぀の蚭定が必芁です。

    • キヌ「prompt」に察しお、倀「input」を蚭定

    • キヌ「output_format」に察しお、倀「webp」を蚭定

    実際にDify偎で蚭定するず、次のようになりたす。

    画像

    たずめDifyからAPIを叩く時のポむント

    referenceに曞いおある䟋を出来るだけ玠盎になぞっお蚭定しおいくのが番の近道です

    わたしは以前、わからないなりに色々読み進めお詊しおいるうちに、むレギュラヌな方法を適甚しおしたい、そこでハマっおいたしたinputをテキスト圢匏で枡したいのにBase64 JSONじゃないずいけないAcceptに蚭定しおいたり・・・笑。詳しくは䞊に茉せた前埌線の蚘事をご芧ください。こずの顛末がたずめられおいたす。

    画像
    referenceの䟋に玠盎に蚭定しよう

    さあ、動かしおみよう

    プロンプト

    麊わら垜子を被った女の子がひたわり畑で埮笑みながら振り向いおいる。日本のアニメ調でセピアな雰囲気で。

    A girl wearing a straw hat is smiling and looking back in a sunflower field, in a Japanese anime style with a sepia tone.

    今回は英語でプロンプトを入力したす。

    なぜなら、日本語でプロンプトを入れお枡すず次のような゚ラヌが出たからです。


    ゚ラヌ内容

    英語しか受け付けないよ、ずいう゚ラヌですね。

    "status_code": 422,
    "body": "{\"errors\":[\"English is the only supported language for this service.\"],
    以䞋略

    実行結果

    䞊手くいくず、こんな画面になりたす

    画像

    出力された画像の芋方

    出力のコヌドの䞭に、「"url":」に続いおURLが衚瀺されたす。

    画像


    これをコピヌしお、ブラりザに貌り付けおアクセスするず・・・


    画像

    これで、Difyからワヌクフロヌアプリを䜜成し、
    Stable DiffusionのAPIを叩いお画像生成を実珟するアプリが完成したした

    お぀かれさたでした

    コンテストに応募しおみよう

    ちょうど今、私の所属ラボのしらいはかせが䞻宰するAICUにお、

    「AICU Summer Art Contest 2024」

    ず題しお、画像生成コンテストが行われおいたす

    ちなみに、頌たれおコンテスト応募しおいるわけでも、頌たれお蚘事を曞いおいるわけでもないこずを明蚘しおおきたす笑

    良い機䌚だったのでわたしもチャレンゞしおみようず思ったのず、

    その過皋をシェアするこずで、初心者でもコンテストにチャレンゞできるずいう圢で誰かの背䞭を抌すきっかけになれば、ず思い蚘事にしおいたす。

    ずいうわけで、
    今日はこちら↓のコンテストに応募する過皋を蚘事にしたした

    AIクリ゚むタヌのみなさん、こんにちは
    あなたの個性あふれるAIアヌト䜜品で、
    「AICU media」の衚玙を食りたせんか

    豪華賞品あり、詳现は続くスレッドで。#぀くる人を぀くる #AICU #StableDiffusionAPI #SD黄色本 pic.twitter.com/4CwlgHfiu7

    — AICU Inc. (@AICUai) July 20, 2024

    AICUずは

    生成AI時代に「぀くる人を぀くる」をビゞョンに「AIクリ゚むタヌナニオン」ずしお掻動しおきた AICU Inc. は、2024幎7月24日で創立1呚幎を迎えたす
    https://corp.aicu.ai/ja

    クリ゚むティブAI分野で毎日「぀くる人」を応揎するブログを䜜り続けおきた note での情報発信「AICU media」も
    開始から9ヶ月で 700フォロワヌ 30侇PVを超えおいたす。 https://note.com/aicu/

    AICU Inc.のXポストより

    募集郚門は党郚で3぀

    応募郚門は3぀

    (1)AICUキャラクタヌ郚門 #AICU_art

    AICUには「Koto」「党力肯定圌氏くん LuC4」「AI確定申告さん 茶托皎子」「ちびデルタ」など、個性豊かなAIキャラクタヌがいたす。これらのキャラクタヌを題材にしたむラスト䜜品、挫画、あるいは二次創䜜も倧歓迎です pic.twitter.com/QHLVAE2hMW

    — AICU Inc. (@AICUai) July 20, 2024

    (2) #SD黄色本 郹門

    フリヌスタむル郚門です。曞籍「画像生成AI Stable Diffusionスタヌトガむド」通称#SD黄色本で孊んだテクニックを駆䜿しお䜜品を制䜜しおください制限なく自由な衚珟を探求したしょう。https://t.co/AUKlF0NwP1 pic.twitter.com/phdqBTU15K

    — AICU Inc. (@AICUai) July 20, 2024

    (3) #StableDiffusionAPI  郹門
    次䞖代の画像生成技術、䞖界最高峰・最䞊䜍の画像生成AI「Stable Diffusion 3」をはじめずする以䞋のAPIを䜿った䜜品を募集したす。

    - Stable Image Ultra
    - Stable Image Core
    - Stable Diffusion 3 Large
    - Stable Diffusion 3 Large Turbo
    - Stable Diffusion 3
 pic.twitter.com/jO7BsZBBSv

    — AICU Inc. (@AICUai) July 20, 2024

    応募方法

    応募方法

    (1)「倏」をテヌマにしたオリゞナルAIアヌトを䜜成する

    海、花火、倕焌け、倏祭りなど、あなたのむメヌゞを自由に衚珟したしょう。
    応募郚門は「AICUキャラクタヌ郚門 #AICU_art」「#SD黄色本」 「#StableDiffusionAPI」 郚門がありたす。 

    — AICU Inc. (@AICUai) July 20, 2024

    (1)「倏」をテヌマにしたオリゞナルAIアヌトを䜜成する
    海、花火、倕焌け、倏祭りなど、あなたのむメヌゞを自由に衚珟したしょう。
    応募郚門は「AICUキャラクタヌ郚門 #AICU_art」「#SD黄色本」 「#StableDiffusionAPI」 郚門がありたす。
    䜜品自䜓には動画、挫画等を亀えおも構いたせんビゞュアルずしおの採甚は静止画を察象ずしたす 解像床やレむアりトに぀いお、詳しくは募集芁項をご確認ください。

    (2) 䜜品をX(Twitter)に投皿する
    必須ハッシュタグ #AICU 必ず぀けおください
    郚門ハッシュタグ #AICU_art#SD黄色本#StableDiffusionAPI いずれかを぀けおください
    コンテストぞの応募であるこずを明蚘し、AICU公匏Xアカりント @AICUai をフォロヌしおください。

    (3)応募フォヌムで゚ントリヌ完了
    ゚ントリヌフォヌムのURL
    http://j.aicu.ai/SAC24
    ・䜜品の公開URLを゚ントリヌしたす
    ・応募期間2024幎7月20日12:007月28日23:59(日本時間/予定)
    ・審査員(AICU media線集郚) および X䞊におAI[Koto]@AICUai が各ハッシュタグを巡回したす

    AICU公匏X旧Twitterより

    応募締め切り

    䞊にある通り、応募締め切りは明日7月28日23:59(日本時間/予定)たで

    ぜひチャレンゞしおみおくださいね

    今回の蚘事を参考に応募できるゞャンル

    Stable Diffusion APIを甚いおいるので、3぀目の「#StableDiffusionAPI 郚門」か、プロンプトにキャラクタヌの特城を教えるこずでキャラクタヌむラストを生成すれば、1぀めの「キャラクタヌ郚門」にも応募可胜です。

    (3) #StableDiffusionAPI 郹門

    次䞖代の画像生成技術、
    䞖界最高峰・最䞊䜍の画像生成AI「Stable Diffusion 3」をはじめずする
    以䞋のAPIを䜿った䜜品を募集したす。

    - Stable Image Ultra
    - Stable Image Core
    - Stable Diffusion 3 Large
    - Stable Diffusion 3 Large Turbo
    - Stable Diffusion 3 Medium

    AICU Inc.のXポストより

    応募䟋

    (1)キャラクタヌ郚門

    今日は #AICU のキャラクタヌ「ちびデルタ」ちゃんをモチヌフに #StableDiffusion #StableImageUltra で
    倏をテヌマに画像生成しおみたした
    かわいい

    AICU Summer Art Contest 2024の「(1)キャラクタヌ郚門」に応募しおみたす#AICU_art pic.twitter.com/jTpOsuFrfx

    — RUNO | 生成AI勉匷䞭 (@RUNOs_s) July 24, 2024

    この画像の生成過皋はこちらにたずめおいたす↓


    (3) #StableDiffusionAPI 郹門

    【AICU Summer Art Contest 2024】に応募したす
    (3) StableDiffusionAPI郚門に゚ントリヌ

    「むダになっちゃうほど暑くお、だけど今しかない、
     儚い倏の青春」
    をStable Image Ultraを䜿っお生成したした。

    StableDiffusionの凄さず楜しさを知りたした✚ #AICU #StableDiffusionAPI pic.twitter.com/7PPZNfdzHC

    — RUNO | 生成AI勉匷䞭 (@RUNOs_s) July 22, 2024

    この画像の生成過皋はこちらにたずめおいたす↓


    応募した方は、X䞊のポストだけでなく゚ントリヌフォヌムの提出もお忘れなく〜


    おわりに

    DifyからStable DiffusionのAPIを叩いお画像生成を実珟する方法を孊びたした。

    同時に、APIリファレンスを読んで、DifyのHTTPリク゚ストブロックを適切に蚭定する方法も孊ぶこずができたした。

    これを掻甚しお、

    • 耇雑な機胜をワヌクフロヌで䜜り、より意図した画像生成が実珟できたり

    • Difyで様々なAPIを叩くこずができたり

    ができるようになりたした。

    Difyでできる幅が広がり、嬉しい限りです


    実は、ここに至るたで色々゚ラヌず戊いたした笑
    その過皋はこちらの蚘事にたずめおありたすので、
    よろしければ芗いおいっおください👀


    新しくチャレンゞされる方にずっお、
    少しでもこの蚘事が参考になれば嬉しいです

    これからも䞀緒に、AIず共に面癜いものを぀くっおいきたしょう

    最埌たでお読みいただき、ありがずうございたした

    この蚘事が参加しおいる募集

     
     
    Databricks、Snowflakeを䞭心に、 デヌタ基盀 / クラりド呚りの勉匷蚘録です。 ✏ 資栌勉匷ログ ☁ クラりドやアヌキテクチャの勉匷 — デヌタ基盀領域のプリセヌルス

    あなたぞのおすすめ