图片识别 (Vision)

通过 Chat Completions API 发送图片,让多模态模型理解和分析图片内容。

提示: Vision 功能使用与对话补全相同的 API 端点,只需在 content 中传入图片即可,无需调用额外接口。

支持的模型

以下模型支持图片识别功能:

模型说明
gpt-4oOpenAI 旗舰多模态模型,图片理解能力最强
gpt-4o-mini轻量级多模态模型,性价比高
gpt-4-turbo支持 Vision 的 GPT-4 版本
gemini-2.5-proGoogle Gemini,出色的图片理解能力
gemini-2.0-flashGemini 快速版,支持图片
claude-sonnet-4-20250514Anthropic 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,{编码数据},其中格式为 pngjpeggifwebp

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 类型说明
PNGimage/png推荐,无损压缩
JPEG / JPGimage/jpeg推荐,文件体积小
GIFimage/gif支持,仅分析第一帧
WebPimage/webp支持

图片大小与优化建议

大小限制: 单张图片不超过 20 MB。对于超大图片,建议先压缩再上传。