[LLM] マルチモーダル

画像 → 理解 → テキスト回答 の最小構成

from openai import OpenAI
import base64

client = OpenAI()

# 画像ファイルを base64 化
with open("image.jpg", "rb") as f:
    img_base64 = base64.b64encode(f.read()).decode("utf-8")

# マルチモーダル(画像 + テキスト)問い合わせ
response = client.chat.completions.create(
    model="gpt-4o",   # または gpt-4o-mini
    messages=[
        {"role": "user", "content": [
            {"type": "text", "text": "この画像を説明してください。"},
            {
                "type": "image_url",
                "image_url": {
                    "url": f"data:image/jpeg;base64,{img_base64}"
                }
            }
        ]}
    ]
)

print(response.choices[0].message["content"])

何が起きているか?
1. 画像を base64 でエンコード
OpenAI API ではファイルアップロードせず、そのまま Base64 で画像を送れる。

2. messages に「画像 + テキスト」を混在させる
{“type”: “image_url”, …} を入れることでマルチモーダルの入力が可能になる。

3. gpt-4o が画像を理解し、テキストで返す
画像認識モデル + 言語モデルが統合されているため、追加設定不要。