Cloudflare Workers AIというのがあり、様々なAIモデルを使えるAPIを提供してくれている。
無料プランでも使うことができ 1 日あたり最大 10,000 ニューロン の利用ができる。
単位がわかりにくいがこのページを下に見ていくと書かれている。
Pricing · Cloudflare Workers AI docs
表題の画像生成については、使えるAIモデルを下記のページから探せる。
Workers AI Models · Cloudflare Workers AI docs
SDXL, SD1.5も使える。金額が0と書いてあって、なんどリクエストしてもCloudflare上のダッシュボードでneuronsが増えなかったので、レートリミットにかからない限り完全に無料なのかもしれない。が、調節が難しすぎる。もともとそのあたりを遊び回っていた人じゃないと使いこなせないと思われる。それに加えて仕上がりが昨今の画像生成と比べて数歩遅れているような印象があった。
いくつか試したがflux-2-klein-4bがコスパがいいなと感じた。金額感はこのくらい。
@cf/black-forest-labs/flux-2-klein-4b
$0.000059 per input 512x512 tile
$0.000287 per output 512x512 tile
5.37 neurons per input 512x512 tile
26.05 neurons per output 512x512 tile
引数にpromptだけ指定ですぐ呼べる。Cloudflare上のダッシュボードから確認したら 104.2 neurons の消費だった。ざっくり96回生成ができる計算。
$ curl -v --request POST \
--url 'https://api.cloudflare.com/client/v4/accounts/{ACCOUNTID}/ai/run/@cf/black-forest-labs/flux-2-klein-4b' \
--header 'Authorization: Bearer {TOKEN}' \
--form 'prompt=masterpiece, finest detail, A lively anime girl with short red hair, wearing a stylish casual outfit in a city.' \
| jq .result.image | base64 -d > output.png
画像データが .result.image にbase64で入ってくるのでこれをデコードして書き出せばよい。
出てきた一例はこちら。
ドキュメント上にリクエストパラメータの解説が書かれていないことを困っていたら、Cloudflareのブログにもっと詳細な例がでていた。
Launching FLUX.2 [klein] 4B on Workers AI · Changelog
fixed 4-step inference process
ということなのでneuronsの消費は 26.05 * 4 = 104.2 で辻褄があう。
ブログには画像を送ることで参照させる方法も書かれている。 input_image_0 (~3まで) で画像のバイナリデータを送ればよいみたい。上の例に合わせてcurlするとこういう感じ。
$ curl -v --request POST \
--url 'https://api.cloudflare.com/client/v4/accounts/{ACCOUNTID}/ai/run/@cf/black-forest-labs/flux-2-klein-4b' \
--header 'Authorization: Bearer {TOKEN}' \
--form 'prompt=Change hair color to blue, background to in the room' \
--form 'input_image_0='@output.png | jq -r .result.image | base64 -d > output2.png;
細かいディテールは微妙に差があるけれど、元のイメージを維持して編集されている、といっていいだろう。
今回は成功したけど、いろいろなポーズを取らせると手足が破綻することがある。プロンプトにそういうのやめてね、的なことを書いても、guidanceを上げてもあんまり効果はなかった。flux-2-devとか、9bのほうにすると改善するかもしれない。
シュッと使えるので、ちょっとした自分用・身内用アプリを作るのにちょうどいい。
毎日UTC0:00にneuronsはリセットされる、的な記述があるがそうではないっぽい。 Cloudflareのダッシュボード上で見ていたところ、過去25時間以内に10k neurons使っていると使えなくなっているような気がする。無料版では。