将图像编码后以 data: URL 的形式直接嵌入请求中,这是本地文件最简单的选项。编码后的数据计入 48 MiB 的请求体限制(参见 Limits)。
`import base64 from openai import OpenAI
client = OpenAI(api_key="
with open(“image.jpg”, “rb”) as f: b64 = base64.b64encode(f.read()).decode(“utf-8”)
response = client.chat.completions.create( model=“deepseek-v4-flash-vision-exp”, messages=[ { “role”: “user”, “content”: [ {“type”: “text”, “text”: “What is in this image?”}, { “type”: “image_url”, “image_url”: {“url”: f"data:image/jpeg;base64,{b64}"}, }, ], } ], ) print(response.choices[0].message.content) `
curl https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <DeepSeek API Key>" \
-d '{
"model": "deepseek-v4-flash-vision-exp",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "What is in this image?"},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,<BASE64_DATA>"}}
]
}
]
}'
2. 外部图像 URL
传入一个可公开访问的 http(s) 链接,模型会为你下载图像。URL 长度最多为 8192 个字符,图像文件大小最多为 32 MiB,且下载必须在 60 秒内完成。如果链接过长,请改用 base64 data URL 或 Files API。
response = client.chat.completions.create( model="deepseek-v4-flash-vision-exp", messages=[ { "role": "user", "content": [ {"type": "text", "text": "Describe this image."}, { "type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}, }, ], } ], ) print(response.choices[0].message.content)
3. 引用通过 Files API 上传的文件
使用 Files API 上传一次图像,然后在请求中引用其 file_id。当你需要在多个请求中复用同一张图像,或图像导致请求体超过 48 MiB 内联限制时,这是最佳选择。与内联图像不同,通过 Files API file_id 引用的图像最大可为 64 MiB,并且不受每张图 32 MiB 的检查限制。
使用返回的 file_id(格式为 file-api-...)来构建 file 内容块:
response = client.chat.completions.create( model="deepseek-v4-flash-vision-exp", messages=[ { "role": "user", "content": [ {"type": "text", "text": "What is in this image?"}, {"type": "file", "file_id": "file-api-xxxxxxxxxxxxxxxx"}, ], } ], ) print(response.choices[0].message.content)
或者,file 块也可以通过 file_data 以 base64 形式内联携带图像,而不是使用 file_id(两者互斥):
{
"type": "file",
"file_data": "data:image/jpeg;base64,<BASE64_DATA>",
"filename": "image.jpg"
}
细节级别
对于 image_url 输入,你可以可选地设置 detail 字段来控制图像的处理方式:
{
"type": "image_url",
"image_url": {"url": "https://example.com/image.jpg", "detail": "low"}
}
何时使用 Files API
内联图像(base64 或 file_data)会计入 48 MiB 的请求体大小限制。在以下情况考虑使用 Files API:
图像会根据其尺寸转换为 token,并与文本 token 一起计费。
在推理之前,每张图像都会自动调整大小:
因此,每张图像有 384 个 token 的上限:例如,2000×2000 的图像和 5000×5000 的图像在调整大小后消耗相同数量的 token。当请求包含多张图像时,每张图像在该规则下独立计数——多图像请求没有单独的计算方式。
要估算特定尺寸图像的 token 成本,请使用 Token & Token Usage 页面上的图像 token 计算器。
有关通过 Files API 上传文件的存储和上传配额,请参阅 Files API: Limits。
除了上述 OpenAI 兼容端点外,你还可以通过 Anthropic 兼容的 /messages 端点发送图像(base_url = https://api.deepseek.com/anthropic)。通用设置请参见 Anthropic API。