🐍

gpt-image-1.5移行ガイド:DALL-E 3からの変更点とコード例【Party on Slack実装例付き】

に公開

はじめに

2025年12月にOpenAIが発表した gpt-image-1.5 は、従来の DALL-E 3 と比較して 生成速度が最大4倍 になり、テキストレンダリングや指示追従性も大幅に改善されています。

ただし、APIの仕様が結構変わっているので、移行時にハマるポイントがあります。

この記事では、私が開発・運用している Slack アプリ「Party on Slack」での実装経験をもとに、移行時の注意点と具体的なコード例を紹介します。

Party on Slackとは?

Party on Slack は、Slack上で複数の生成AIモデル(ChatGPT、Claude、Gemini、Grokなど)を利用できる無料アプリケーションです。

主な特徴:

  • @Party on Slack とメンションするだけでAIと会話開始
  • PDF・Word・画像・音声ファイルの要約・分析
  • Slack内の会話ログを検索・要約する「Slackにきく」機能
  • 画像生成機能(DALL-E、Stable Diffusion、gpt-image-1.5対応)

画像生成機能では、Slackのチャンネル上で簡単にAI画像を生成できます。

画像生成機能の使い方

アプリをメンションすると、スレッドにメニューが表示されます。

Party on Slackのスレッドメニュー
「🖼画像を生成」ボタンからダイアログを開く

「🖼画像を生成」ボタンをクリックすると、画像生成ダイアログが開きます。

画像生成ダイアログ
モデル、サイズ、プロンプトを入力して生成

対応モデル:

  • dall-e-3
  • dall-e-2
  • gpt-image-1
  • gpt-image-1.5(最新・おすすめ)
  • stability.stable-diffusion-xl-v1
  • imagen-4.0-generate-001

モデル選択
複数の画像生成モデルから選択可能

プロンプトを英語に自動翻訳するオプションもあるので、日本語でプロンプトを書いても大丈夫です。

生成例

gpt-image-1.5 で生成した画像の例です。テキストの描画精度が高く、日本語のテロップもしっかり再現されています。

生成例:平安時代のニュース風画像
平安時代のかぐや姫をニュース風に生成した例

詳しい使い方や他の生成例は、以下の記事で紹介しています。

この画像生成機能を gpt-image-1.5 に対応させる際に、いくつかの変更が必要でした。

対象読者

  • OpenAI の画像生成 API を使っている方
  • DALL-E 3 から gpt-image-1 / gpt-image-1.5 への移行を検討している方
  • Python で画像生成機能を実装している方

環境

  • Python 3.11
  • openai 1.x(公式ライブラリ)

モデルの違い

まず、各モデルの概要を整理します。

モデル リリース時期 特徴
dall-e-2 2022年 初代商用モデル
dall-e-3 2024年後半 高品質版
gpt-image-1 2025年4月 GPT-4oベースの画像生成
gpt-image-1.5 2025年12月16日 4倍高速化、テキスト描画改善

最大のハマりポイント:response_format が使えない

DALL-E 3 の場合

from openai import OpenAI

client = OpenAI()

response = client.images.generate(
    model="dall-e-3",
    prompt="A cute cat",
    n=1,
    size="1024x1024",
    response_format="url"  # ← URL形式で取得可能
)

image_url = response.data[0].url  # URLを取得

gpt-image-1.5 の場合

from openai import OpenAI
import base64

client = OpenAI()

response = client.images.generate(
    model="gpt-image-1.5",
    prompt="A cute cat",
    n=1,
    size="1024x1024"
    # response_format は指定できない!
)

# 常に b64_json で返される
image_base64 = response.data[0].b64_json  # url は None
image_bytes = base64.b64decode(image_base64)

# ファイルに保存
with open("output.png", "wb") as f:
    f.write(image_bytes)

response_format を指定すると、以下のようなエラーが発生します。

{
  "error": {
    "message": "Unknown parameter: 'response_format'.",
    "type": "invalid_request_error",
    "param": "response_format",
    "code": "unknown_parameter"
  }
}

APIパラメータの違い

パラメータ DALL-E 2/3 gpt-image-1/1.5
response_format url / b64_json 選択可 非対応(常にb64_json
quality standard / hd low / medium / high / auto
size 1024x1024, 1792x1024, 1024x1792 auto, 1024x1024, 1536x1024, 1024x1536
background ❌ 非対応 transparent / opaque / auto
output_format ❌ 非対応 png / jpeg / webp
output_compression ❌ 非対応 ✅ 0-100(JPEG/WebPのみ)
style vivid / natural ❌ 非対応
stream ❌ 非対応 ✅ ストリーミング対応

サイズオプションの違い

モデル サポートサイズ
dall-e-2 256x256, 512x512, 1024x1024
dall-e-3 1024x1024, 1792x1024, 1024x1792
gpt-image-1/1.5 auto, 1024x1024, 1536x1024, 1024x1536

DALL-E 3 の 1792x1024 は gpt-image-1.5 では使用できないので注意が必要です。

料金体系の違い

gpt-image-1 はトークンベースの料金体系になっています。品質設定によって消費トークン数が大きく変わります。

モデル 品質 サイズ 料金/画像
DALL-E 3 Standard 1024x1024 $0.04
HD 1024x1024 $0.08
gpt-image-1 Low 1024x1024 $0.011
Medium 1024x1024 $0.042
High 1024x1024 $0.167

quality="low" を使えば DALL-E 3 Standard より安く済みますが、品質は落ちます。用途に応じて使い分けましょう。

移行時の実装パターン

両方のモデルに対応する関数を作成する場合、以下のように分岐処理が必要です。

backend/lib/openai/__init__.py
import base64
import requests
from openai import OpenAI


def generate_image(
    prompt: str,
    model: str,
    api_key: str,
    size: str = "1024x1024"
) -> bytes:
    """DALL-E と gpt-image 両対応の画像生成関数"""
    client = OpenAI(api_key=api_key)
    
    if "gpt-image" in model:
        # gpt-image-1/1.5: response_format 非対応、常に b64_json
        response = client.images.generate(
            model=model,
            prompt=prompt,
            n=1,
            size=size
            # quality="high" など追加パラメータも可
        )
        image_base64 = response.data[0].b64_json
        return base64.b64decode(image_base64)
    else:
        # DALL-E 2/3: URL形式で取得
        response = client.images.generate(
            model=model,
            prompt=prompt,
            n=1,
            size=size,
            response_format="url"
        )
        image_url = response.data[0].url
        return requests.get(image_url).content

新機能:透過背景

gpt-image-1.5 では透過背景がサポートされています。

response = client.images.generate(
    model="gpt-image-1.5",
    prompt="A 2D pixel art sprite of a cat",
    size="1024x1024",
    background="transparent",  # 透過背景を有効化
    quality="high",            # medium/high推奨
    output_format="png"        # png/webpのみ対応
)

ゲームのスプライトやアイコン作成に便利です。

新機能:ストリーミング

生成途中の画像を段階的に取得できます。

stream = client.images.generate(
    model="gpt-image-1.5",
    prompt="A beautiful sunset over the ocean",
    stream=True,
    partial_images=2  # 途中経過を何回取得するか
)

for event in stream:
    if event.type == "image_generation.partial_image":
        idx = event.partial_image_index
        image_base64 = event.b64_json
        image_bytes = base64.b64decode(image_base64)
        with open(f"progress_{idx}.png", "wb") as f:
            f.write(image_bytes)

移行チェックリスト

  • response_format パラメータを削除
  • レスポンスを b64_json から取得するように変更
  • size パラメータを新しいオプションに合わせる(1792x1024 → 1536x1024)
  • UIのモデル選択肢に gpt-image-1 / gpt-image-1.5 を追加
  • 品質パラメータ(low/medium/high)の検討
  • 透過背景オプションの追加を検討
  • 料金体系の変更をドキュメントに反映

gpt-image-1.5 の改善点

DALL-E 3 と比較して、以下の点が改善されています。

項目 DALL-E 3 gpt-image-1.5
生成速度 標準 最大4倍高速
テキストレンダリング 苦手 大幅改善
指示追従性 標準 高精度
透過背景
画像編集 基本的 精密編集対応
顔の一貫性 不安定 安定
C2PAメタデータ ✅(著作権保護)

特にテキストを含む画像の生成精度が格段に上がっています。看板やロゴを含む画像を生成する際に効果を実感できます。

まとめ

DALL-E 3 から gpt-image-1.5 への移行で押さえておくべきポイント:

  1. response_format が使えない - 常に Base64 で返される
  2. サイズオプションが異なる - 1792x1024 は使えない
  3. 品質パラメータが変更 - low/medium/high/auto
  4. 透過背景に対応 - background="transparent" が使える
  5. 生成速度が4倍に向上 - 体感でもかなり速い

移行作業自体はそれほど大変ではありませんが、response_format の違いを知らないと最初にエラーで詰まります。

gpt-image-1.5 は速度・品質ともに優れているので、積極的に移行していくのがおすすめです。

Party on Slackのインストール

Party on Slack は Slack Marketplace から無料でインストールできます。

インストール手順

  1. 以下のリンクから Slack Marketplace にアクセス
  1. 「Slackに追加」ボタンをクリック

  2. ワークスペースを選択して認証

  3. アプリのホーム画面で OpenAI API キーを設定

  4. チャンネルで @Party on Slack とメンションして画像生成を試す

料金について

Party on Slack 自体は無料で利用できます。

ただし、各AI(OpenAI、Anthropic、Google など)の API 利用料金は別途発生します。API キーを持ち込む形式なので、利用量に応じた従量課金となります。

API 経由での利用なので、入力データが学習データとして取り込まれる心配はありません。

参考リンク


この記事が移行作業の参考になれば幸いです。

リバナレテックブログ

Discussion