見出し画像

OpenAIのテキストから画像を生成できるDALL·E 3をPythonで試す

今回はPromptを入れると画像を生成(text-to-image)するモデルであるOpenAIのDALL·E 3をPythonで試します。
前回はAWS BedrockのStable Diffusion XL 1.0を試しました。

OpenAIのAPI Referenceは以下にあります。

https://platform.openai.com/docs/api-reference/images

OpenAIのDALL·Eは3と2が使用できますが使用できるAPIがそれぞれことなります。

  • Create image (画像生成): DALL·E 3, DALL·E 2

  • Create image edit (画像編集): DALL·E 2のみ

  • Create image variation (類似画像生成): DALL·E 2のみ

今回はDALL·E 3で使える画像生成を試します。
API Referenceを見るとqualityがstandardとhd、styleがvividとnaturalのパラメータを持っています。合計4つ(2x2)の組み合わせで出力してみます。
OpenAIのAPIキーをOPENAI_API_KEYに設定して実行します。

from openai import OpenAI
import requests

client = OpenAI()

quality = ["standard", "hd"]
styles = ["vivid", "natural"]
images = []
labels = []

for q in quality:
    for s in styles:
        response = client.images.generate(
            model="dall-e-3",
            prompt="A cute baby sea otter",
            n=1,
            size="1024x1024",
            response_format="url",
            style=s,
            quality=q,
            user="wapa5pow",
        )

        data = requests.get(response.data[0].url).content
        label = f"{q}_{s}"
        filename = f"data/openai_dall-e-3_{label}.png"
        with open(filename, "wb") as handler:
            handler.write(data)
        images.append(filename)
        labels.append(label)

コードはここにあります。

かわいいラッコが出てきました。

OpenAIのDALL·E 3で出力した画像

値段

ここにありますが、Standardの1024x1024で25枚で$1です。AWSのBedrockのStable Diffusion XL 1.0と同じような値段です。

この記事が気に入ったらサポートをしてみませんか?