DeepSeek V4-Pro + Codex:Responses API 编码智能体接入指南
把 DeepSeek V4-Pro 和 V4-Flash 接入 Codex 以及其他基于 Responses API 的编码智能体。本文覆盖配置步骤、兼容性边界、踩坑记录和成本计算,帮你判断 DeepSeek 是否适合放进你的智能体技术栈。
DeepSeek 的 API 现在原生支持 Responses API 格式。也就是说,OpenAI 的编码智能体 Codex 可以直接和 DeepSeek V4-Pro、V4-Flash 通信,不需要额外的兼容层。把 base URL 指向 https://api.deepseek.com,注册模型,智能体就能跑起来了。
我们测过这个组合,原因很简单。编码智能体的工作负载正好覆盖了 API 选型最在意的几个维度,包括工具调用可靠性、流式响应延迟、推理深度和单次调用成本。DeepSeek V4-Pro 在这四项上表现都不错,尤其是成本。这篇文章讲清楚配置步骤、你能依赖的兼容性范围,以及正式投入生产之前应该注意的那些坑。
OpenAI 兼容指供应商提供一个 chat-completions 接口,其请求与响应结构与 OpenAI API 契约足够接近——只需替换三个值(API key、base URL、模型名),原来的 OpenAI SDK 调用即可直接工作。最小实践面是POST /v1/chat/completions 带 messages、model, 并返回 OpenAI 形式的流式响应。
三分钟上手
第一步,拿到 API 密钥。 到 platform.deepseek.com 注册,进 API Keys 页面新建一个密钥。密钥只显示一次,复制好存起来。
第二步,在 Codex 里注册 DeepSeek。 DeepSeek 官方发布了一份 Codex 集成指南,里面带了现成的模型配置。集成脚本会把 deepseek-v4-flash 和 deepseek-v4-pro 注册为 Codex 可用模型,设好 base URL,并配好 Codex 专用参数,包括 apply_patch_tool_type、multi_agent_version 和截断策略。
简单来说,跑一下 DeepSeek 提供的安装脚本,设好 DEEPSEEK_API_KEY 环境变量,Codex 的模型列表里就会出现这两个 DeepSeek 模型。
第三步,跑一次冒烟测试。 让智能体拿到你的仓库写权限之前,先确认基本的 Responses API 调用能通。
from openai import OpenAI
client = OpenAI(
api_key="YOUR_DEEPSEEK_KEY",
base_url="https://api.deepseek.com",
)
response = client.responses.create(
model="deepseek-v4-flash",
instructions="You are a helpful coding assistant.",
input="Write a Python function that reverses a linked list.",
)
print(response.output_text)
如果返回了正常的回答,工具调用和流式输出也不会有问题。DeepSeek 的 Responses API 支持和 OpenAI 相同的 SSE 事件流。
Responses API 在 DeepSeek 上的兼容情况
DeepSeek 的 Responses API 兼容性页面写得很详细,什么能用、什么不能用,列得很清楚。下面是编码智能体场景下的实际情况。
完全支持
| 功能 | 说明 |
|---|---|
model | deepseek-v4-flash、deepseek-v4-pro、deepseek-v4-flash-vision-exp |
input | 字符串或结构化 input item 列表 |
instructions | 作为第一条 system message 注入 |
stream | 完整的 SSE 事件流,带语义事件类型 |
tools (function) | 标准函数调用工具 |
tool_choice | none、auto、required 或指定某个工具 |
reasoning | 支持 effort 参数(low / high / max) |
temperature、top_p | 标准范围(思考模式下不生效) |
max_output_tokens | 最大 384K |
top_logprobs | 范围 0–20 |
部分支持
| 功能 | 现状 |
|---|---|
tools (web_search) | 支持,但 code_interpreter 和 file_search 会被忽略 |
text.format | 完全支持,但 verbosity 不生效 |
reasoning.summary | 接受参数但不会生成推理摘要 |
parallel_tool_calls | 被忽略;并行工具调用始终开启 |
不支持
| 功能 | 对 Codex 的影响 |
|---|---|
previous_response_id | DeepSeek 的 API 是无状态的,没有服务端对话历史 |
conversation | 同上;多轮状态必须客户端管理 |
background | 不支持后台执行 |
store | 响应始终返回 store: false |
truncation | 超过上下文窗口直接返回 400 |
对 Codex 来说,缺少 previous_response_id 不是问题,因为 Codex 本身就在客户端管理对话状态。没有 background 模式意味着 Codex 所有 turn 都同步执行,这也是默认行为。
编码智能体的工具调用
编码智能体能不能用,取决于工具调用靠不靠谱。DeepSeek V4-Pro 和 V4-Flash 在 Chat Completions 和 Responses API 两种接口上都支持完整的 OpenAI 函数调用 schema,思考模式和非思考模式都能用。
一个典型的编码智能体工具调用流程长这样。
tools = [
{
"type": "function",
"function": {
"name": "read_file",
"description": "Read the contents of a file at the given path.",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Absolute path to the file",
}
},
"required": ["path"],
},
},
},
]
response = client.responses.create(
model="deepseek-v4-pro",
instructions="You are a coding agent with file system access.",
input="Read the contents of /src/main.py and suggest improvements.",
tools=tools,
)
DeepSeek 还支持 strict 模式(通过 /beta base URL,用于 Chat Completions),保证模型输出的工具调用严格匹配你的 JSON Schema。对那些因为格式不对就会级联报错的智能体流程来说,这个功能值得试试。不过 beta 端点和 Responses API 是分开的。
Codex 专用的工具类型
Codex 用一个叫 apply_patch 的专有工具来写文件改动。DeepSeek 的 Codex 集成把它配成了 "apply_patch_tool_type": "freeform",意思是模型用自由文本而非结构化 JSON 来生成 patch 内容。web_search_tool_type 设成了 "text",对应 DeepSeek 原生的 web search 工具。
思考模式和推理深度
V4-Pro 和 V4-Flash 都默认开启思考模式。对需要深度推理的编码任务(重构复杂代码库、定位微妙的竞态条件),思考模式产出的结果明显更好。对简单任务(改个变量名、加条注释),它只会增加延迟,收益不大。
Responses API 上的 reasoning.effort 参数有三个档位。
| 档位 | 行为 | 适合场景 |
|---|---|---|
low | 快速,轻量推理 | 简单编辑、格式化、模板代码 |
high | 默认;更深的思考链 | 大多数编码任务 |
max | 最大推理深度 | 架构决策、复杂调试 |
Codex 会把这三个档位映射到自己的推理级别选择器上。DeepSeek 集成把默认值设为 high,三个档位都可用。
reasoning.summary 参数被接受了,但 DeepSeek 不会生成推理摘要,这一点要留意。如果你的智能体流程依赖摘要来决定下一步动作,从 DeepSeek 这边拿不到这个信息。
成本计算:编码智能体到底花多少钱
成本是 DeepSeek 最大的优势。编码智能体开销高,因为它们会生成长串的工具调用链,每一步都带着大量上下文。下表列出了 DeepSeek V4-Pro 和 Codex 常用模型的对比。
| 模型 | 输入(缓存未命中) | 输入(缓存命中) | 输出 | 上下文 |
|---|---|---|---|---|
| DeepSeek V4-Pro(非高峰) | $0.66 / 1M | $0.022 / 1M | $1.98 / 1M | 1M |
| DeepSeek V4-Pro(高峰) | $1.32 / 1M | $0.044 / 1M | $3.96 / 1M | 1M |
| DeepSeek V4-Flash(非高峰) | $0.22 / 1M | $0.007 / 1M | $0.66 / 1M | 1M |
| DeepSeek V4-Flash(高峰) | $0.44 / 1M | $0.014 / 1M | $1.32 / 1M | 1M |
高峰时段是 UTC 时间周一到周五的 01:00–04:00 和 06:00–10:00,其余时间都是非高峰,价格减半。
缓存命中价格是编码智能体场景的关键数字。智能体的工作流会反复发送相同的系统提示、文件内容和对话历史。DeepSeek 的自动上下文缓存意味着第一轮之后,你的大部分输入都会命中缓存。V4-Pro 非高峰缓存命中价 $0.022/百万 token,可以让你用某些竞品一次未缓存调用的费用跑几百轮智能体调用。
对成本敏感的工作负载来说,V4-Flash 非高峰缓存命中价 $0.007/百万 token,便宜得令人吃惊。如果你的编码智能体主要处理不需要 Pro 级推理的任务,Flash 是最合适的默认选择。
并发限制
DeepSeek 用并发连接数而非 RPM/TPM 来限流。
| 模型 | 并发限制 |
|---|---|
deepseek-v4-pro | 500 |
deepseek-v4-flash | 2,500 |
deepseek-v4-flash-vision-exp | 2,500 |
一个请求从发出到模型响应完成算一个并发连接。超过限制返回 HTTP 429。
在团队环境里跑编码智能体的话,V4-Pro 的 500 并发可能会成为瓶颈。每个开发者跑 Codex 的每个活跃 turn 消耗一个连接。如果 50 个人同时跑多轮编码会话,就可能接近上限。DeepSeek 提供免费的容量扩展申请。
路由与 Fallback 策略
把编码智能体挂在单一供应商上有风险。DeepSeek 在高峰期出现过容量相关的慢响应。配一层路由能在供应商出问题时自动切到备用模型,保护开发者的工作流不中断。
这个模式实现起来很直接,因为 DeepSeek 说的就是 OpenAI 兼容协议。一个模型 fallback 配置示例如下。
# 路由配置示例
primary:
provider: deepseek
model: deepseek-v4-pro
fallback:
- provider: anthropic
model: claude-sonnet-5
- provider: openai
model: gpt-5.5-pro
DeepSeek 返回 429(并发超限)或 5xx(服务端错误)时,路由层会在下一个供应商上重试。编码智能体完全感知不到这次故障,因为请求和响应格式是一样的。
这也让你可以做基于成本的路由。简单编码任务走 V4-Flash(最便宜),复杂推理走 V4-Pro,DeepSeek 不可用时回退到 Claude 或 GPT。TheRouter 上的 DeepSeek 供应商页面有当前的模型阵列和路由状态。
投产前的冒烟测试清单
在让 DeepSeek 驱动的编码智能体拿到你的生产代码库写权限之前,逐项验证以下内容。
- 基础补全。 发一条简单提示,确认返回正常。
- 工具调用。 定义一个假工具,发一条应该触发它的提示,验证工具调用输出是格式正确的 JSON。
- 流式输出。 启用
stream=True,确认收到连续的response.output_text.delta事件。 - 思考模式。 发一个复杂推理提示,设
reasoning={"effort": "max"},验证模型输出了思考链。 - 长上下文。 发一个包含大文件(50K+ token 代码上下文)的请求,确认没有截断或报错。
- 错误处理。 故意触发并发限制,确认你的 fallback 逻辑能捕获 429。
# 工具调用冒烟测试
response = client.responses.create(
model="deepseek-v4-pro",
instructions="You are a coding agent.",
input="What files are in the current directory?",
tools=[{
"type": "function",
"function": {
"name": "list_directory",
"description": "List files in a directory.",
"parameters": {
"type": "object",
"properties": {
"path": {"type": "string"}
},
"required": ["path"],
},
},
}],
)
# 验证模型发出了工具调用
for item in response.output:
if item.type == "function_call":
print(f"Tool call: {item.name}({item.arguments})")
常见报错和修复方法
| 报错 | 原因 | 修复 |
|---|---|---|
400: input_image must have image_url or file_id | 图片输入缺少必填字段 | 用 deepseek-v4-flash-vision-exp 处理图片输入;提供 image_url 或 file_id |
| 400: context length exceeded | 请求超过 1M token 窗口 | 截断对话历史;DeepSeek 不支持 truncation 参数 |
| 429: rate limit exceeded | 触发并发限制 | 加上指数退避重试;配一个 fallback 供应商 |
reasoning.summary 返回空 | DeepSeek 接受参数但不生成摘要 | 不要在控制流中依赖推理摘要,直接读输出 |
previous_response_id 不工作 | DeepSeek 的 API 是无状态的 | 在客户端管理对话状态(Codex 本来就是这么做的) |
什么时候该用 DeepSeek V4-Pro 跑编码智能体
适合用 V4-Pro 的场景
- 成本是主要考量。 V4-Pro 的非高峰价格远低于大多数前沿模型,编码智能体场景下的高缓存命中率会进一步放大这个优势。
- 需要深度推理但不需要绝对的天花板。 V4-Pro 的思考模式在复杂重构、调试和架构问题上表现稳定。
- 团队工作时间处于非高峰时段。 如果你的团队在亚太区按正常工作时间办公,刚好落在 DeepSeek 的非高峰定价窗口内(除 UTC 01:00–04:00 和 06:00–10:00 之外都算非高峰)。
适合用 V4-Flash 的场景
- 吞吐量比推理深度更重要。 Flash 有 2,500 并发上限和更低成本,在高频、低复杂度任务上更有优势。
- 你在搭多模型管线。 简单任务走 Flash,复杂任务走 Pro。
应该考虑其他供应商的场景
- 需要后台执行。 DeepSeek 不支持
background参数。 - 需要服务端对话状态。
previous_response_id和conversation参数不被支持。 - Pro 的 500 并发不够用。 可以申请容量扩展,或者用路由层把负载分摊到多个供应商。
延伸阅读
- DeepSeek API 完整指南,覆盖 Chat Completions 和 Responses API 的全面参考
- DeepSeek V4-Pro vs Flash API 对比,详细的价格和性能对比
- 2026 编码智能体模型路由对比,V4-Pro 和 Claude、Kimi K3、GLM-5 的横向比较
- DeepSeek 供应商页面,当前模型阵列、路由状态和接入细节
- DeepSeek V4-Pro 模型页面,规格、定价和基准测试数据
- DeepSeek V4-Flash 模型页面,规格、定价和基准测试数据