DeepSeek 视觉模型 API 文档:支持图像输入与多方式上传
DeepSeek 发布 deepseek-v4-flash-vision-exp 视觉模型,支持图像与文本混合输入,提供多种图像上传方式,并兼容 OpenAI 与 Anthropic API,便于开发者集成多模态能力。
视觉能力deepseek-v4-flash-vision-exp 模型支持图像与文本混合输入,您可以要求模型描述图片、从截图中读取文字、分析图表等。支持的图像格式包括 JPEG、PNG、GIF 和 WebP。
格式根据实际文件内容检测,而非文件名或声明的 MIME 类型。发送图像有三种方式可以向模型提供图像,均使用标准的 OpenAI 兼容 Chat Completions 格式,其中 content 是块数组而非普通字符串。
同样的三种方式也适用于 Responses API,图像通过 input_image 内容部分传递。以下示例的 base_url 为 https://api.deepseek.com。
1. Base64 编码图像(内联)将图像编码后以 data: URL 形式直接嵌入请求中,这是处理本地文件最简单的方式。编码数据计入 48 MiB 请求体限制(见限制部分)。
import base64from openai import OpenAIclient = OpenAI(api_key="<DeepSeek API Key>",base_url="https:
//api.deepseek.com")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 数据 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:- 单个请求会超过请求体大小限制。- 图像大于 32 MiB,这只能通过 Files API 实现。- 您在多个请求中引用同一图像,希望避免每次重新上传。
Token 使用图像根据其尺寸转换为 token,这些 token 与文本 token 一起计费。在推理之前,每个图像都会自动调整大小:- 总像素数低于约 384×384 的图像会按比例放大,同时保留其宽高比。
- 较大的图像会按比例缩小,同时保留其宽高比,使缩放后的总像素数大致相当于 800×800 的图像。因此,每张图像有 384 个 token 的上限:例如,2000×2000 的图像和 5000×5000 的图像在缩放后消耗相同数量的 token。
当请求包含多张图像时,每张图像在相同规则下独立计数——多图像请求没有单独的计算方式。要估算特定尺寸图像的 token 成本,请使用 Token & Token Usage 页面上的图像 token 计算器。
限制有关通过 Files API 上传的文件的存储和上传配额,请参阅 Files API: Limits。限制条件- 仅在 user 消息中支持图像:在 system 或 assistant 消息中的图像会返回 400 错误。
- 只有视觉模型(deepseek-v4-flash-vision-exp)接受图像;其他模型返回 400 错误("This model does not support image")。- 包含保留图像占位符 token 的用户文本会被拒绝,并返回 400 错误。
通过 Anthropic API 使用图像除了上述 OpenAI 兼容端点外,您还可以通过 Anthropic 兼容的 /messages 端点(base_url = https://api.deepseek.com/anthropic)发送图像。
有关一般设置,请参阅 Anthropic API。区别在于图像内容块的形状。
与 image_url 不同,Anthropic 使用带有 source 对象的 image 块,其 type 可以是 base64、url 或 file:
import anthropicclient = anthropic.Anthropic() # ANTHROPIC_BASE_URL=https:
//api.deepseek.com/anthropicmessage = client.messages.create( model="deepseek-v4-flash-vision-exp",max_tokens=1024,messages=[ { "role":
"user","content":[ {"type":"text","text":"What is in this image?
"},{ "type":"image","source":{ "type":"base64","media_type":"image/jpeg","data":"<BASE64_DATA>",},},],} ],
)print(message.content)这三种 source 变体与上述 OpenAI 方法对应:
通过 Responses API 使用图像deepseek-v4-flash-vision-exp 模型也通过 OpenAI 兼容的 Responses API 接受图像。
相同的三种输入方法(base64 数据 URL、外部 http(s) URL、Files API file_id)和相同的限制适用;
只是内容部分的形状不同——图像在 input_image 部分中传递,可以在 user/developer 消息中,也可以在 function_call_output/custom_tool_call_output 项目的输出中:
response = client.responses.create( model="deepseek-v4-flash-vision-exp",
input=[ { "role":"user","content":[ {"type":"input_text","text":"What is in this image?
"},{"type":"input_image","image_url":"https://example.com/image.jpg","detail":"low"},],} ],
)print(response.output_text)input_image 部分支持 detail 字段,语义与上述相同(low/high/original/auto)。
当通过 file_id 提供图像时,detail 会被忽略,且 image_url 和 file_id 互斥。有关字段语义、限制(system/assistant 消息中的图像会被拒绝并返回 400 错误)以及工具输出图像,请参阅 Responses API 指南。