DeepSeek-V4.1-Flash Vision API:如何把图像发给 DeepSeek 原生多模态模型

DeepSeek-V4.1-Flash 把视觉收进 deepseek-flash。讲清三种送图方式、detail 参数、计费,以及如何在 Apifox 里验证旧模型名和新模型名行为一致。

用 Apifox,节省研发团队的每一分钟

DeepSeek-V4.1-Flash Vision API:如何把图像发给 DeepSeek 原生多模态模型

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

DeepSeek 的视觉能力在 2026 年 9 月 10 日不再是边角项目。随着 DeepSeek-V4.1-Flash 正式 GA,图像输入进了主模型,只挂一个 id:deepseek-flash。没有单独的视觉构建,也没有 “Exp” 后缀。发布说明同时下线了 deepseek-v4-flashdeepseek-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 字段:lowhigh(别名 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。下面这套循环能保持可读,并且一键重跑。

  1. 先配环境。base_urlapi_keymodeldeepseek-flash)和 detailhigh)创建变量。之后换 detail 级别是下拉,而不是改 payload。
  2. 在前置操作脚本里编码图像。 不要把 base64 贴进 body,让前置操作脚本编码样例文件,把结果写到 image_b64 变量。可见 body 只剩几行,换测试图只改一个路径。
  3. 用变量保存请求 body。 使用 "model": "{{model}}""detail": "{{detail}}""url": "data:image/png;base64,{{image_b64}}"。存成测试用例,方便复用。
  4. 对 JSON 形态做断言。 断言响应能解析成 JSON,invoice_number 是非空字符串,line_items 是非空数组,total 是数字,usage.prompt_tokens 低于你选定的阈值。这样“看起来还行”就变成 pass/fail。
  5. 确认遗留名字路由到同一模型。 复制已保存的请求,把 model 设为 deepseek-v4-flash-vision-exp,在同一个测试场景里对同一张图跑两边。比较抽取字段和 usage.prompt_tokens。结果对得上,就印证了发布说明:两个名字都打到 V4.1-Flash,你可以放心地在配置里改名。
  6. 放到 CI 里跑。 每次改 prompt 都用 apidog-cli 跑这个场景,让 schema 回归在上生产前暴露。

你现在可以怎么做

实验接口证明了请求格式和价格点。V4.1-Flash 把这两样留下,换上一个从第一个训练 token 起就见过图像的模型。把客户端指向 deepseek-flash,把 detail 放进变量,对返回的 JSON 做断言,再用同一套 Apifox 场景把遗留名字跑一遍,确认重路由。之后只剩一个问题:它在你自己的文档上准不准。你现在已经有能回答这个问题的测试。

开发必备:API 全流程管理神器 Apifox

介绍完上文的内容,我想额外介绍一个对开发者同样重要的效率工具 —— Apifox。作为一个集 API 文档、调试、设计、测试、Mock、自动化测试于一体的工具,Apifox 是目前提升研发效率的首选。

如果你正在开发项目,不妨试试其极其友好的界面设计,它完全兼容 Postman 和 Swagger 数据格式,导入数据非常方便,,即使是新手也能很快上手,点击这里即可注册使用

Apifox

值得一提的是,除了个人和常规团队使用,针对有高安全合规要求、或需要在内网环境协作的企业,Apifox 还提供了深度定制的私有化部署方案

获取专属报价与部署方案

icon 详细的私有化部署系统架构与安全白皮书
icon 针对您公司规模的专属报价单
icon 免费的 1v1 专属产品演示 (Demo) 机会
获取部署方案
* 提交后,我们的客户经理将在 1 个工作日内与您联系
林俊锋 企业微信
@Apifox 专属顾问
扫码备注: 私有化 + 公司名