2026 年 9 月 10 日,DeepSeek 发布了新架构家族中尺寸最小的成员——DeepSeek-V4.1-Flash。它并不是一次常规的版本迭代,而是一次架构级的重新设计:552B 总参数 MoE、全新的 Causal-Encoder-Decoder(CED)非对称架构、输入侧仅激活 8B 而输出侧激活 16B,配合原生多模态视觉理解与 1M 上下文、384K 最大输出,把一个『小尺寸』成员做成了全面超越 V4 Pro 的旗舰级能力。本文聚焦多模态视觉理解落地:从一张图如何送进模型,到长文档多图规划、视觉 Agent 多轮推理,再到思考强度档位与 token 预算控制。你将拿到可以直接跑的代码、能进生产环境的参数选型表,以及那些只有踩过坑才知道的工程细节。本文分两段发布,这是第 1/2 段,先把架构、KV Cache、上下文与视觉输入通道讲透,并跑通第一个视觉理解请求。

CED 非对称架构拆解:552B MoE 为何输入侧只激活 8B、输出侧激活 16B

要理解 V4.1-Flash 的设计,先要理解 Causal-Encoder-Decoder(CED) 这个名字背后的分工哲学。传统 Transformer 是『统一注意力』:无论你在读入一段上下文,还是在生成下一个 token,用的都是同一套参数与同一套因果掩码。而 CED 把『读』与『写』当成两件性质完全不同的事来建模。

编码侧(Encoder,输入侧)的任务是对输入做理解:把文本 token、图片 patch、图文交错序列编码成语义表示。理解是『并行、双向、可反复回看』的过程——看到第 100 个 token 时回头修正对第 3 个 token 的理解,是很自然的事。因此 CED 的编码路径采用了非因果(双向)注意力,允许信息在输入序列内自由流动,代价是这部分不需要做自回归采样,算力可以用极低的激活量完成。V4.1-Flash 在这里只激活 8B 参数

解码侧(Decoder,输出侧)的任务是生成:图像理解后的答案、Agent 的工具调用参数、长文档摘要的正文。生成是『串行、因果、逐步累积』的过程,每一步都要基于全部历史做决策,质量直接决定最终输出,因此需要更高的参数容量与更强的推理能力。V4.1-Flash 在输出侧激活 16B 参数,正好是输入侧的 2 倍。

这个 1:2 的非对称激活不是拍脑袋的数字,而是对真实工作负载的算计:在多模态场景里,一张 1024×1024 的图片经视觉编码后可能产生上千个视觉 token,一次请求的输入 token 数往往是输出的几倍到几十倍。如果输入侧也按 16B 激活,绝大部分算力会浪费在『已经被理解过的内容』上。把输入侧压到 8B、把容量倾斜给输出侧,等价于让『便宜的阅读』去处理海量上下文,让『昂贵的写作』集中火力生成高质量结果。

对工程实践的直接影响有三点:

  • 视觉输入的成本被结构性压低。多图长文档这类输入主导型任务,单位 token 的边际算力成本显著低于输出主导型任务,这让『把整本 PDF 拆成图片丢进去』第一次具备了经济性。
  • 输出侧仍是预算大头。16B 激活意味着生成长文本、长链路 Agent 轨迹仍然贵,所以截断策略、max_tokens 规划比以往更重要。
  • MoE 总参 552B 保证了知识容量,激活量小不等于能力弱。稀疏激活让模型在推理时只调动与当前 token 相关的专家,这也是它能以 Flash 的价位提供 Pro 级能力的根本原因。

需要强调的是,552B 是总参数,8B/16B 是激活参数,两者是『仓库大小』与『单次取货量』的关系。这也是为什么官方能在 Hugging Face 上放出权重(deepseek-ai/DeepSeek-V4.1-Flash)——总参规模决定了显存门槛,激活规模决定了对算力集群的需求形态,两者共同决定了它是否适合本地化部署。

从 V4 Pro 到 V4.1-Flash:新预训练方法 + 更大规模 RL 后训练带来的能力跃迁

按常识,家族里的『小尺寸成员』应该是能力的下限。但 V4.1-Flash 给出的官方基准是反直觉的:它在多个维度上全面超越了上一代旗舰 V4 Pro。原因是两条技术路线同时推进——新的预训练方法更大规模的 RL 后训练

先看硬指标。官方公布的数据里:

  • GPQA Diamond 90.9——博士级科学问答,接近该基准的饱和区间;
  • Codeforces 评级 3471——竞赛编程,属于顶尖选手区间;
  • MathArena Apex 65.6——高难度数学推理;
  • Terminal-Bench 2.1 得分 90.6,而 V4 Pro 对应为 87.9;
  • CyberGym 88.1,而 V4 Pro 对应为 83.3。

这组数字里有两点值得工程同学注意。第一,GPQA Diamond 与 Codeforces 这类『硬推理』指标的抬升,说明提升不是靠数据记忆堆出来的,而是推理能力本身的进步,这类能力会直接迁移到多模态视觉推理任务上——比如图表数值推断、工程图纸判读。第二,Terminal-Bench 2.1 与 CyberGym 这两个 Agent/安全类基准分别提升了 2.7 和 4.8 个点,说明 Agent 长链路执行能力被显著强化,这正是视觉 Agent 场景最需要的底层素质。

官方发布帖里另有四项 Agent 基准:Terminal-Bench 3.0 得分 30.0、DeepSWE v1.1 得分 74.2、CyberGym 88.1、Automation-Bench 54.8。其中 Terminal-Bench 3.0 与 DeepSWE 都是强过程性任务——模型必须连续多步操作环境、根据反馈修正计划。把这类能力和视觉输入结合起来,就是『看一眼截图 → 决定下一步操作 → 执行 → 再看新截图』的闭环,这正是本文后半段要构建的视觉 Agent 形态。

还有一个容易被忽略的事实:北京时间 2026-09-14 12:00 起,deepseek-v4-pro 的请求全部路由到 V4.1-Flash,并按 Flash 价计费,直到 V4.1-Pro 上线。这意味着如果你现在线上跑的是 V4 Pro,你已经在不知不觉中被升级到了 V4.1-Flash,而且账单更便宜。这是做基准回归(regression test)的最佳窗口——用真实流量验证『小尺寸成员全面超越上一代旗舰』这个论断在你自己的业务分布上是否成立。

结论很直接:不要再用『参数尺寸』来预判模型能力。V4.1-Flash 是新预训练方法与大规摸 RL 后训练的产物,它的能力上限由数据和训练方法决定,而不是由激活参数量决定。

KV Cache 压缩四重奏:890 bytes/token、HBM 降至 1/4、SSD 降至 1/8 是怎么做到的

对做长上下文与多模态推理的人来说,KV Cache 才是真正决定『能不能上线』的东西,而不是跑分。V4.1-Flash 在这方面的官方数据非常激进:

  • 每 token KV 体积约 890 bytes,而 V4 Flash 约 3514 bytes
  • HBM 需求降至上一代的 1/4
  • SSD 存储需求降至 1/8
  • 相比初代 DeepSeek,KV Cache 整体缩小约 437 倍

先算一下这个数字意味着什么。以 1M 上下文为例,V4 Flash 的每 token 3514 bytes 意味着单序列 KV 约 3.5GB 量级;而 V4.1-Flash 的 890 bytes 把它压到了约 0.89GB 量级。对一个并发 2500 的 API 服务来说,这直接决定了同样的 HBM 能承载多少条长上下文会话。官方说 HBM 需求降到 1/4,与 890/3514 ≈ 0.253 的比值高度吻合——这不是营销话术,是同一个物理量在不同维度上的表述。

『四重奏』可以理解为四个方向的压缩协同作用:

  1. 架构层的非对称设计。CED 的编码侧与解码侧承担不同职责,KV 的存储结构可以按路径分别优化,不必为一套统一注意力付出全量缓存代价。
  2. 注意力结构的稀疏化与低秩化。长上下文场景下并非所有历史 token 都需要全精度保留,低秩投影与选择性保留让每层每头的有效缓存维度下降。
  3. 量化与混合精度存储。把 KV 以更低比特存放,配合关键层的精度保护,是 bytes/token 从千级降到百级的关键。
  4. 分层缓存与 SSD 卸载。HBM 放热数据、SSD 放冷数据,SSD 需求降到 1/8 说明单位 token 落盘体积被压得更狠,这对超长会话的经济性至关重要。

落到工程上,最重要的含义是长上下文的成本结构被改写了。过去 1M 上下文的问题是『能开但开不起』——KV 显存吃满、并发一上来就 OOM。现在 HBM 需求 1/4、SSD 1/8,意味着你可以用更少的机器跑同样并发,或者用同样的机器跑更长的会话。结合定价里缓存命中输入空闲仅 0.02 元/百万 tokens(高峰 0.04 元),把稳定不变的长文档放在前缀里命中缓存,是长文档视觉理解最省钱的做法。

另外要记住 KV Cache 的一个隐性成本:它随会话长度线性增长。即使 890 bytes/token 已经很小,一个持续 10 小时的多轮视觉 Agent 会话仍会累积可观的缓存。工程上应主动做会话切分,把已完成的子任务从活跃上下文中剥离,只保留摘要。

1M 上下文 + 384K 最大输出:长文档视觉理解与长链路 Agent 的窗口规划策略

V4.1-Flash 提供 1M tokens 上下文384K tokens 最大输出。这两个数字必须配套理解,因为它们对应两类完全不同的任务。

1M 上下文解决的是『看得全』。在多图长文档场景里,一本几百页的技术手册、一份带图表的财报、一整套 UI 设计稿,都可以整体送入而不做预切分。这消除了过去最常见的精度损失源——因为切分而丢掉跨页、跨图的关联信息。图片链接、base64 与 Files API 三种通道都吃这 1M 的窗口,区别只在传输方式。

384K 最大输出解决的是『写得完』。视觉 Agent 的多轮规划会产生大量中间文本:思考链、工具调用参数、观察结果回填、计划修订。如果输出上限只有 8K,一个复杂任务跑几轮就被截断。384K 让单次调用可以承载超长的 Agent 轨迹,或者一次性输出整本书的结构化解析结果(比如把 200 页扫描件转成结构化 JSON)。

但『窗口大』不等于『随便用』。给出三条可执行的窗口规划策略:

  • 前缀固定化。把不随对话变化的资料(长文档、参考图集、系统提示)放在消息序列最前面,保持前缀稳定,最大化缓存命中率。官方定价里缓存未命中输入空闲 1 元/百万 tokens、命中仅 0.02 元,相差 50 倍,前缀设计直接决定成本量级。
  • 分层截断。不要粗暴按字符数截断,而应按语义单元截断:先保留系统指令与任务定义(不可截),再保留最近 N 轮完整对话,中间历史压缩为摘要,最后才考虑丢弃旧的图片。图片一旦被丢弃就无法恢复上下文关联,优先级最低。
  • 输出预算显式声明。Agent 场景下把 max_tokens 按任务类型分档:单步工具调用给小值(如 2K),最终汇总给大值(如 64K),整文档结构化输出才给到几十万级。不声明输出预算,模型可能为了『想清楚』而写出远超预期的思考文本。

视觉 Agent 尤其要注意:每一轮截图输入都会占用输入窗口,多轮累积后输入侧增长极快。建议在每 N 轮之后把历史截图替换为文本描述摘要,把窗口还回来。这既能控制成本,也能避免模型在过多视觉细节中失去主线。

原生多模态视觉理解三通道:图片链接、base64 与 Files API 的选型与代价

V4.1-Flash 原生支持多模态视觉理解,官方提供三种图片输入通道:图片链接(URL)、base64 内联、Files API。三者能力等价,但延迟、带宽、缓存与可复用性差异巨大。下表是工程选型的核心参考:

通道延迟特征带宽/体积缓存命中可复用性典型场景
图片链接 URL需服务端拉取,受源站影响,首包延迟不确定请求体极小若 URL 稳定且内容不变,前缀可稳定命中高,同一 URL 可跨请求复用图片已在 CDN/对象存储,网关批量处理
base64 内联无额外网络往返,最快请求体膨胀约 33%,受单请求体积上限约束每次内容相同才命中,重复调用成本高低,必须随请求重复传输单图快速验证、小图、临时图片
Files API上传一次,后续引用走服务端,稳定低延迟上传带宽一次性付出文件 ID 稳定,利于前缀缓存最高,一次上传多轮多次引用多轮视觉 Agent、反复引用的长文档图集

选型建议可以直接落成三条规则:

  • 单次一问一答、图片很小(几十 KB)→ base64。省一次网络往返,代码最简单。
  • 图片已在公网可访问、且同一张图会被多个请求引用 → URL。请求体最小,带宽成本最低。
  • 多轮视觉 Agent、需要反复引用同一批图 → Files API。这是唯一能在多轮对话中把图片当作『稳定前缀资产』的通道,配合缓存命中价 0.02 元/百万 tokens,长会话成本能压到极低。

两个真实的坑。第一,base64 在小图上看似方便,但多轮重复发送会让输入 token 重复计费,且膨胀后的请求体可能触碰网关的体积上限,图片一大就会 413。第二,URL 通道的稳定性依赖源站,如果图片来自会过期的签名 URL,缓存前缀会被破坏,甚至会因拉取失败导致整次请求失败;生产环境应使用长期有效的对象存储地址,或在拉取层做缓存代理。此外,不管走哪个通道,图片分辨率直接影响视觉 token 数量,进而影响输入成本与窗口占用,高精度 OCR 与整体场景理解对分辨率的需求不同,应按任务下采样。

思考模式三档 low/high/max:视觉任务的思考强度与成本、延迟权衡

V4.1-Flash 支持非思考模式与思考模式,其中思考模式为默认,并提供 low / high / max 三档思考强度。这是视觉任务里最容易被滥用的开关——很多人默认挂在 max 档,结果成本和延迟都失控。

三档差异的本质是模型在给出最终答案前的内部推理深度。档位越高,推理链越长、对中间假设的自我校验越多、越可能推翻初稿重来;档位越低,越倾向于直觉式快速作答。对视觉任务,可按『视觉—语言—推理』三层难度来选档:

  • low:OCR、图片描述、简单分类。这类任务答案几乎完全由视觉输入决定,不需要多步推理。用 low 档可以在延迟与成本上拿到最大收益,且质量几乎无损。
  • high:图表问答、需要读数的示意图、图文一致性校验。任务需要『先读图、再计算、再核对』,属于中等推理深度。high 是这一档的最佳平衡点,也是多模态业务的默认推荐值。
  • max:复杂视觉推理。例如多图跨页对比、工程图纸的多约束判断、视觉 Agent 中需要综合截图与历史动作规划下一步、以及需要与代码/数学推理耦合的视觉任务。max 档的思考文本会显著变长,务必配合输出预算与超时控制。

一个实用技巧是分级降档:Agent 的常规步骤用 high,只有当某一步反复失败或需要全局重规划时才升到 max 档重试。这样既保住了困难步骤的成功率,又不会让每一步都付 max 的代价。另外要记住官方明确的一条限制:FIM(Fill-in-the-Middle)仅在非思考模式下可用,如果业务里用了前缀续写或 FIM 做代码补全,需要为非思考模式单独留一条链路。

关键参数速查:API 模型名 deepseek-flash、并发 2500 与旧名兼容路由

动手之前先把参数对齐,否则最容易在模型名上翻车。当前有效参数如下:

  • API 模型名:deepseek-flash。这是唯一推荐的稳定标识。
  • 并发限制:2500。这是一个相当高的并发额度,但要注意它约束的是同时进行的请求数,长会话并不会因为并发高就变便宜。
  • 旧名兼容路由:deepseek-v4-flash 与 deepseek-v4-flash-vision-exp 已下线,但官方保留了临时兼容路由,把这两个旧名指向 V4.1-Flash。这给了你平滑迁移的缓冲期,但不应当作长期方案——请尽快在配置中心把模型名统一为 deepseek-flash。
  • deepseek-v4-pro 的流量自 2026-09-14 12:00 起被路由到 V4.1-Flash 并按 Flash 价计费,直至 V4.1-Pro 上线。对账与容量规划要把这一变化考虑进去。
  • 支持的接口面:JSON Output、Tool Calls、Responses API、Anthropic API、对话前缀续写,以及仅在非思考模式下可用的 FIM。

并发设计上,2500 的限制配上 890 bytes/token 的 KV 体积,意味着单节点能安全承载的长会话数远高于上一代;但请求侧仍要自己做排队与优先级:把低价值的批量图片解析放到空闲时段(高峰为周一至五 9:00–12:00、14:00–18:00,空闲价为高峰一半),关键交互路径保留高优先级配额。定价上,缓存命中的空闲输入仅 0.02 元/百万 tokens,未命中输入空闲 1 元、输出空闲 4 元;相比 V4 Flash,缓存命中降价 60%、未命中降价约 33.3%、输出降价约 11.1%。把可复用内容前缀化、把思考强度按需分档,这两招基本就决定了绝大多数业务的账单走向。

最小可用代码:用 Responses API 把一张图送进 deepseek-flash

下面给出三段可直接运行的代码。第一段是最小可用示例:用 base64 通道把一张本地图片送进 deepseek-flash,并指定思考强度。

import base64
import json
from openai import OpenAI

client = OpenAI(
    api_key="your-deepseek-api-key",
    base_url="https://api.deepseek.com",
)

# 1) 读取本地图片并转为 base64(data URL 形式)
def image_to_data_url(path: str) -> str:
    with open(path, "rb") as f:
        raw = f.read()
    b64 = base64.b64encode(raw).decode("utf-8")
    return f"data:image/png;base64,{b64}"

resp = client.chat.completions.create(
    model="deepseek-flash",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "请描述这张图片的主要内容,并列出其中的关键文本。"},
                {
                    "type": "image_url",
                    "image_url": {"url": image_to_data_url("demo.png")},
                },
            ],
        }
    ],
    # 思考模式(默认开启)与思考强度:low / high / max
    extra_body={
        "thinking": {"type": "enabled", "budget": "high"}
    },
    max_tokens=2048,
)

print(resp.choices[0].message.content)

第二段用 Responses API 走图片链接通道,适合图片已在对象存储或 CDN 上的场景,请求体最小、前缀最容易稳定命中缓存。

import json
from openai import OpenAI

client = OpenAI(
    api_key="your-deepseek-api-key",
    base_url="https://api.deepseek.com",
)

resp = client.responses.create(
    model="deepseek-flash",
    input=[
        {
            "role": "user",
            "content": [
                {"type": "input_text", "text": "这张图表说明了什么趋势?请给出读数并计算同比变化。"},
                {
                    "type": "input_image",
                    "image_url": "https://cdn.example.com/report/q3-revenue.png",
                },
            ],
        }
    ],
    # 思考强度:图表读数+计算属于中等推理,选 high
    extra_body={"thinking": {"type": "enabled", "budget": "high"}},
    max_output_tokens=8192,
)

print(resp.output_text)

第三段演示多轮视觉 Agent 的骨架:用 Files API 上传一次图片,拿到文件 ID 后在多轮里反复引用,从而把图片变成稳定的缓存前缀资产;同时把低难度步骤降档到 low、困难步骤升档到 max。

import json
from openai import OpenAI

client = OpenAI(
    api_key="your-deepseek-api-key",
    base_url="https://api.deepseek.com",
)

# 1) 上传图片,得到一个可反复引用的文件 ID
with open("screenshot.png", "rb") as f:
    upload = client.files.create(file=f, purpose="vision")
file_id = upload.id
print("file_id =", file_id)

# 2) 多轮视觉 Agent:同一张图 + 历史动作摘要
messages = [
    {"role": "system", "content": "你是一个视觉 Agent,根据截图规划下一步操作。"},
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "这是当前界面截图,请给出下一步操作。"},
            {"type": "image", "file_id": file_id},
        ],
    },
]

for step in range(3):
    budget = "low" if step < 2 else "max"  # 常规步骤 low,困难重规划升 max
    resp = client.chat.completions.create(
        model="deepseek-flash",
        messages=messages,
        extra_body={"thinking": {"type": "enabled", "budget": budget}},
        tools=[{"type": "function", "function": {"name": "click",
                "parameters": {"type": "object",
                               "properties": {"x": {"type": "integer"},
                                              "y": {"type": "integer"}}}}],
        max_tokens=4096,
    )
    msg = resp.choices[0].message
    messages.append(msg)
    # 这里应执行工具调用并回填 observation,示例中省略
    print(step, budget, msg.content or msg.tool_calls)

# 3) 会话结束后清理文件,避免长期占用
client.files.delete(upload.id)

跑通这三段代码后,你已经覆盖了视觉输入的三条通道与思考强度的基本控制。下一段将深入视觉 Agent 的完整闭环:多轮截图与工具调用如何编排、长文档多图如何做预算规划、缓存命中如何靠前缀设计拿到 50 倍成本差,以及 2500 并发下的限流与降级实战。

上一段我们已经打通了图片输入的三条通道(链接、base64、Files API),并剖析了 CED 非对称架构与 1M tokens 上下文背后的工程逻辑。这一段落把镜头拉远:从单纯的“看图问答”升级到“把图片变成下游可消费的结构、把视觉能力嵌进 Agent 工具链、把成本压到可控区间”,最终形成一套可落地的生产级方案。

结构化视觉抽取:JSON Output 与 Tool Calls 在图片信息提取中的组合用法

多模态落地的第一道坎不是“能不能看懂”,而是“看懂之后能不能被程序稳定消费”。视觉信息天生是非结构化的,而下游业务要的是字段、枚举、金额、日期。DeepSeek-V4.1-Flash 原生支持 JSON OutputTool Calls,这两者组合起来才是视觉抽取的正确姿势:JSON Output 负责约束输出形态,让模型在 schema 边界内逐字段生成;Tool Calls 负责串联外部能力,把读不准的字段(汇率换算、商品库匹配、发票查验)交出去。

工程上建议采用“两段式”编排:第一段用 JSON Output 对图片做纯视觉字段抽取,不引入任何外部依赖,保证可复现;第二段把第一段结果作为工具调用参数,触发校验与补全。这样即使外部工具超时,你手里仍有一份完整的原始抽取结果,便于重试与审计。下面的代码演示了把一张发票图片转成严格 schema 的结构,并在字段置信度不足时触发工具校验。

from openai import OpenAI
import json

client = OpenAI(
    api_key="your-deepseek-api-key",
    base_url="https://api.deepseek.com"
)

EXTRACT_SCHEMA = {
    "type": "object",
    "properties": {
        "invoice_no": {"type": "string"},
        "date": {"type": "string"},
        "total_amount": {"type": "number"},
        "currency": {"type": "string"},
        "line_items": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "name": {"type": "string"},
                    "qty": {"type": "number"},
                    "price": {"type": "number"}
                },
                "required": ["name", "qty", "price"]
            }
        }
    },
    "required": ["invoice_no", "date", "total_amount", "currency"]
}

tools = [{
    "type": "function",
    "function": {
        "name": "verify_invoice",
        "description": "调用发票查验平台核验发票真伪与金额",
        "parameters": {
            "type": "object",
            "properties": {
                "invoice_no": {"type": "string"},
                "total_amount": {"type": "number"}
            },
            "required": ["invoice_no", "total_amount"]
        }
    }
}]

resp = client.chat.completions.create(
    model="deepseek-flash",
    messages=[{
        "role": "user",
        "content": [
            {"type": "image_url",
             "image_url": {"url": "https://example.com/invoice.png"}},
            {"type": "text",
             "text": "请严格按 schema 抽取发票字段。若关键字段无法确认,调用 verify_invoice 工具核验。"}
        ]
    }],
    response_format={"type": "json_object"},
    tools=tools,
    tool_choice="auto"
)
print(resp.choices[0].message)

实践中几个细节值得强调:一是 schema 越窄越稳,避免开放式 object,尽量用枚举与 required 收紧;二是金额、日期这类关键字段建议让模型同时输出一个 confidence 字段,低于阈值就交给工具复验,而不是盲目相信;三是思考模式下模型会先推理再输出,容易把思维链混进正文,做抽取时推荐切到非思考模式以获得更干净的结构化结果。当字段多、图片杂时,把大 schema 拆成多次小抽取再合并,往往比一次性大抽取更稳定。

FIM 与对话前缀续写:非思考模式下的视觉补全与可控生成边界

视觉场景里有两类“受控生成”诉求:一类是补全——给定图片和半截文本,让模型接续;另一类是格式约束——强制模型从既定前缀开始输出,防止跑偏。V4.1-Flash 提供了两种手段:对话前缀续写FIM(Fill-In-the-Middle)。这里有一个必须牢记的限制:FIM 仅支持非思考模式。因为思考模式会先生成推理轨迹再产出答案,而 FIM 要求模型严格从中间缺口续写,两者在生成语义上互斥。

对话前缀续写本质是给 assistant 角色预置一段开头,模型只能往后写。在视觉场景中,这非常适合做格式控制:比如要求模型输出 Markdown 表格,你可以预置表头,模型自动填行;比如要求输出固定 JSON,你可以预置 {"result": " 让模型从引号内续写。而 FIM 更适合代码与文档补全:截图里有一张表结构图,你想补全注解或建表语句,把 before/after 两端给模型,它填补中间。二者边界分明——前缀续写约束的是“起点”,FIM 约束的是“缺口”。在工程中,如果任务涉及图片且需要严格格式,优先用前缀续写 + 非思考模式;如果涉及代码补全且有明确上下文缺口,用 FIM;一旦打开思考模式,就要放弃 FIM。

Anthropic API 兼容接入:把已有视觉 Agent 迁移到 V4.1-Flash 的改造清单

不少团队的视觉 Agent 是围绕 Anthropic 风格接口搭建的,而 V4.1-Flash 提供了 Anthropic API 兼容,迁移成本因此大幅下降。但兼容不等于零改动,下面这张表列出了必改项与建议项。

改造项Anthropic 风格写法迁移到 V4.1-Flash 的写法/说明
模型名claude-* 系列统一改为 deepseek-flash;旧名 deepseek-v4-flash / deepseek-v4-flash-vision-exp 已下线,仅保留临时兼容路由,务必尽快切换
图片入参source.type=base64 / url支持图片链接、base64 与 Files API 三种通道,长会话图片建议走 Files API 以复用
思考模式thinking budget映射为 思考强度 low/high/max 三档;默认开思考,抽取类任务可切非思考
工具调用tool_use / tool_result映射到 Tool Calls;注意并发上限 2500,高并发场景需做排队
上下文200K 级V4.1-Flash 上下文 1M tokens、最大输出 384K tokens,可承载整本图册或长截图流
定价预期按 Anthropic 计价按 Flash 计价,且 2026-09-14 12:00 起 deepseek-v4-pro 请求全部路由到 V4.1-Flash 并按 Flash 价计费,直到 V4.1-Pro 上线

迁移时最容易踩的坑是图片格式与尺寸假设。Anthropic 对图片有单边分辨率与体量限制,迁移后要按 V4.1-Flash 的入参方式重新校验;同时思考模式的默认开启会让原本“直接回答”的 prompt 变得啰嗦,建议在 system 里显式声明是否思考,并对工具编排做一次回归测试。总体而言,接口层兼容让你可以先把请求跑通,再逐项对齐语义,迁移窗口可以压缩到数天。

视觉 Agent 实战:用 Terminal-Bench 3.0 30.0、DeepSWE v1.1 74.2、Automation-Bench 54.8 反推设计取舍

官方发布帖给出了四项 Agent 基准:Terminal-Bench 3.0 得分 30.0、DeepSWE v1.1 得分 74.2、CyberGym 88.1、Automation-Bench 54.8。这组数字对设计视觉 Agent 极有参考价值:Terminal-Bench 3.0 只有 30.0,说明长程终端操作链路仍是短板,Agent 很容易在几十步操作后偏离目标;DeepSWE v1.1 达到 74.2,说明代码级任务相对成熟;Automation-Bench 54.8 处在中位,代表日常自动化还有很大提升空间;CyberGym 88.1 则说明安全类任务表现突出。

据此反推设计取舍:终端类视觉 Agent 不要追求“一步到位”,而要把任务拆成短链路 + 高频校验,每一步都让模型基于最新截图重新决策,避免长期依赖历史动作;截图回传要做差分压缩,只传变化区域,把 1M 上下文留给真正需要全量信息的场景;失败重试要区分“可重试”(超时、工具报错)与“不可重试”(权限拒绝、目标不存在),对前者用指数退避,对后者直接上报人工。在代码类任务上可以更激进,让 Agent 自主完成较长的工具链;在长终端任务上则应引入外部状态机兜底,模型只负责在关键节点做视觉判断。下面是带截图回传与重试的 Agent 循环骨架。

import time, base64
from openai import OpenAI

client = OpenAI(api_key="your-deepseek-api-key",
                base_url="https://api.deepseek.com")

def call_model(history, image_b64, thinking="low"):
    return client.chat.completions.create(
        model="deepseek-flash",
        messages=history + [{
            "role": "user",
            "content": [
                {"type": "image_url",
                 "image_url": {"url": f"data:image/png;base64,{image_b64}"}},
                {"type": "text", "text": "根据当前截图决定下一步操作,输出 JSON 动作。"}
            ]
        }],
        response_format={"type": "json_object"},
        extra_body={"thinking": {"effort": thinking}}
    )

def run_visual_agent(env, max_steps=15):
    history = []
    for step in range(max_steps):
        shot = env.screenshot()
        b64 = base64.b64encode(shot).decode()
        for attempt in range(3):
            try:
                resp = call_model(history, b64)
                action = resp.choices[0].message.content
                break
            except Exception as e:
                if attempt == 2:
                    raise
                time.sleep(2 ** attempt)  # 指数退避
        history.append({"role": "assistant", "content": action})
        if env.done(action):
            break
    return history

注意这里用 thinking effort low:视觉 Agent 每一步都要快速决策,high/max 会显著拖慢循环;只有遇到歧义帧时才临时升档。截图 base64 会迅速吃掉上下文,1M 虽然大,但建议仍然只保留最近若干帧 + 一份压缩摘要。

评测对照:Terminal-Bench 2.1 90.6 与 CyberGym 88.1 相对 V4 Pro 的差距解读

官方基准中,V4.1-Flash 在 Terminal-Bench 2.1 得分 90.6CyberGym 88.1,而 V4 Pro 对应为 Terminal-Bench 2.1 87.9 与 CyberGym 83.3。这意味着这个家族里最小尺寸的成员,在两个硬指标上分别领先 2.7 和 4.8 分。注意版本差异:Agent 帖里的 Terminal-Bench 3.0 是更难的新版本,得分 30.0,与 2.1 的 90.6 不可直接比较——看到“30 分”不要误以为能力退步,这是任务难度升级所致。

评测复现时有三个要点:一是版本对齐,务必确认跑的是 2.1 还是 3.0,用错版本结论会完全反转;二是采样与重试策略,官方分数通常有固定重试次数,自测时若重试次数不同,波动可能超过 3 分;三是随机性,思考强度、温度、是否开思考都会影响结果,建议固定参数多次运行取均值。从更大的图景看,V4.1-Flash 采用了新预训练方法 + 更大规模 RL 后训练,官方称基准全面超越 V4 Pro,这组 Terminal-Bench 2.1 与 CyberGym 的对照正是佐证。对工程团队而言,结论是:不要因为它是“最小尺寸”就降低预期,在很多硬基准上它反而是当前家族最强的选择。

工程坑与解法:图片体积、缓存命中与高峰定价下的成本控制

视觉应用的账单大头往往不是输出,而是输入图片的 token 化加上高峰时段的溢价。先把定价摆清楚(每百万 tokens,北京时间 2026-09-10 12:00 生效;高峰为周一至五 9:00-12:00、14:00-18:00,空闲为高峰一半):

计费项空闲价(元/百万 tokens)高峰价(元/百万 tokens)
缓存命中输入0.020.04
缓存未命中输入12
输出48

相对 V4 Flash,缓存命中降价 60%、未命中降价约 33.3%、输出降价约 11.1%。但价格低不等于账单低,关键在于命中率。缓存命中与未命中的输入价差高达 50 倍(空闲 0.02 vs 1 元),所以把稳定的系统提示、工具定义、图片复用前缀放在缓存前段,是降本第一优先级。图片方面,长会话应优先用 Files API 引用同一图片,避免每次重传 base64——同一张图重复计入未命中输入,成本会迅速累积。

与 KV Cache 相关的另一组事实值得注意:V4.1-Flash 每 token 的 KV Cache 体积约 890 bytes,V4 Flash 约 3514 bytes;HBM 需求降至上一代 1/4、SSD 存储降至 1/8,相比初代 DeepSeek 缩小约 437 倍。这意味着自建部署时显存与存储压力大幅缓解,长上下文的边际成本显著下降。实操建议:把批处理任务排到空闲时段执行,直接砍半;把输出限制在必要长度并尽量走 JSON,减少无效 token;对高频重复的抽取任务,先做图片去重再进模型;监控缓存命中率,低于预期就检查前缀是否被动态内容打断。

部署与生态落地:Hugging Face 权重、超算互联网一键 API、WorkBuddy 与 OpenCode 接入

V4.1-Flash 已于 2026-09-10 发布并开源,权重在 Hugging Face 放出,仓库为 deepseek-ai/DeepSeek-V4.1-Flash,附有技术报告,可直接下载做二次开发与本地部署。对没有 GPU 集群的团队,国家超算互联网已于 2026-09-11 上线 DeepSeek V4.1 Flash 模型 API 服务与权重文件,开发者既能一键调用 API,也能下载权重开展本地部署,这是一条“零基建”起步路径。

生态侧,官方合作伙伴 WorkBuddy(含 CodeBuddy)与 OpenCode 已全量接入,可直接在这些工具内选择 V4.1-Flash;官方表示将与开源社区密切合作推进 V4.1-Flash 的推理支持并探索更多部署选项,面向 2000 GPU + 存储集群的大规模部署可与官方洽谈合作。需要提醒的是,旧模型名 deepseek-v4-flash 与 deepseek-v4-flash-vision-exp 已停止服务,仅保留临时兼容路由指向 V4.1-Flash,长期使用请统一到 deepseek-flash。C 端产品也已把原“快速响应/专业咨询/图像识别”三个对话入口整合为单一交互界面,说明多模态不再是独立入口,而是默认能力。

总结与最佳实践

把全文压缩成一份可执行清单:

  • 模型统一:一律使用 deepseek-flash,base_url 为 https://api.deepseek.com;立即停用 deepseek-v4-flash 与 deepseek-v4-flash-vision-exp。
  • 抽取类任务:JSON Output 约束 schema,字段越窄越稳;关键字段加 confidence,低于阈值走 Tool Calls 复验。
  • 受控生成:要格式控制用对话前缀续写;要代码/文本补全用 FIM,且 FIM 仅限非思考模式
  • 模式选择:默认思考,强度 low/high/max 按需;抽取与高频 Agent 循环用 low 或非思考,复杂推理再升档。
  • 上下文管理:1M 上下文、384K 最大输出是上限而非目标;截图做差分压缩,长会话图片走 Files API 复用。
  • Agent 设计:参考 Terminal-Bench 3.0 30.0、DeepSWE v1.1 74.2、Automation-Bench 54.8,长终端任务短链路 + 高频校验 + 外部状态机兜底。
  • 评测对照:Terminal-Bench 2.1 90.6、CyberGym 88.1 对比 V4 Pro 的 87.9 与 83.3,注意版本差异与重试策略,固定参数多次取均值。
  • 成本控制:缓存命中输入空闲 0.02 元 / 高峰 0.04 元,未命中 1 / 2 元,输出 4 / 8 元;稳定前缀前置提命中,批处理排空闲时段,输出走 JSON 控长度。
  • 部署路径:自建下载 deepseek-ai/DeepSeek-V4.1-Flash 权重;零基建走国家超算互联网(2026-09-11 上线)一键 API;工具侧用 WorkBuddy / OpenCode;大规模集群(2000 GPU + 存储)联系官方洽谈。
  • 并发与迁移:并发上限 2500,需做排队;Anthropic 风格接口可兼容迁移,重点改模型名、图片入参与思考模式映射。

至此,从图片输入到视觉 Agent 的完整闭环已经讲透。V4.1-Flash 用最小尺寸换来了家族里极具竞争力的硬基准与极低的推理成本,剩下的,就是把上面这份清单逐条落到你的生产系统里。