图片识别 (Vision)
通过 Chat Completions API 发送图片,让多模态模型理解和分析图片内容。
提示: Vision 功能使用与对话补全相同的 API 端点,只需在
content 中传入图片即可,无需调用额外接口。支持的模型
以下模型支持图片识别功能:
| 模型 | 说明 |
|---|---|
gpt-4o | OpenAI 旗舰多模态模型,图片理解能力最强 |
gpt-4o-mini | 轻量级多模态模型,性价比高 |
gpt-4-turbo | 支持 Vision 的 GPT-4 版本 |
gemini-2.5-pro | Google Gemini,出色的图片理解能力 |
gemini-2.0-flash | Gemini 快速版,支持图片 |
claude-sonnet-4-20250514 | Anthropic Claude,通过兼容层支持 Vision |
通过 URL 发送图片
将 content 字段从字符串改为数组,包含文本和图片 URL:
{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "请描述这张图片的内容"
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/photo.jpg"
}
}
]
}
]
}
通过 Base64 发送图片
如果图片在本地,可以将其编码为 Base64 后通过 data URI 发送:
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}
}
data URI 格式:
data:image/{格式};base64,{编码数据},其中格式为 png、jpeg、gif 或 webp。detail 参数
可以通过 detail 参数控制图片分析精度:
| 值 | 行为 |
|---|---|
"auto" | 默认值,模型自动选择精度 |
"low" | 低精度模式,速度快,消耗 token 少(固定 85 tokens) |
"high" | 高精度模式,图片会被裁切为 512px 小块分别分析 |
{
"type": "image_url",
"image_url": {
"url": "https://example.com/photo.jpg",
"detail": "low"
}
}
完整 Python 示例
方式一:通过 URL 发送
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api2everything.xyz/v1"
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?请详细描述。"},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/photo.jpg"
}
}
]
}
],
max_tokens=1000
)
print(response.choices[0].message.content)
方式二:通过 Base64 发送本地图片
import base64
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api2everything.xyz/v1"
)
# 读取本地图片并编码为 Base64
with open("photo.png", "rb") as f:
image_base64 = base64.b64encode(f.read()).decode("utf-8")
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "请分析这张图片"},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{image_base64}"
}
}
]
}
],
max_tokens=1000
)
print(response.choices[0].message.content)
支持的图片格式
| 格式 | MIME 类型 | 说明 |
|---|---|---|
| PNG | image/png | 推荐,无损压缩 |
| JPEG / JPG | image/jpeg | 推荐,文件体积小 |
| GIF | image/gif | 支持,仅分析第一帧 |
| WebP | image/webp | 支持 |
图片大小与优化建议
大小限制: 单张图片不超过 20 MB。对于超大图片,建议先压缩再上传。
- 分辨率建议 — 短边不超过 768px 即可获得良好效果,更大的图片会被自动缩放
- 减少 token 消耗 — 使用
detail: "low"可大幅降低 token 用量 - 多图场景 — 可在一条消息中传入多个
image_url对象,模型会综合分析所有图片 - Base64 vs URL — URL 方式更高效(无需传输大量编码数据),推荐优先使用
- 格式选择 — JPEG 体积最小,适合照片;PNG 适合截图和含文字的图片