Vision API (图像理解) 开发教程
现在的顶尖大模型(如 GPT-4o, Claude 3.5 Sonnet, Gemini 1.5 Pro)基本都是多模态模型,它们不仅能读文字,还能“看”图片。通过 Vision API,你可以实现图像识别、OCR、看图写代码等功能。
5分钟
2025-12-26
AI教程Vision
Vision API (图像理解) 开发教程
现在的顶尖大模型(如 GPT-4o, Claude 3.5 Sonnet, Gemini 1.5 Pro)基本都是多模态模型,它们不仅能读文字,还能“看”图片。通过 Vision API,你可以实现图像识别、OCR、看图写代码等功能。
1. 核心能力
- 视觉问答 (VQA):上传一张冰箱的照片,问 AI "里面有什么食材可以做菜?"
- OCR (文字提取):精准提取图片中的手写体、表格、文档。
- 看图写代码:上传一张网页的设计图,让 AI 直接生成 HTML/CSS 代码。
2. 如何调用 (OpenAI 示例)
调用 Vision API 非常简单,你只需要在 messages 中把 content 改成一个列表,包含 text 和 image_url 即可。
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "这张图里有什么?请详细描述。"},
{
"type": "image_url",
"image_url": {
"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
"detail": "high" # high: 高清模式,消耗更多Token但细节更好
},
},
],
}
],
max_tokens=300,
)
print(response.choices[0].message.content)
3. 本地图片上传 (Base64)
如果图片在本地,需要先转成 Base64 格式。
import base64
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
base64_image = encode_image("test.jpg")
# 在 image_url 中使用 data uri
# "url": f"data:image/jpeg;base64,{base64_image}"
4. 成本与限制
- 计费:Vision API 通常是按图片的分辨率计费的。图片越大,消耗的 Token 越多(例如 GPT-4o 处理一张 1080p 图片可能消耗 1000+ Tokens)。
- 细节控制:
detail: low模式更便宜,但 AI 会把图片压缩得很小,适合只看大概构图;detail: high适合看文字细节。
Vision API 让 AI 拥有了眼睛,开启了从“文本交互”到“多模态交互”的新时代。