メインコンテンツへスキップ
FLUX.2では、画像の編集も生成と同じエンドポイントで行い、料金も生成と同じ1回あたりの固定額です。結果のURLは生成から10分で失効します。 まずは flux-2-pro で始めてください。Black Forest Labsは、最も精度の高い編集には flux-2-max、文字の描画や細部など細かな制御には flux-2-flex を勧めています。3つのモデルは同じリクエストを受け付けます。

始める前に

1

APIキーを作成する

FLUX.2のモデルは回数課金です。トークン管理でキーを作成(または既存のキーを編集)し、課金方式(计费模式)を従量優先(按量优先、推奨)または回数課金(按次计费)にします。従量優先のキーは回数課金と従量課金の両方のモデルを呼び出せますが、回数課金のキーが呼び出せるのは回数課金のモデルだけです。キーはサーバー側の環境変数に保存してください。LaoZhang APIコンソールのトークン作成ダイアログ。課金方式が回数課金(按次计费)になっている
2

環境を準備する

キーを環境変数に設定し、Pythonの例で使う requests をインストールします。
3

ダウンロード用のスクリプトを保存する

次のスクリプトを save_images.py として保存します。cURLの例では、レスポンスのファイルに対してこのスクリプトを実行し、すべての画像をダウンロードします。FLUXが返すのはURLだけですが、ほかの画像モデルが返す b64_json のデコードにも対応しています。
save_images.py

画像を編集する

生成のリクエストに input_image を追加すると、編集のリクエストになります。URLは公開アクセスできる画像に置き換えてください。
保存しました: flux-edit-1.png と表示されます。参照画像のURLはリクエストの処理中に取得されるため、ログイン、Cookie、ボット対策なしで読み込める必要があります。
参照画像を合成するときは、/v1/images/generations にJSONを送ってください。
  • 参照画像は、それぞれ input_image 系のフィールドに入れます。
  • マルチパートの /v1/images/edits は、image という名前のフィールドでファイルを1つしか受け取らないため、合成には使えません。

ローカルファイルを編集する

手元のファイルを編集するときは、ファイルに合ったMIMEタイプのデータURLとして送ります。PNGなら data:image/png;base64,... です。ヒアドキュメントでボディを渡すと、大きな画像をコマンドラインに載せずに済みます。

参照画像を合成する

参照画像を増やすときは input_image_2 〜 input_image_8 を追加し、プロンプトではフィールドの順に「画像1」「画像2」のように指定します。カレントディレクトリにある3つのPNGファイルを読み込む例です。

Pythonで編集する

次のスクリプトは1〜8枚の参照画像を受け取り、ローカルファイルはデータURLに変換し、公開URLはそのまま渡して、リクエストが返ったらすぐ結果を保存します。

パラメーター

出力サイズは、size か、width と height のどちらか一方で指定します。よく使う size の値は、FLUX.2の生成の「出力サイズ」に一覧があります。

レスポンスを処理する

レスポンスは、画像1枚を data[0].url で返します。FLUXは b64_json を返さないため、response_format は送らないでください。リンクは画像の生成から10分で失効するので、特にバッチ処理では、リクエストが返ったらすぐにダウンロードしてください。 output_format を png にしない限り、画像はJPEGです。

プロンプトのコツ

  • 各画像は、フィールドの順に「画像1」「画像2」「画像3」のように呼びます。
  • ロゴ、顔、商品の色など、各参照画像から残すべき要素を明記します。
  • 出力を1枚のまとまった画像にするよう指示します。
  • コラージュ、画面分割、枠線、ラベルなど、避けたいものを書きます。

エラーと課金

  • HTTP 400:フィールド名、参照画像の枚数、出力サイズを確認します。
    • フィールド名:input_image、続いて input_image_2 以降
    • 参照画像の枚数:最大8枚
    • 出力サイズ:16の倍数、64ピクセル以上、約4MPまで。size、または width と height で指定
  • 参照画像を読み込めない:URLは公開されている必要があります。公開できない場合は、ファイルをデータURLとして送ります。
  • 結果のリンクが使えない:生成から10分が過ぎて失効しています。リクエストを再実行し、すぐに結果をダウンロードします。
  • HTTP 401:キーと Authorization: Bearer ヘッダーを確認します。
  • HTTP 429、5xx、タイムアウト:間隔を空けてリトライします。タイムアウトのあとは、二重に支払わないよう、再送する前に呼び出しログを確認します。
リクエストごとに、モデルの1回あたりの料金が課金されます。呼び出しログには、リクエストごとのモデルと課金額が表示されます。

旧モデルのFLUX Kontext

flux-kontext-pro と flux-kontext-max は、既存の連携のためにモデル一覧に残っています。size の代わりに aspect_ratio フィールドを使います。詳しくはFLUX.2の生成の旧モデルの節を参照してください。新しく編集を組み込む場合は、FLUX.2を使ってください。

よくある質問

画像の一部だけを編集できますか?

できます。ただし範囲は言葉で指定します。リクエストにはマスクのフィールドがないため、変更する要素と変えずに残す部分をプロンプトに書いてください。

編集は生成より高いですか?

いいえ。FLUX.2は回数課金なので、編集も生成と同じ1回あたりの料金です。参照画像が1枚でも8枚でも、出力サイズがいくつでも変わりません。実際の課金額は呼び出しログで確認できます。

編集と生成は同じモデルですか?

はい。flux-2-pro、flux-2-flex、flux-2-max は、どちらにも使えます。input_image があるリクエストは編集、ない場合はFLUX.2の生成のとおり新しい画像の生成になります。

OpenAI SDKの images.edit() で編集できますか?

1枚の画像の編集だけなら可能です。images.edit() はマルチパートのフォームデータを /v1/images/edits にアップロードしますが、このエンドポイントは画像を1枚しか受け取らず、参照画像を合成できません。 代わりに client.images.generate() を使い、input_image(参照画像を増やすときは番号付きのフィールドも)を公開URLかデータURLとして extra_body に入れてください。このページのPythonヘルパーも、requests で同じことをしています。

関連ドキュメントと参考資料