背景:OpenAIのGPT-5で画像読み込みをさせる際に、簡単な先行事例が見つけられなかったので、備忘として残すことにしました。
個人的に使いやすい形で整理した内容をQiitaに残しておきます。
Python 3.10.6
0.サンプル実装
画像ファイルを読み込み、画像の内容を説明させます。
1. 環境変数ファイル (.env)
.env ファイルにOpenAIのAPIキーを記載します。
.env
OPENAI_API_KEY='Your_API_Key_Here'
2. 画像解析スクリプト (imageParser.py)
以下のスクリプトでは、PNG画像を読み込み、Base64に変換した上でGPT-5-miniに送信し、内容をテキストで出力します。
imageParser.py
import os
import base64
from openai import OpenAI
from dotenv import load_dotenv
# .env読み込み
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# 画像を読み込んでBase64に変換
with open("sample.png", "rb") as f:
img_base64 = base64.b64encode(f.read()).decode("utf-8")
# GPT-5-miniにリクエスト
response = client.chat.completions.create(
model="gpt-5-mini",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "画像の内容を説明してください。"},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{img_base64}"
}
}
]
}
]
)
# 結果出力
print(response.choices[0].message.content)
実行結果
・入力
・出力
夕暮れの海辺の風景イラストです。主な特徴は次のとおりです。
- 構図・視点:中央の石畳の小道が奥の海と沈みかけの太陽へと一直線に伸びており、遠近感が強調されています。海に向かう視線が自然に誘導されます。
- 空と光:空はオレンジ〜ピンク〜紫のグラデーションで彩られ、雲が絵画的に広がっていて「夕焼け」の温かい色合いが支配しています。地平線近くに沈む太陽が柔らかな光を放っています。
- 前景・中景:両側に刈り込まれた生垣と植え込みがあり、そこに四角いガラス風の街灯(ランタン)が並んで柔らかく点灯しています。石畳の道や植え込みの形が整然としていて公園や遊歩道のような雰囲気です。
- 背景:海の先に薄く山並みが見え、海面は空の色を受けて穏やかに光っています。手すりのある海沿いの柵が見えます。
- 周辺の植生:左右に大きな樹木があり、夕日の色で葉が染まっています。風で舞う小さな花びらや光の粒のような表現もあり、静けさとわずかな動きが同居しています。
- 全体の雰囲気:静かで穏やか、ややノスタルジックでロマンティックな情景。アニメ風・イラスト風の描写で、温かく落ち着いたムードが強調されています。
他にこの絵の作風の分析や色使い、壁紙への適用など詳しく見てほしい点があれば教えてください。
