DeepSeek 的视觉能力在 2026 年 9 月 10 日不再是边角项目。随着 DeepSeek-V4.1-Flash 正式 GA,图像输入进了主模型,只挂一个 id:deepseek-flash。没有单独的视觉构建,也没有 “Exp” 后缀。发布说明同时下线了 deepseek-v4-flash 和 deepseek-v4-flash-vision-exp;打到这两个名字的请求,现在都落到 V4.1-Flash。
如果你三周前是按实验接口搭的,这件事就有影响。你对着 V4-Flash-Vision-Exp 写的请求格式还能用,但读图的模型是新的:763B 参数,视觉编码器从零训练,和文本骨干一起长出来。这篇指南会讲“原生多模态”在实践里意味着什么、三种送图方式、detail 参数、图像怎么计费,以及如何在 Apifox 里搭一套可重复的视觉测试,证明旧名字和新名字行为一致。
AI Coding 交流群
如果你也在用 AI 写代码,或者正在研究 Cursor、Claude Code 这些工具,欢迎加入以下交流群。群里平时会聊一些 AI 编程的实际用法、开发工作流,还有各种新工具和新玩法。
TL;DR
- 模型 id:
deepseek-flash。遗留名字deepseek-v4-flash-vision-exp仍能解析,但由 V4.1-Flash 提供服务。 - 图像放在 user message 的
content数组里:base64 data URL(每张最多 32 MiB)、外部 URL(最多 8,192 个字符),或 file ID。 - 可选
detail字段:low、high(别名original)或auto。 - 视觉基准,DeepSeek 自己报告:MMMU-Pro 56.5,CVBench 77.9,DocVQA 95.6,RefCOCO 86.0。
- 价格就是标准 Flash 费率:cache-miss 输入 token 非高峰 $0.15 / 1M,高峰 $0.30。
- 上下文 1M tokens,最大输出 384K,和纯文本调用相同。
这里的“原生多模态”是什么意思
Vision-Exp 是给已经训完的文本模型再挂一个图像编码器。V4.1-Flash 反过来做。根据模型卡,图像从一开始就在 45T-token 的预训练语料里,编码器是全新的 DeepSeek-ViT,从零训练,而不是从现成视觉模型借来。骨干是 552B 参数的 mixture of experts;加上编码器后总量到 763B。prefill 时只有 8B 参数激活,decode 时 16B,所以这么大的模型仍能按 Flash 的速度和价格跑。V4-Flash API 指南里的纯文本模型 V4-Flash,正是 Vision-Exp 当时扩展的底座。
DeepSeek 在模型卡里给出这四项视觉分数。它们是厂商自己的测量,在你把自家文档真正打过 API 之前,先当主张而不是结论。
| Benchmark | 测什么 | V4.1-Flash |
|---|---|---|
| MMMU-Pro | 需要同时看图和读题才能回答的大学程度问题 | 56.5 |
| CVBench | 自然照片里的计数、深度排序和空间关系 | 77.9 |
| DocVQA | 对扫描文档和表单做问答 | 95.6 |
| RefCOCO | 在图像里定位短语所指的对象 | 86.0 |
对 API 用户来说,要盯的是 DocVQA 和 RefCOCO 两行。文档问答对应发票和表单抽取。RefCOCO 是 grounding:给定 “the Submit button below the email field”,模型找不找得到?这项能力能把截图变成 Agent 动作。架构综述会更深入覆盖文本侧和技术报告。
请求格式:三种送图方式
线上格式没有任何变化。用 OpenAI SDK 调用 https://api.deepseek.com 的 Chat Completions 接口,把文本和图像部分放进同一个 content 数组,模型设为 deepseek-flash。下面是一个把发票转成 JSON 的完整调用:
import base64, json
from openai import OpenAI
client = OpenAI(api_key="YOUR_DEEPSEEK_KEY", base_url="https://api.deepseek.com")
with open("invoice-2026-0912.png", "rb") as f:
image_b64 = base64.b64encode(f.read()).decode()
schema_hint = (
"Return only JSON with keys: invoice_number (string), issue_date (YYYY-MM-DD), "
"vendor (string), currency (string), line_items (array of {description, quantity, "
"unit_price, amount}), subtotal, tax, total (numbers)."
)
response = client.chat.completions.create(
model="deepseek-flash",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": schema_hint},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{image_b64}",
"detail": "high",
},
},
],
}],
temperature=1.0,
max_tokens=2048,
)
invoice = json.loads(response.choices[0].message.content)
print(invoice["invoice_number"], invoice["total"])
print(response.usage.prompt_tokens, "prompt tokens")
这是第一种:内联 base64。自包含,每张图上限 32 MiB,适合一次性调用,或文件永远不离开你网络的场景。
第二种是外部 URL。如果图像已经在 CDN 或对象存储上有公开链接,就跳过编码,直接传链接(最多 8,192 个字符)。下面这条 curl 读取一张托管的定价图:
curl https://api.deepseek.com/chat/completions \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-flash",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "List every plan name and its monthly price from this chart as a JSON array."},
{"type": "image_url", "image_url": {"url": "https://assets.example-saas.com/pricing/plans-q3.png", "detail": "auto"}}
]
}]
}'
第三种是 file ID。通过 DeepSeek 的 Files API 上传一次图像,之后用 file 部分引用,而不再重发字节:
{"type": "file", "file": {"file_id": "file-api-xxxxxxxxxxxxxxxx"}}
同一张图会出现在多个请求里时,选 file ID,比如测试套件里每条用例都要对比的参考截图。完整参数走查见 V4.1-Flash API 指南。
detail 参数和请求限制
detail 是可选的,放在 image_url 对象里。三个取值从 Vision-Exp 沿用下来:
"low"缩到 512x512。最便宜也最快;适合“这是仪表盘还是收据”这类问题。"high"(别名"original")保留源分辨率。用于密文档、小字,以及 12px 标签也要紧的 UI 截图。"auto"让 API 自己选。
你会最先碰到的上限:
| Constraint | Value |
|---|---|
| Inline base64 image | up to 32 MiB |
| External URL length | up to 8,192 characters |
| File ID reference | supported through the Files API |
| Context window | 1M tokens |
| Max output | 384K tokens |
detail values |
low, high/original, auto |
Vision-Exp 指南还列过图像数量、body 大小和像素尺寸的额外上限。那些是给实验模型公布的;用在 V4.1-Flash 上之前,先查API changelog。有一条没变:图像只能放在 user message。放进 system 或 assistant message 会得到 400。
deepseek-flash 上图像怎么计费
没有单独的视觉价格。图像按输入 token,走 定价页上的 Flash 费率,自 2026 年 9 月 10 日 04:00 UTC 生效:
| deepseek-flash, per 1M tokens | Off-peak | Peak |
|---|---|---|
| Input, cache hit | $0.003 | $0.006 |
| Input, cache miss | $0.15 | $0.30 |
| Output | $0.60 | $1.20 |
高峰是周一到周五 01:00 到 04:00 以及 06:00 到 10:00 UTC;非高峰半价。在 Vision-Exp 上,每张图最多按 384 个输入 token 计费。这个上限是否原样带到 V4.1-Flash,需要对照文档 [VERIFY]。每次响应的 usage.prompt_tokens 会报告真实计数,所以 Python 示例会把它打印出来。
如果 384-token 上限还在,高峰 cache-miss 下一张图大约 $0.000115,非高峰减半,一千张发票的图像输入大约 $0.12。真实流水线里占主导的是输出:每张发票 400 tokens 的 JSON,高峰时大约是图像本身的四倍。杠杆是收紧响应 schema,而不是把图缩小。高峰、非高峰和 cache-hit 的算法在 DeepSeek-V4.1-Flash 定价说明里展开过;短结论是:cache-miss 输入比 Vision-Exp 在 8 月的收费便宜 32%。
三个值得先做试点的用例
文档抽取。 发票、收据、送货单、保险表。prompt 要求固定 JSON schema,用 detail: "high" 发送,并在采信记录前核对明细合计是否等于小计。
用 UI 截图做测试断言。 部署后抓一页,问预期元素在不在、在哪,再把答案变成 pass/fail。相关基准是 RefCOCO:工作就是找被点名的元素。
读图。 从图表图像里抽出系列名、轴标签和描点数值,整理成表。交叉线和没标轴的图,需要人抽查。
在 Apifox 里测视觉接口
视觉请求用手迭代很痛苦:base64 团块会让 JSON body 没法读,对比 detail 设置又要来回倒腾几乎一样的 payload。下面这套循环能保持可读,并且一键重跑。

- 先配环境。 为
base_url、api_key、model(deepseek-flash)和detail(high)创建变量。之后换 detail 级别是下拉,而不是改 payload。 - 在前置操作脚本里编码图像。 不要把 base64 贴进 body,让前置操作脚本编码样例文件,把结果写到
image_b64变量。可见 body 只剩几行,换测试图只改一个路径。 - 用变量保存请求 body。 使用
"model": "{{model}}"、"detail": "{{detail}}"和"url": "data:image/png;base64,{{image_b64}}"。存成测试用例,方便复用。 - 对 JSON 形态做断言。 断言响应能解析成 JSON,
invoice_number是非空字符串,line_items是非空数组,total是数字,usage.prompt_tokens低于你选定的阈值。这样“看起来还行”就变成 pass/fail。 - 确认遗留名字路由到同一模型。 复制已保存的请求,把
model设为deepseek-v4-flash-vision-exp,在同一个测试场景里对同一张图跑两边。比较抽取字段和usage.prompt_tokens。结果对得上,就印证了发布说明:两个名字都打到 V4.1-Flash,你可以放心地在配置里改名。 - 放到 CI 里跑。 每次改 prompt 都用
apidog-cli跑这个场景,让 schema 回归在上生产前暴露。
你现在可以怎么做
实验接口证明了请求格式和价格点。V4.1-Flash 把这两样留下,换上一个从第一个训练 token 起就见过图像的模型。把客户端指向 deepseek-flash,把 detail 放进变量,对返回的 JSON 做断言,再用同一套 Apifox 场景把遗留名字跑一遍,确认重路由。之后只剩一个问题:它在你自己的文档上准不准。你现在已经有能回答这个问题的测试。
开发必备:API 全流程管理神器 Apifox
介绍完上文的内容,我想额外介绍一个对开发者同样重要的效率工具 —— Apifox。作为一个集 API 文档、调试、设计、测试、Mock、自动化测试于一体的工具,Apifox 是目前提升研发效率的首选。
如果你正在开发项目,不妨试试其极其友好的界面设计,它完全兼容 Postman 和 Swagger 数据格式,导入数据非常方便,,即使是新手也能很快上手,点击这里即可注册使用。

值得一提的是,除了个人和常规团队使用,针对有高安全合规要求、或需要在内网环境协作的企业,Apifox 还提供了深度定制的私有化部署方案。
获取专属报价与部署方案
详细的私有化部署系统架构与安全白皮书
针对您公司规模的专属报价单
免费的 1v1 专属产品演示 (Demo) 机会