こちらの記事でPythonでChatGPT APIを使ってみるところまで解説しました。
本記事はテキストの生成ではなく、画像を生成してみるところまでを解説します。
ChatGPT APIを使えるようにする
こちらの記事に従ってChatGPT APIを使えるようにします。
ChatGPT APIを使って画像を生成する
openaiパッケージとrequestsパッケージを利用しますので、事前にpipコマンドでインストールしておきます。
> pip install openai
Collecting openai
Downloading openai-1.54.3-py3-none-any.whl.metadata (24 kB)
Collecting anyio<5,>=3.5.0 (from openai)
Downloading anyio-4.6.2.post1-py3-none-any.whl.metadata (4.7 kB)
Collecting distro<2,>=1.7.0 (from openai)
Downloading distro-1.9.0-py3-none-any.whl.metadata (6.8 kB)
:
Installing collected packages: sniffio, pydantic-core, jiter, idna, h11, distro, colorama, certifi, annotated-types, tqdm, pydantic, httpcore, anyio, httpx, openai
Successfully installed annotated-types-0.7.0 anyio-4.6.2.post1 certifi-2024.8.30 colorama-0.4.6 distro-1.9.0 h11-0.14.0 httpcore-1.0.6 httpx-0.27.2 idna-3.10 jiter-0.7.0 openai-1.54.3 pydantic-2.9.2 pydantic-core-2.23.4 sniffio-1.3.1 tqdm-4.67.0
> pip install requests
Collecting requests
Downloading requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
Collecting charset-normalizer<4,>=2 (from requests)
Downloading charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl.metadata (36 kB)
:
Installing collected packages: urllib3, charset-normalizer, requests
Successfully installed charset-normalizer-3.4.1 requests-2.32.3 urllib3-2.3.0
スクリプト全体
簡単なサンプルコードを載せておきます。
ここでは「chatgpt_image.py」ファイルに保存したとします。
import requests
from openai import OpenAI
if __name__ == "__main__":
client = OpenAI(api_key="XXXXXXXX")
prompt = "毛布にくるまって寝ている猫の画像を生成して"
response = client.images.generate(
model = "dall-e-3",
prompt = prompt,
n = 1,
size = "1024x1024"
)
image_url = response.data[0].url
image_data = requests.get(image_url).content
with open("chatgpt-genimage.png", "wb") as f:
f.write(image_data)
スクリプト解説
簡単にスクリプトを解説していきます。
実行結果
chatgpt_image.py を実行することで、chatgpt-genimage.pngファイルが生成されます。
python chatgpt_image.py
本記事では猫の画像を生成してみました。
実行する度に新たな画像が生成されますので、自分の気に入る画像になるまで繰り返し実行できます。
ただし、モデルによって消費されるトークン数が異なりますので、消費金額にはご注意ください。
まとめ
ChatGPT APIを使って画像を生成してみました。
生成された画像データをさらに加工して、、といった面白い使い方もできそうです。
コメント