昨天我們讓 AI 開口說話(TTS),今天要讓 AI「張開眼睛」!
這就是 Vision API —— 讓 AI 看圖片並理解內容。
隨便找一張圖片,存成 .jpg
。
import os
from openai import OpenAI
from dotenv import load_dotenv
import base64
import mimetypes
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# 打開圖片
image_path = "test.jpg"
# 讀檔並轉成 data URL
mime, _ = mimetypes.guess_type(image_path)
if mime is None:
mime = "image/jpeg" # 預設
with open(image_path, "rb") as f:
b64 = base64.b64encode(f.read()).decode("utf-8")
data_url = f"data:{mime};base64,{b64}"
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "這張圖片裡有什麼?"},
{
"type": "image_url",
"image_url": {"url": data_url}
},
],
}
],
)
print("圖片描述:", response.choices[0].message.content)
本機路徑不能被 API 下載,所以最穩的做法是把圖片讀進來再轉 base64,用 data URI 傳給 Vision。
我先丟了一張籃球比賽的照片.
可以看這個結果
我們也可以有更多玩法,例如:
OCR(文字辨識){"type": "text", "text": "請讀出圖片中的文字"}
AI 可以讀出圖上的中文字/英文
圖片分類{"type": "text", "text": "這張圖片是食物、風景還是人物?"}
問答互動{"type": "text", "text": "這張圖片適合當旅遊海報嗎?為什麼?"}
程式碼的主要意思是
messages 裡可以放文字 + 圖片
圖片要用 {"type": "image_url", "image_url": ...} 格式
可以問 AI 不同問題(描述、分類、OCR、分析)
今天我們學會了 Vision API 入門:
上傳圖片,讓 AI 看懂並描述、可以做 OCR、分類、互動問答
打開了 AI「看世界」的新技能
明天的我們要延伸 Vision 功能
自動幫圖片加標題(Image Captioning),做一個「圖片解說員」!