AI 见闻
精选· 重要性 4/5

DeepSeek 视觉模型 API 文档:支持图像输入与多方式上传

Hacker News (AI)··dares2573·约 5 分钟阅读
社区热度 495
中文导读

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 指南。

原文出处
DeepSeek-v4-flash-vision-exp

本文为机器翻译辅以 AI 润色,仅供参考。原始事实以原文为准。

相关阅读