等了快四个月,DeepSeek的API终于不是"瞎子"了。
8月21日下午,deepseek-v4-flash-vision-exp 悄悄出现在API文档里,没有发布会没有预热。我第一时间拿API Key跑了一轮测试,把能踩的坑基本都踩了一遍,直接说结果。
URL图片能用,但部分国内CDN会被拒
DeepSeek的视觉API支持两种传入方式——base64编码和URL链接。我测了六个不同来源的URL,结果出乎意料:
| 来源 | 状态 |
|---|---|
| 百度Logo | ✅ |
| Pixabay公开图 | ✅ |
| Unsplash风景图 | ✅ |
| 阿里云CDN(alicdn) | ❌ |
| 字节CDN(bytetos/bytescm) | ❌ |
| 掘金Logo | ❌ |
百度的图和国外公共图片源都正常,但阿里CDN和字节CDN全挂了。报错信息是Failed to download image,原因是这些CDN有Referer校验或签名防盗链机制——DeepSeek的服务器去拉图时被拦了。
所以结论不是"URL不能用",而是如果你要处理的是阿里或字节CDN上的图片,URL方式会失败,得先下载到本地再走base64。对于其他来源的图片,URL直传没问题。
# URL方式(公共图片源可用)
response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "描述这张图片"},
{"type": "image_url", "image_url": {"url": "https://example.com/image.png"}}
]
}]
)
# 阿里/字节CDN图片需要先转base64
with open("downloaded_image.png", "rb") as f:
b64 = base64.b64encode(f.read()).decode("utf-8")
# 然后用 f"data:image/png;base64,{b64}" 传入
文字识别:能认出来,但细节会出错
我做了一张测试卡片,深蓝背景红框,上面写了四行文字(Hello DeepSeek!、Vision Test 2026、5 fingers: 🖐、Price: ¥0.01/image),然后让模型识别内容和颜色。 结果:
- "Hello DeepSeek!" → ✅ 文字正确,颜色判断正确(白色)
- "Vision Test 2026" → ✅ 文字正确,但颜色判成了"浅蓝色"(实际是深蓝色 #0f3460)
- "5 fingers: 🖐" → ⚠️ 文字部分正确,emoji识别成"乱码"或"两个感叹号"
- "Price: ¥0.01/image" → ⚠️ 把"¥"识别成了"$"
四行文字认对了三行的主要内容,但符号和emoji基本没戏,颜色判断也有偏差。这个精度拿来做OCR是不行的,但拿来做"大致理解截图内容"的场景——比如看看页面布局、识别报错信息的关键文字——够用了。
数手指:经典翻车,没有例外
测试了一下数手指。我画了个手掌简笔画,五根手指,问模型"这是几根手指"。 模型回答:"4根。上面的四个长条代表四根手指,下面的圆形代表手掌。" 五根手指它只数到四根。这个阶段的多模态模型基本都过不了这关,DeepSeek也不例外。这个就别指望了,等后续版本优化。
一个意外的发现:reasoning_effort参数可能没生效
DeepSeek的thinking模式支持 reasoning_effort 参数,可以设为 none 来关闭深度推理。我传了这个参数想省点token,结果发现返回的数据里仍然有大量reasoning_tokens。
对比两次调用:
开启thinking:completion=278, reasoning=177 (占比63.7%)
关闭thinking:completion=325, reasoning=207 (占比63.7%)
关闭thinking后,reasoning token不但没消失,占比还一模一样。这个参数的行为可能和文档描述的不一致,也可能视觉模型暂时还不支持这个参数。 换句话说,你目前没有可靠的办法关掉thinking模式。
1分钱9张图,这个价格什么概念
V4 Flash Vision Exp的定价和V4 Flash纯文本版一致。图片按尺寸折算成token后统一计费,没有多模态加价。一张图最多384个token——不管原图多大,都会缩放到800×800左右再计算。
高峰时段(北京时间9:00-12:00、14:00-18:00),缓存未命中输入价3元/百万token。384个token就是0.001152元,约0.12分钱。1分钱能看大概9张图。低谷时段直接打五折。
拉个竞品对比感受一下(竞品数据来自各模型官方定价页,8月22日查询):
| 模型 | 每张图token消耗 | 1000张图成本 |
|---|---|---|
| Claude Sonnet 4.6 | ~1334 | ~29元 |
| GPT-5.4 Vision | ~765 | ~13.8元 |
| Gemini 3.1 Pro | ~258 | ~3.6元 |
| V4 Flash Vision(高峰) | 384 | 1.15元 |
| V4 Flash Vision(低谷) | 384 | 0.58元 |
同样是看1000张图,Claude收你29块,DeepSeek收你1块1,差了25倍。 这不是数字游戏,是产品设计上的根本差异。29块一张图你会纠结"这一步到底要不要让AI看图",1块1一张图你可以让Agent每跑一步都截个屏分析。做UI自动化测试的同学应该能理解这个区别——截图量大到一定程度,成本就是决定"做不做"的那条线。
但有个前提:384 token的天花板意味着分辨率上限就是800×800。看个大致的页面布局、识别图表趋势、读取报错截图里的关键信息没问题。但如果你需要识别小字体、精细的UI细节,这个分辨率可能不够用。800×800是1995年Super VGA级别的分辨率,做精细OCR的同学要失望了。
实际能干什么
说了这么多局限,总结一下这个模型实际能用的场景:
能用的:
- 截图大致的内容理解(页面布局、大致文字、图表趋势)
- 配合base64做Agent看图流程
- 成本极低的高频截图分析场景
用不了或要小心的:
- 精细OCR(分辨率硬顶800×800,小字看不清)
- 阿里/字节CDN图片的URL直传(防盗链会拒,需转base64)
- 符号和emoji识别(基本乱码)
- 数手指(经典问题,别试了)
- 精确颜色判断(有色差)
API接入速查
如果你之前接过DeepSeek的文字API,改动量非常小。把model名换掉,content从纯字符串改成数组格式:
from openai import OpenAI
import base64
client = OpenAI(
api_key="sk-xxx",
base_url="https://api.deepseek.com"
)
# 图片走base64(阿里/字节CDN图片URL会因防盗链失败)
with open("screenshot.png", "rb") as f:
b64 = base64.b64encode(f.read()).decode("utf-8")
response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp", # -exp后缀不能丢
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "这个页面有什么UI问题?"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{b64}"}}
]
}]
)
print(response.choices[0].message.content)
几个注意点:
- 图片只能放user消息里:放system或assistant会报400
- 格式支持:JPEG、PNG、GIF、WebP都支持,校验的是文件实际内容而不是后缀名
- 单次上限:单个请求最多600张图,单张最大32MB
另外这次同步上线了Files API,免费。先上传图片拿到file_id,后续请求直接用ID引用,同一张图不用重复传输。对Agent反复看同一张设计稿的场景比较实用。
局限性说清楚
最后泼点冷水。
分辨率硬顶800×800:精细的小字、密集的表格数据、高分辨率代码截图可能看不清。目前只能通过crop+zoom的Agent工作流来缓解。
Exp后缀意味着实验版:模型名、行为、甚至API格式都可能变。别直接放生产环境,先在自己的测试流程里跑跑看。DeepSeek之前V3.2也是先出Exp版,两个月后才升正式版。
部分CDN图片URL不可用:阿里CDN(alicdn)和字节CDN(bytetos/bytescm)因防盗链机制会拒绝DeepSeek服务器的下载请求,需要先把图片下载到本地再走base64传入。百度和其他公共图片源的URL可以正常使用。
thinking模式没有可靠的关闭方式:reasoning_effort: none参数实测没生效,reasoning token照样消耗。好消息是没有100%吃光输出的情况,但会额外花token。
我自己的判断是:DeepSeek这一步补的是Agent系统最基础的感知入口。让模型能"看到",是后续一切自动化工作流的前提。价格足够便宜,base64接入也不算麻烦,适合高频、低精度的截图分析场景。但精细识别和URL直传这两个短板,得等后续版本解决。
就写到这吧,后面如果有Harness适配的消息再聊。