教程
DeepSeek V4-Flash 最新消息:API、Agent、Tool Calling 和 JSON 输出有什么变化?
V4-Flash 不是换皮:模型 ID 换了,Thinking 与 Tool Calling 的回放规则变了,JSON 模式仍只有 json_object 没有 Schema 约束。读完你能判断该走 Tool Calls 还是 JSON 输出,以及 Agent 循环里哪些字段必须原样回传。
DeepSeek 在 2026 年把 API 主线切到 V4 系列:deepseek-v4-flash 与 deepseek-v4-pro 取代即将停用的 deepseek-chat 和 deepseek-reasoner。对工程团队来说,变化不在「多一个模型名」,而在三条链路的契约——Chat Completions 仍 OpenAI 兼容,但 Thinking 模式要求完整回放 reasoning_content;Tool Calling 走标准 tools 参数,strict 模式(Beta)才约束参数 Schema;JSON 输出只有 response_format: json_object,没有 OpenAI 那套 json_schema。如果你已经在用 DeepSeek 做抽取、分类或 Agent,这篇把 API 面、Agent 面、JSON 面拆开讲,并接上站内 Structured Output 与 MCP 的上下文。
V4-Flash 更新在改什么
官方 Changelog 把这次更新概括成几条硬事实:调用方式不变,把 model 设为 deepseek-v4-flash 即可;V4-Flash-0731 与 Preview 同架构同尺寸,只是重新 post-train;V4-Flash 原生支持 Responses API 格式并针对 Codex 做了适配;deepseek-chat 与 deepseek-reasoner 计划在 2026-07-24 停用。这意味着现有集成大多只需改 model 字符串,但 Thinking + Tools 的组合必须重新测一遍回放逻辑。
性能侧,文档提到 JSON 格式输出准确率在内测集从 78% 提到 85%,配合正则可进一步到 97%;IFEval Prompt-Level 从 63.9% 跳到 77.6%。这些数字说明 V4-Flash 更听 system 指令,但不等于 Schema 级约束——JSON 模式仍只保证「能 parse」,不保证字段名和类型。
上下文窗口文档写 1M token 输入、最大输出 384K token。生产里仍应按任务设 max_tokens,尤其在 JSON 模式下,官方明确警告:token 不够会把 JSON 字符串截断在中间。
API 接入:模型名与兼容层
base_url 仍是 https://api.deepseek.com,Chat Completions 端点 /chat/completions 不变。OpenAI SDK 只需改 base_url 和 model;Anthropic 兼容接口也可访问 V4 模型。GET /models 列出的当前模型通常是 deepseek-v4-flash 与 deepseek-v4-pro,不要继续依赖旧别名。
下面是最小请求骨架:非 Thinking、纯文本.completion。
from openai import OpenAI
client = OpenAI(
api_key="YOUR_KEY",
base_url="https://api.deepseek.com",
)
resp = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "user", "content": "Summarize JSON tooling in one sentence."}
],
max_tokens=256,
)
print(resp.choices[0].message.content)
若你用的是 LangChain、LiteLLM 或自研网关,先确认框架有没有把 DeepSeek 的 thinking 字段映射错——有些配置会禁用 tool_choice 或丢弃 reasoning_content,导致 Agent 第二轮直接 400。
官方 Changelog 与 Tool Calls 指南见 DeepSeek API Updates 与 Tool Calls.
Thinking 模式与 Agent 循环
V4-Flash 与 V4-Pro 都支持 Thinking 与非 Thinking。开启方式是在请求里加 extra_body,例如 extra_body={"thinking": {"type": "enabled"}}。响应里除了 content,还会出现 reasoning_content——模型内部推理链,不一定是你想展示给用户的文案。
Agent 循环的关键规则:只要某轮 assistant 消息带 tool_calls,后续所有请求必须把该 assistant 消息的 reasoning_content 完整回传。漏传会 HTTP 400。这和 OpenAI 近期「保留 reasoning items」的思路类似,但 DeepSeek 在带 tools 参数时写得更硬。
实践上,你的会话存储结构要能存三元组:role、content、reasoning_content、tool_calls。Replay 时按 API 要求的顺序 append,不要自己 strip 推理字段「省 token」——省下来的字节会在下一轮变成 400。
终止条件:当 assistant 消息的 tool_calls 为 null 或空,模型认为任务完成,不再请求外部工具。你的 orchestrator 应在此刻读取 content 做最终答复或再开 JSON 抽取。
Tool Calling:参数 JSON 与 strict
Tool Calling 走 OpenAI 标准:请求里声明 tools 数组,每项含 type: function、name、description、parameters(JSON Schema)。模型返回 assistant.tool_calls,其中 function.arguments 是 JSON 字符串,不是已 parse 的对象——你的执行层必须 JSON.parse 并校验后再调真实 API。
DeepSeek 文档提供 Function Calling strict 模式(Beta):在工具定义上打开 strict,服务端会尽量让 arguments 贴合声明的 Schema。Beta 意味着 Schema 子集受限,不是任意 JSON Schema 都能过——集成测试应 pinned 到文档列出的支持关键词。
记住:模型不执行函数。它只决定「要不要调、调哪个、参数 JSON 长什么样」。查库存、写数据库、发 HTTP 都是你的后端职责;arguments 落地前仍建议走 JSON Schema 校验,和 MCP tools/call 的参数校验是同一类工程问题。
和 JSON 输出分工:需要实时外部数据时用 Tool Calls;只需要从已有上下文抽字段时用 json_object。Agent 常见模式是中间步 Tool Calls,最后一步 json_object 输出结构化报告。
JSON 输出:json_object 与空响应
DeepSeek JSON 模式只有 response_format: {"type": "json_object"},没有 response_format: json_schema。要稳定拿到 JSON,官方四条要求都要满足:设置 response_format;在 system 或 user 里出现「json」字样并给出示例形状;合理设置 max_tokens 防截断;知道 API 偶尔返回空 content,生产要有重试或降级。
Thinking 与 JSON 可以同时开,但 json_object 不能替代清晰指令。实测里出现过 HTTP 200、finish_reason: stop、content 为空的情况;加强 system 里「返回一个合法 JSON 对象,键为 …」通常能修复。解析后仍要本地校验键和类型——JSON 模式不保证 Schema。
下面示例:抽取工单意图与紧急程度,非 Thinking,带宽 max_tokens。
resp = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{
"role": "system",
"content": (
'Extract intent and urgency as json. '
'Example: {"intent":"refund","urgency":"high"}'
),
},
{"role": "user", "content": "Card charged twice, need refund today."},
],
response_format={"type": "json_object"},
max_tokens=400,
)
拿到字符串后,先 JSON.parse,再丢进 Schema 校验器。和 Gemini、OpenAI Structured Output 的差别,见站内 AI Structured Output 教程——DeepSeek 目前停在「语法 JSON」层,形状约束要靠 prompt 示例 + 本地校验,或 Tool strict(仅参数侧)。
JSON 输出官方说明见 JSON Output.
和 Structured Output 的边界
可以把各家能力放在同一张表里对比选型:
| 场景 | DeepSeek V4-Flash | OpenAI / Gemini Structured Output |
|---|---|---|
| 最终答复要固定字段 | json_object + prompt 示例 + 本地 Schema 校验 | json_schema + strict,解码阶段约束形状 |
| Agent 调外部工具 | tools + 回放 reasoning_content | 同类 tools 参数;部分栈支持参数 Schema strict |
| Remote MCP / JSON-RPC | 无官方 MCP;HTTP 工具需自建 | 客户端侧 MCP;协议 JSON 见 Stateless MCP 文 |
三条链路可以并存:MCP Server 暴露工具,DeepSeek Agent 用 Tool Calls 调你的 HTTP 适配层,最后一跳 json_object 汇总成报表 JSON。无论哪一层,JSON 字符串落地前都建议在浏览器或 CI 里做一次校验。
延伸阅读:AI Structured Output 教程、Gemini API JSON 输出、Stateless MCP 解析。
常见问题 FAQ
deepseek-chat 还能用吗?
官方计划 2026-07-24 停用 deepseek-chat 与 deepseek-reasoner。新集成请直接用 deepseek-v4-flash 或 deepseek-v4-pro,并在 staging 跑一遍 Thinking + Tools 回放测试。
Tool Calls 和 JSON 模式能同请求开吗?
通常分开设计:Agent 循环用 tools,最终结构化汇总用 json_object。同请求既 tools 又 json_object 会让调试变复杂,且 Thinking 模式下回放字段更多。
为什么 JSON 模式仍要 Schema 校验?
json_object 只保证合法 JSON,不保证键名、类型、枚举。模型可能给出语义对但字段漂移的对象。本地 Schema 校验是 cheap 的保险,换模型或关 strict 时尤其有用。
reasoning_content 要存多久?
只要会话还可能继续带 tools 调用,就要能完整 replay 历史 assistant 消息里的 reasoning_content。会话归档策略可以压缩旧轮次,但活跃 Agent 线程不要丢该字段。
总结与下一步
DeepSeek V4-Flash 把模型能力推到 V4 命名空间,API 外壳仍 OpenAI 兼容,但 Agent 开发者必须处理 reasoning_content 回放、Tool arguments 的 JSON 字符串解析,以及 json_object 的空响应与截断风险。JSON 准确率提升不等于 Schema 约束——要和 OpenAI/Gemini Structured Output 区分层级。
下一步:用 deepseek-v4-flash 跑一条 Tool Call 链和一条 JSON 抽取,把返回值贴进 JSONVue 做格式化和 Schema 校验。需要对比解码级 Schema 约束时,阅读 AI Structured Output 与 Gemini JSON 输出教程;需要 Remote 工具部署时,阅读 Stateless MCP 文。