Newsroom
AIEII

DeepSeek V4-Flash 的 Agent 模式怎么用,实战教程

DeepSeek-V4-Flash-0731 正式版在九个 Agent 基准上全面超过 V4-Pro-Preview,本文用一个批量整理本地文件的真实任务,讲清楚怎么调用工具、怎么配置多轮循环,以及三个容易踩的坑。

TL;DR
  • DeepSeek-V4-Flash-0731 于 2026 年 7 月 31 日转正式版,官方称这次只重跑了后训练、没换基座模型,但在 Terminal Bench 2.1(82.7 分)等九个 Agent 基准上全面超过了自家更贵的 V4-Pro-Preview。
  • 调用方式没变,API 里模型名还是 deepseek-v4-flash,工具调用走标准的 tools + tool_choice 字段,新增的是原生支持 Responses API 格式,并针对 Codex 场景做了适配。
  • 价格分峰谷两档:输入缓存未命中 $0.22/1M(峰值 $0.44),输出 $0.66/1M(峰值 $1.32),峰值时段是 UTC 01:00-04:00 和 06:00-10:00(周一到周五),把批量任务排到谷时段能省下一半成本。
DeepSeek V4-Flash 的 Agent 模式怎么用,实战教程

上周把一批客户资料从散乱的 Excel 和邮件附件里整理成结构化表格,本来想手动做,后来想起 DeepSeek 官方博客说 V4-Flash 刚出的正式版在 Agent 基准上把自家 Pro 都比下去了,就干脆用它写了个小脚本,让模型自己调工具把这活干了。跑下来的结论是:接口没变复杂,但有几个参数不摸清楚很容易多花钱。

DeepSeek-V4-Flash-0731 是 2026 年 7 月 31 日转正的版本,之前一直是 preview 状态。这篇教程按我实际跑通的那个任务,把 Agent 模式该怎么配讲一遍。


V4-Flash-0731 到底改了什么

先说清楚这次更新的性质,免得抱错预期。DeepSeek 官方在发布说明里写得很直接:这次只重跑了后训练,没有换新的基座模型,改动集中在"对齐和 Agent 行为",直接影响的是工具调用的风格和拒答倾向。

九个官方公布的 Agent 基准里,V4-Flash-0731 全面超过了同门更贵的 V4-Pro-Preview:

基准V4-Flash-0731 得分
Terminal Bench 2.182.7
Cybergym76.7
Toolathlon (verified)70.3
DSBench-FullStack68.7
DSBench-Hard59.6
DeepSWE54.4
NL2Repo54.2
Agent Last Exam25.2
Automation Bench (Public)25.1

另一个变化是原生支持 Responses API 格式,并且专门针对 Codex 场景做了适配。这两点对大多数用普通 chat completions 接口的场景影响不大,但如果你在用 OpenAI 风格的 Responses API 或者接 Codex 类工具,直接能用上,不用再套一层格式转换。

模型名没变,API 里还是写 deepseek-v4-flash


实战:让它自动整理一批本地文件

任务很具体:一个文件夹里有几十个杂乱的 txt/csv,每个里面记着一条客户信息,字段名不统一(有的叫"电话"有的叫"联系方式"),要让模型读文件、抽字段、汇总成一张表。这类"读文件、判断、再决定下一步读哪个文件"的任务,正是 Agent 模式的典型场景,单轮问答做不了。

第一步:定义工具

工具调用走标准的 tools 字段,写法和 OpenAI 的 function calling 规范一致:

tools = [
    {
        "type": "function",
        "function": {
            "name": "list_files",
            "description": "列出指定目录下的所有文件名",
            "parameters": {
                "type": "object",
                "properties": {
                    "dir_path": {"type": "string", "description": "目录路径"}
                },
                "required": ["dir_path"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "read_file",
            "description": "读取指定文件的文本内容",
            "parameters": {
                "type": "object",
                "properties": {
                    "file_path": {"type": "string", "description": "文件路径"}
                },
                "required": ["file_path"]
            }
        }
    }
]

第二步:多轮循环处理 tool_calls

Agent 模式的核心不是一次请求,是"模型返回工具调用 → 你执行 → 把结果喂回去 → 模型决定下一步"这个循环。跳过这一步、以为传了 tools 就自动跑完全程,是最常见的误解:

from openai import OpenAI

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

messages = [{"role": "user", "content": "整理 ./客户资料 目录下所有文件的联系人信息,汇总成表格"}]

MAX_ROUNDS = 8  # 硬上限,防止模型在工具间反复试探
for round_i in range(MAX_ROUNDS):
    resp = client.chat.completions.create(
        model="deepseek-v4-flash",
        messages=messages,
        tools=tools,
        tool_choice="auto"
    )
    msg = resp.choices[0].message
    messages.append(msg)

    if not msg.tool_calls:
        print(msg.content)  # 模型认为任务完成,输出最终结果
        break

    for call in msg.tool_calls:
        result = execute_tool(call.function.name, call.function.arguments)
        messages.append({
            "role": "tool",
            "tool_call_id": call.id,
            "content": result[:4000]  # 裁剪长度,防止撑爆上下文
        })

这段代码里有两个我踩过坑之后才加上的细节,下面单独说。


三个容易踩的坑

没设置最大循环轮数。 第一次跑的时候没写 MAX_ROUNDS,模型对着一个格式怪异的 csv 反复调用 read_file 又反复判断"信息不够",跑了二十多轮才停,输出费用比预期高了不少。工具调用类任务务必给一个硬上限,超过就强制截断并让模型基于已有信息收尾。

tool_choice 留空。 默认值是 auto,意思是模型自己判断要不要调用工具。如果你的任务必须走工具(比如这次的文件读取),什么都不传等于把主动权交给模型,它可能会跳过读文件直接凭猜测编一份"看起来对"的汇总表。需要强制调用时把 tool_choice 设成具体的函数名,或者至少设成 "required"

role: tool 返回内容不裁剪。 客户资料里有几个文件是导出的完整邮件记录,几千字一个文件,原样塞回 messages 直接把后续几轮的上下文占满,导致模型"忘了"前面读过的文件又重新读一遍。上面代码里 content[:4000] 这行看着简单,是省下最多重复调用的一处。


价格:谷时段能省一半

V4-Flash 走的是峰谷双价,峰值时段是 UTC 01:00-04:00 和 06:00-10:00(周一到周五),价格是谷值的两倍:

项目谷值 (USD/1M tokens)峰值 (USD/1M tokens)
输入(缓存命中)0.0070.014
输入(缓存未命中)0.220.44
输出0.661.32

按北京时间算,峰值窗口大致落在 09:00-12:00 和 14:00-18:00 这两段,如果是定时批处理任务(比如夜里跑的数据整理),把触发时间挪到谷时段,输出费用直接减半,不需要改任何代码。


我的判断

V4-Flash-0731 这次升级的价值不在"更聪明",官方自己都说基座没换,纯粹是靠重跑后训练把工具调用行为调顺了。对已经在用 V4-Flash 做 Agent 任务的人,直接受益,不用改代码,接口和模型名都没变。对还在犹豫要不要上 Agent 模式的人,这次的九项基准提供了一个具体理由:同样价位(甚至更低)能拿到比 Pro-Preview 更好的工具调用表现,没必要为了"Pro"这个名字多付钱。真正决定任务跑不跑得顺的,还是循环轮数、tool_choice、上下文裁剪这几个工程细节,模型再强,这几处没配对照样费用失控。

参考

相关阅读

常见问题

DeepSeek V4-Flash 的 Agent 模式和普通对话模式调用方式一样吗?
接口完全一样,都是 chat completions 或新支持的 Responses API,区别只在于请求里带不带 tools 字段。带了 tools 并配合多轮循环处理 tool_calls 返回,就是 Agent 模式;不带就是普通问答。模型名统一是 deepseek-v4-flash
V4-Flash 和 V4-Pro-Preview 该选哪个?
按官方公布的九个 Agent 基准,V4-Flash-0731 在 Terminal Bench 2.1、DeepSWE、Cybergym 等测试上分数全面超过 V4-Pro-Preview,而且 V4-Flash 单价更低。官方给出的解释是这次升级只重跑了后训练、优化对齐和工具调用行为,不是换了新基座,所以能以更低成本拿到更好的 Agent 表现。日常工具调用类任务没有理由多花钱选 Pro-Preview。
调用 V4-Flash 做 Agent 任务时踩过什么坑?
三个:一是没设置最大循环轮数,模型在工具调用之间反复试探导致费用失控;二是把 tool_choice 留空当成默认必调工具,其实默认值是 auto,模型可能直接跳过工具直接编答案;三是没有把 role: tool 的返回内容裁剪长度,文件批处理场景返回内容一长就把上下文吃满。
峰值和谷值定价具体怎么算,能不能提前避开?
峰值时段是 UTC 01:00-04:00 和 06:00-10:00,周一到周五,价格是谷值的两倍;其余时间(含全部周末)都算谷值。批量跑的定时任务只要把触发时间避开这两个窗口,同样的调用量能省下接近一半的输出费用。
广告合作联系
立即联系 →
加入会员申请
了解详情 →
← Claude Code vs Cursor 2026年8月怎 … 本地跑大模型该配什么显卡,2026年8月硬件推荐 →
💬 Comments
5 min read