Nano BananaのモデルでGeminiネイティブの画像生成と編集を行う場合は、Nano Bananaの概要を参照してください。画像モデルとエンドポイントの比較は、画像APIの比較にあります。
認証情報を設定する
トークン管理でモデル用のAPIキーを作成し、環境変数LAOZHANG_API_KEY に設定します。キーのグループでGPT Image 2.5のVIPモデルを使えることを、コンソールのモデルと料金で確認してください。
ターミナルで、プレースホルダーを置き換えてキーを設定します。
- APIホスト:
https://api.laozhang.ai - OpenAI SDKのベースURL:
https://api.laozhang.ai/v1 - 認証:
Authorization: Bearer $LAOZHANG_API_KEY - モデル:
gpt-image-2.5-flare-vip(生成)とgpt-image-2.5-sunburst-vip(編集)
レスポンスから画像を保存する
次のヘルパーを、例を実行するディレクトリにsave_images.py として保存します。data[] の各エントリーが b64_json と url のどちらでも、すべての画像をファイルに書き出します。
python save_images.py <response.json> <名前> として実行するか、Pythonで save_images をインポートして使います。
画像を生成する
model と prompt を含むJSONの本文を、次のエンドポイントに送ります。
generated.png、generated.jpg、generated.webp のいずれかで保存します。
- cURL
- Python
generation-response.json から画像を保存します。.json ファイルにはAPIのレスポンスが入っています。拡張子を .png に変えても画像にはなりません。
画像を編集する
コマンドを実行するディレクトリに、input.png という名前の画像を置きます。ファイルと指示を、マルチパートのフォームデータとして次のエンドポイントに送ります。
edited.png、edited.jpg、edited.webp のいずれかで保存します。
- cURL
- Python
edit-response.json から画像を保存します。image[]=@input.png はファイルの中身をアップロードします。JSONにパスの文字列を書いても、ローカルのファイルはアップロードされません。cURLの -F を使うときは、マルチパートのContent-Typeと境界文字列はcURLに任せ、Content-Type: application/json を付けないでください。
変えたい内容と、残したい細部の両方を書いてください。画像の編集は生成によって行われるため、被写体をそのままにするよう指示しても、編集範囲の外のピクセルが完全に同じになるとは限りません。
リクエストのオプション
上の最小限の例では、モデルの既定の出力設定を使っています。サイズや品質を選ぶには、GPT Image 2.5かGPT Image 2のページで、使うモデルのオプションを確認してください。
GPT ImageとDALL·Eでは、使えるオプションが違います。DALL·Eの
quality="hd" や style を、GPT Imageのリクエストにそのまま持ち込まないでください。マスク、複数の参照画像、透過背景、出力形式の指定も、モデルごとの手順に従う必要があります。ローカルの画像を1枚編集するだけなら、上の基本的なファイルのアップロードを使ってください。
画像の結果を読み取る
data[] の各エントリーは出力画像1枚で、次の2つのどちらかの形で返ります。
b64_json:Base64でエンコードされた画像のバイト列です。data:image/...;base64,の接頭辞が付いたり、末尾の=のパディングが欠けたりするレスポンスもあるため、save_images.pyと同じように、接頭辞を取り除いてパディングを補ってからデコードします。url:ダウンロードリンクです。LaoZhang APIのキーを付けずにすぐ取得し、自分の手元に保存してください。URLの結果は期限切れになることがあります。
data[] のすべてのエントリーを処理してください。画像生成のタスクIDや、Geminiの candidates のレスポンスは別の形式なので、それぞれのAPIに合った処理が必要です。
エラーとリトライ
- 400: リクエストのフィールドとモデルのオプションを確認します。編集では、ファイルがマルチパートでアップロードされていることを確認します。
- 401または403: APIキー、トークングループ、モデルの権限を確認します。
- 404、またはモデルを利用できないというエラー: コンソールのモデルと料金で、エンドポイントと正確なモデルIDを確認します。
- 429: エラーの本文を読み、レート制限や同時実行の制限なのか、アカウントの残高の問題なのかを見分けます。
- 5xxまたはタイムアウト: 画像のリクエストを再送する前に、呼び出しログを確認します。