OpenAIは2026年4月21日(現地時間)、次世代の画像生成モデル「ChatGPT Images 2.0」(API名:gpt-image-2)をリリースしました。AICU AIDX Labの調査によると、ChatGPTだけでなく、APIでも利用できる gpt-image-2 は、DALL·E 3の後継ではなくまったく別のアーキテクチャのようです。テキスト→画像の一方通行ではなく、参照画像を渡してキャラクターの一貫性を保ったり、会話を重ねて画像を磨き込んだりできます。本記事ではAPIドキュメントの全仕様を網羅しつつ、AICUメンバーのキャラクター画像生成を実際に試しながら解説します。
[CM]GPT-Image-2は次回のAICUマガジンでも特集します!
GPT Image 2にアクセスする方法は2系統あります。
1枚のプロンプトから1枚(または `n` パラメータで複数枚)の画像を得るならこちら。シンプルで高速です。
ポイントは `images.edit` の名前に惑わされないこと。「編集」だけでなく参照画像付きの新規生成にも使います。キャラクター画像を渡して「この子をカフェに配置して」と頼む場合、エンドポイントは `images.edit` です。
画像生成を「ツール」として持つ会話APIです。Image APIにない機能が3つあります。
1. マルチターン編集 ― `previous_response_id` を渡すだけで、前回生成した画像の文脈を保持したまま次の指示を出せます。「背景を変えて」「もう少し明るく」という反復が自然にできます。
2. プロンプト自動改善 ― `gpt-5.5` などのメインラインモデルが画像生成ツールを呼ぶ際、プロンプトを自動的にリライトします。改善結果は `revised_prompt` フィールドで確認可能。
3. `action` パラメータ ― `"auto"`(モデル判断)、`"generate"`(常に新規生成)、`"edit"`(常に編集)から選べます。コンテキストに画像がない状態で `"edit"` を指定するとエラーになるので注意。
どちらを選ぶか迷ったら――1枚生成するだけなら Image API、対話的に磨き込むなら Responses API。
`images.edit` にキャラクターの参照画像を渡し、プロンプトでシーンを指定します。
from openai import OpenAI
import base64
client = OpenAI()
result = client.images.edit(
model="gpt-image-2",
image=open("ElenaBloom_ref.png", "rb"), # キャラクター参照
prompt="Elena Bloom sitting at a late-night café, coding on a laptop, "
"warm amber lighting, cinematic composition. "
"No text or letters in the image.",
size="1024x1024",
quality="high",
)
image_bytes = base64.b64decode(result.data[0].b64_json)
with open("elena_cafe.png", "wb") as f:
f.write(image_bytes)
実際に生成した結果がこちらです。リファレンス画像のElena Bloom(ピンクツインテール、薔薇の髪飾り)の外見を保ちつつ、深夜カフェのシーンが構築されています。
重要な注意点: 参照画像が透過PNG(RGBA)の場合、APIがエラーを返すことがあります。事前にRGB変換しておきましょう。
from PIL import Image
img = Image.open("reference.png").convert("RGBA")
bg = Image.new("RGB", img.size, (255, 255, 255))
bg.paste(img, mask=img.split()[3])
bg.save("reference_rgb.png")
`images.edit` の `image` パラメータには最大10枚の画像を渡せます。1枚目をキャラクター参照、2枚目をロゴや背景素材にして、プロンプトで各画像の役割を明示するとうまくいきます。
result = client.images.edit(
model="gpt-image-2",
image=[
open("elena_ref.png", "rb"), # 1枚目: キャラクター参照
open("AICU-Japan-A.png", "rb"), # 2枚目: AICUのAロゴ
],
prompt="1枚目の画像はキャラクター参照です。このキャラクターの外見を維持してください。"
"2枚目の画像はAICUのAロゴです。キャラクターがこのロゴを胸の前で持っている構図。"
"X/Twitterアイコンに適した正方形構図。テキストや文字は含めない。",
size="1024x1024",
quality="high",
)
実際にElena Bloom(ピンクツインテール)とAICUのAロゴで試した結果です。キャラクターの外見を維持しながら、2枚目のロゴを持つ構図が生成されました。
1回の生成で完璧にならなくても、Responses APIなら会話を続けて改善できます。
# Turn 1: 最初の生成
response = client.responses.create(
model="gpt-5.5",
input="Elena Bloom standing at a Tokyo Game Show booth, "
"presenting a demo on a large screen",
tools=[{"type": "image_generation"}],
)
# Turn 2: 前回の結果を踏まえて修正
response2 = client.responses.create(
model="gpt-5.5",
previous_response_id=response.id, # これだけで文脈を引き継ぐ
input="背景にもっと来場者を増やして、ステージライトを追加して",
tools=[{"type": "image_generation"}],
)
`previous_response_id` を渡すだけで、APIが前回の画像と指示の文脈を保持してくれます。アプリ側で画像を再送する必要はありません。
生成した画像の一部だけを書き換えたい場合、マスク画像を使います。
マスクの仕様:
白黒画像からマスクを作る場合はPillowでアルファチャンネルを付加します。
from PIL import Image
mask = Image.open("mask_bw.png").convert("L")
mask_rgba = mask.convert("RGBA")
mask_rgba.putalpha(mask) # グレースケール値をそのままアルファに
mask_rgba.save("mask_alpha.png")
GPT Imageのマスク処理はプロンプトベースです。マスクの形状を厳密にトレースするのではなく、ガイドとして使われます。
Image APIとResponses APIの両方で、生成途中の画像をストリームで受け取れます。`partial_images` パラメータに0〜3を指定します。
stream = client.images.generate(
prompt="A river made of white owl feathers through a winter landscape",
model="gpt-image-2",
stream=True,
partial_images=2, # 途中経過を最大2枚受信
)
for event in stream:
if event.type == "image_generation.partial_image":
idx = event.partial_image_index
image_bytes = base64.b64decode(event.b64_json)
with open(f"preview_{idx}.png", "wb") as f:
f.write(image_bytes)
SlackやWebのUIでプログレス表示を作る場合に有用です。ただし各パーシャル画像に100出力トークンが追加課金されます。
参照画像が不要な場合は `images.generate` が使えます。ブログカバーやイベントバナーなど、キャラクター一貫性が不要な画像に最適です。
ライブラリなしで試したい場合のcurlコマンドです。
テキストから生成(`images.generate`):
curl -X POST "https://api.openai.com/v1/images/generations" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Anime girl with pink twin tails holding a glowing A logo",
"size": "1024x1024",
"quality": "high"
}' | jq -r '.data[0].b64_json' | base64 --decode > output.png
参照画像付き生成(`images.edit`、multipart/form-data):
curl -X POST "https://api.openai.com/v1/images/edits" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "model=gpt-image-2" \
-F "image[]=@elena_ref.png" \
-F "image[]=@logo.png" \
-F "prompt=1枚目はキャラクター参照。2枚目のロゴを持っている構図。" \
-F "size=1024x1024" \
-F "quality=high" \
| jq -r '.data[0].b64_json' | base64 --decode > result.png
`image[]` を複数回指定すると複数の参照画像を渡せます(最大10枚)。
`gpt-image-2` は固定サイズではなく、以下の制約を満たす任意の解像度を受け付けます。
よく使うサイズの目安:
2560x1440(約370万ピクセル)を超えるサイズは実験的扱いです。正方形が最も高速に生成されます。
`quality` パラメータは `low` / `medium` / `high` / `auto` から選択。`auto`(デフォルト)ではモデルがプロンプトに応じて判断します。
`gpt-image-2` では画像出力がトークン単位で課金されます。同じサイズでも非正方形の方がトークン数が少なくなる場合があります。
これに加えて、入力テキストのトークン料金と、`images.edit` で参照画像を渡す場合はビジョン入力トークンが加算されます。`gpt-image-2` は参照画像を常に高忠実度で処理するため、編集リクエストの入力トークンは多めになります。
GPT Image 1.5 / 1 / 1 Mini はレガシーの固定料金体系です。
gpt-image-2のhighは旧モデルより高額ですが、lowは$0.005〜0.006と圧倒的に安価。下書きやイテレーションでは `low` を使い、最終出力だけ `high` にするのが実用的です。
AICUではGeminiベースの Nano Banana 2(`/aicuty banana`)も併用しています。同じプロンプト「深夜のカフェでコードを書いている」を両方に与えると、違いが明確です。
Nano Banana 2 はプロンプトを感情・表情に解釈します。「カフェ」というキーワードから「ふーん(不機嫌)」の表情スタンプを生成。Slackリアクションやコミュニケーション向き。
gpt-image-2 はプロンプト通りのシーンを構築します。実際にカフェの中でコーディングしているイラストが出力されます。記事カバー、イベントレポート、SNS投稿画像向き。
Error: Invalid type for 'prompt': expected a string, but got an array instead.
`images.generate` は文字列専用。参照画像を渡すなら `images.edit` を使う。
`gpt-5.5` では `max_tokens` パラメータが廃止されています。プロンプト強化などで chat.completions を呼ぶ場合は `max_completion_tokens` に置き換えてください。
キャラクター参照画像が透過PNGだとエラーになることがあります。白背景RGB変換を挟みましょう(前述のコード参照)。
白黒JPEGをマスクとして渡すとエラー。PNGでアルファチャンネルを持たせる必要があります。
URLや記事本文をそのまま貼ると1,000文字を超えてエラーになることがあります。要約してから渡しましょう。
公式ドキュメントに記載されている制限です。
GPT Image 2はブラウザやSlack Botだけでなく、Claude Codeのターミナルからも直接使えます。`/gpt-image2` スキルにキャラクター参照画像を同梱しておけば、プロンプトを指定するだけでキャラクター一貫性のある画像が生成されます。
/gpt-image2 elena 何度でも眺めていられるXアイコン --size 1024x1024
ブログのカバーアート、記事の挿絵、SNS投稿画像――執筆中にターミナルを離れることなく画像を用意できます。
`gpt-image-2` と Responses APIは「プロンプトを書いて1枚生成する」ワークフローを変えます。
画像生成AIは「1枚ガチャ」の時代から、対話しながら磨き上げる時代に入っています。
引用元: OpenAI Image Generation Guide
GPT-Image-2は次回のAICUマガジンでも特集します!
Originally published at note.com/aicu on Apr 28, 2026.