3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GPT-Image-2入門 — 推論モード・2K解像度・マルチ生成をAPIで実装する

3
Last updated at Posted at 2026-04-22

はじめに

2026年4月21日、OpenAIはAI画像生成の新モデル「GPT-Image-2」を搭載した「ChatGPT Images 2.0」を公式発表しました。前作GPT Image 1.5から大きく進化した点は、O-seriesベースの「推論(Thinking)」機能を画像生成に統合したことです。

本記事では、GPT-Image-2の技術仕様・API実装方法・料金体系を解説します。

APIアクセス(gpt-image-2)は2026年5月に提供開始予定です(TechCrunch報道)。本記事のコードサンプルはリリース後を想定した実装例です。

この記事で学べること

  • GPT-Image-2の主要機能(推論モード・Web検索・マルチ生成)
  • Python SDKを使ったgpt-image-2の実装方法
  • GPT Image 1.5との料金・性能比較
  • ストリーミング生成・画像編集の実装パターン

対象読者

  • OpenAI APIでの画像生成に取り組むエンジニア
  • GPT Image 1.5からの移行を検討している方
  • AI画像生成の最新技術動向を把握したい方

前提条件

  • OpenAI APIキー(OPENAI_API_KEY環境変数に設定済み)
  • openai Python SDK v1.x
pip install openai --upgrade

TL;DR

  • GPT-Image-2はO-series推論を内蔵した初の画像生成モデル
  • 生成前にプロンプトを推論・Web検索して品質を最大化
  • 最大8枚の同時生成・最大3840×2160の2K解像度に対応
  • API名はgpt-image-2。generationsとeditsの2エンドポイントで利用予定(2026年5月提供開始予定)
  • 高解像度はGPT Image 1.5より値下げ、標準解像度は値上げ

GPT-Image-2の概要

推論モード(Thinking)とは

GPT-Image-2の最大の特徴は、O-seriesの推論能力を画像生成パイプラインに組み込んだことです。画像を生成する前に、モデルが以下のような「思考」プロセスを実行します。

  • プロンプトの意図解析: ユーザーの指示を深く解釈し、構図・スタイル・色彩を決定
  • Web検索: 必要に応じてリアルタイムでWebを検索し、参照情報を取得
  • 自動プロンプト改善: 最適な結果になるよう、元のプロンプトを内部で精緻化
  • レイアウト計画: テキスト・要素の配置を生成前に論理的に計画

この推論プロセスにより、以下の課題を克服しています:

課題 GPT Image 1.5 GPT-Image-2
複雑なテキスト描画 誤字・歪み多発 99%以上の正確率(公式発表
非ラテン文字 不安定 日本語・韓国語・ヒンディー語等に対応
複雑な構図 要素の重複・欠落 レイアウト事前計画で改善
一貫性のある複数画像 各画像が独立 最大8枚を一貫したスタイルで生成

主なユースケース

  • インフォグラフィック・スライド生成(テキスト埋め込みが必要な素材)
  • 多言語対応のマーケティング素材
  • UI/UXモックアップのプロトタイピング
  • 複数バリエーションの同時比較生成

APIの基本実装

テキストから画像生成

import os
import base64
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

# 基本的な画像生成
result = client.images.generate(
    model="gpt-image-2",
    prompt="日本語で「AIの未来」と書かれたモダンなビジネス資料の表紙。"
            "青色のグラデーション背景、白文字、クリーンなフラットデザイン。",
    size="1536x1024",      # 横長(16:9相当)
    quality="high",         # "low" | "medium" | "high" | "auto"
    n=1,                    # 生成枚数(1〜8)
    response_format="b64_json",
)

# 画像をファイルに保存
image_bytes = base64.b64decode(result.data[0].b64_json)
with open("output.png", "wb") as f:
    f.write(image_bytes)

print("画像生成完了")

パラメータ一覧

パラメータ 説明 デフォルト
model str "gpt-image-2" -
prompt str 画像の説明文 必須
size str 解像度(後述) "1024x1024"
quality str "low" / "medium" / "high" / "auto" "auto"
n int 生成枚数(1〜8) 1
response_format str "url" / "b64_json" "b64_json"
output_format str "png" / "jpeg" / "webp" "png"
moderation str "auto" / "low" "auto"

サポートする解像度

gpt-image-2は16ピクセルの倍数で自由にサイズを指定できます。主要なプリセットは以下の通りです:

サイズ 用途
1024x1024 スクエア(SNSアイコン等)
1536x1024 横長(プレゼンスライド等)
1024x1536 縦長(スマートフォン壁紙等)
2048x1152 広角横長(バナー等)
3840x2160 最大解像度の例(UHD相当)

解像度の最大短辺は128px以上、最大長辺は3840px以下、アスペクト比は3:1以内という制約があります(公式ドキュメント参照)。


複数画像の同時生成

GPT-Image-2は1回のAPIコールで最大8枚の画像を生成できます。同一プロンプトから複数バリエーションを生成する際に有効です。

# 同一プロンプトから4バリエーションを生成
result = client.images.generate(
    model="gpt-image-2",
    prompt="A futuristic smart city at night with glowing neon signs and autonomous vehicles",
    size="1536x1024",
    quality="medium",
    n=4,  # 4枚同時生成
)

for i, image_data in enumerate(result.data):
    img_bytes = base64.b64decode(image_data.b64_json)
    with open(f"city_{i+1}.png", "wb") as f:
        f.write(img_bytes)

print(f"{len(result.data)}枚の画像を生成しました")

ストリーミング生成

partial_images パラメータを使うと、生成中の途中経過画像をリアルタイムで受け取れます。高解像度画像の生成中にプログレスバーを表示するなど、UX改善に活用できます。

# ストリーミングで段階的に画像を取得
with client.images.generate(
    model="gpt-image-2",
    prompt="An intricate Japanese garden with cherry blossoms and a traditional tea house",
    size="2048x1152",
    quality="high",
    partial_images=3,   # 完成前に3回中間画像を送信(100トークン/回の追加コスト)
    stream=True,
) as stream:
    for event in stream:
        if event.type == "image_generation.partial_image":
            # 途中経過の画像を保存
            img_bytes = base64.b64decode(event.b64_json)
            with open(f"partial_{event.partial_image_index}.png", "wb") as f:
                f.write(img_bytes)
            print(f"中間画像 {event.partial_image_index} を受信")
        elif event.type == "image_generation.completed":
            # 完成画像を保存
            img_bytes = base64.b64decode(event.b64_json)
            with open("final.png", "wb") as f:
                f.write(img_bytes)
            print("生成完了")

partial_images を使用すると、プレビュー画像1枚につき100トークンが追加で課金されます(公式ドキュメント参照)。


画像編集(Edits)

既存画像を入力として、指定した変更を加えた画像を生成できます。

# 既存画像を編集
with open("original.png", "rb") as img_file:
    result = client.images.edit(
        model="gpt-image-2",
        image=img_file,
        prompt="背景を夜空に変更し、星を追加してください。人物はそのままで。",
        size="1024x1024",
        quality="high",
    )

img_bytes = base64.b64decode(result.data[0].b64_json)
with open("edited.png", "wb") as f:
    f.write(img_bytes)

マスクを使って特定エリアのみ編集することも可能です:

# マスクを使用した部分編集
with open("original.png", "rb") as img_file, \
     open("mask.png", "rb") as mask_file:   # 透明部分が編集対象
    result = client.images.edit(
        model="gpt-image-2",
        image=img_file,
        mask=mask_file,
        prompt="マスクされた空の部分に夕焼けの雲を追加",
        size="1024x1024",
        quality="medium",
    )

料金体系

画像単価(per-image課金)

gpt-image-2の公式料金はOpenAI API Pricingから確認できます:

Quality 1024×1024 1024×1536 1536×1024
Low $0.006 $0.005 $0.005
Medium $0.053 $0.041 $0.041
High $0.211 $0.165 $0.165

GPT Image 1.5との比較

サイズ Quality GPT Image 1.5 GPT-Image-2 変化
1024×1024 High $0.133 $0.211 +58%
1024×1536 High $0.200 $0.165 -17%
1024×1024 Medium - $0.053 新設
1024×1024 Low - $0.006 新設

標準解像度(1024×1024)は値上がりしていますが、高解像度(1024×1536)は値下がりしており、大判ビジュアル制作ではコスト削減になります。

トークン課金

大量処理にはトークン課金の計算も必要です(公式Pricing参照):

カテゴリ 入力 出力
テキストトークン $5 / 1M tokens $10 / 1M tokens
画像トークン $8 / 1M tokens $30 / 1M tokens

実装例: バッチ処理で効率化

大量の画像を生成する場合は、並列処理で効率化できます:

import asyncio
from openai import AsyncOpenAI

async_client = AsyncOpenAI()

async def generate_image(prompt: str, index: int) -> bytes:
    result = await async_client.images.generate(
        model="gpt-image-2",
        prompt=prompt,
        size="1024x1024",
        quality="medium",
    )
    return base64.b64decode(result.data[0].b64_json)

async def batch_generate(prompts: list[str]):
    tasks = [generate_image(p, i) for i, p in enumerate(prompts)]
    images = await asyncio.gather(*tasks)
    
    for i, img_bytes in enumerate(images):
        with open(f"batch_{i:03d}.png", "wb") as f:
            f.write(img_bytes)
    
    print(f"{len(images)}枚を並列生成完了")

# 実行
prompts = [
    "春の桜並木、青空、日本の公園",
    "未来都市の空中庭園、夕暮れ",
    "モダンなコーヒーショップのインテリア",
]
asyncio.run(batch_generate(prompts))

GPT Image 1.5からの移行ガイド

既存のGPT Image 1.5実装からの移行は、モデル名の変更のみで対応できます:

# 変更前
result = client.images.generate(
    model="gpt-image-1.5",  # 旧モデル
    prompt="...",
)

# 変更後
result = client.images.generate(
    model="gpt-image-2",    # 新モデル
    prompt="...",
    # quality, size等のパラメータは同一のまま使用可能
)

注意点

  • 透明背景(transparent)は非対応:GPT-Image-2は不透明背景のみサポート。透明背景が必要な場合はGPT Image 1.5を継続使用してください
  • 標準解像度のコスト増:1024×1024 highが$0.133 → $0.211に値上がり。コスト重視の場合はquality="medium"への変更を検討
  • APIキーとエンドポイントは変更不要:既存のOpenAIクライアント設定はそのまま利用可能

まとめ

GPT-Image-2(ChatGPT Images 2.0)のポイントをまとめます:

  • 推論モード内蔵: O-series ThinkingによりWeb検索・プロンプト改善を自動実行
  • テキスト描画の革新: 日本語・韓国語・ヒンディー語等の非ラテン文字に対応
  • 2K解像度: 最大3840×2160まで対応(16px倍数でカスタム指定可)
  • 最大8枚同時生成: バリエーション比較や大量素材生成に活用可能
  • 移行コスト最小: モデル名変更だけで既存コードから移行可能

高解像度ビジュアル・多言語テキスト描画・構図の複雑なインフォグラフィック生成において、GPT Image 1.5から大幅に進化しています。

参考リンク

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?