1. 概述与 API 选型
火山方舟为 DeepSeek V4 正式版与 V4.1 Flash 提供两套调用协议,Base URL 均为 https://ark.cn-beijing.volces.com/api/v3。两套协议鉴权、核心对象与 Function Calling 结构一致, 差异集中在参数位置与状态管理方式。
| 对比项 | Chat Completions API | Responses API |
|---|---|---|
| 接口 | POST /chat/completions | POST /responses、GET /responses/{id} |
| 协议风格 | 兼容 OpenAI Chat Completions 经典协议 | 火山方舟新一代协议 |
| 输入 | messages 消息数组,手动维护全部历史 | input + previous_response_id 自动继承上下文 |
| 状态 | 无状态,历史由调用方拼接 | 默认存储响应(store: true),服务端托管上下文 |
| 输出结构 | choices[].message | output 数组(message / reasoning / function_call 等类型化输出项) |
| 流式格式 | data: [DONE] 结束的 SSE chunk | 类型化事件流(response.created、response.output_text.delta 等) |
| 推理强度参数 | reasoning_effort(顶层) | reasoning.effort(嵌套) |
| 结构化输出参数 | response_format | text.format |
| 工具定义 | tools[].function.{name,parameters}(嵌套) | tools[].{name,parameters}(扁平) |
| 工具结果回传 | 追加 role: "tool" 消息 | function_call_output 输入项 |
| 内置工具 | 不支持(仅自定义 function) | 联网搜索、知识库检索、MCP |
| 上下文缓存 | 前缀缓存(自动) | caching 显式开关,前缀 + Session 缓存 |
| 响应查询 | 不支持事后查询 | GET /responses/{id} 检索已存储响应 |
如何选择
- 新项目优先评估 Responses API:输入输出格式更简洁、多轮对话无需手动拼接历史、原生支持上下文缓存与内置工具。
- 以下情况继续使用 Chat API:已有基于 OpenAI Chat Completions 协议的存量代码;需要续写模式(Prefill); 团队已习惯 messages 无状态模式。
- 两套 API 的鉴权与 Function Calling 基本结构一致,但模型能力与部分参数语义必须按版本区分。
2. 模型与定价
V4 正式版可直接使用 Model Name 自动路由最新正式版;V4.1 Flash 必须使用固定 Model ID,不要依赖 V4 的 Model Name 自动升级。
| 模型 | Model Name / ID | 输入模态 | 上下文 / 最大输出 | RPM / TPM |
|---|---|---|---|---|
| DeepSeek V4 Flash 正式版 | deepseek-v4-flashdeepseek-v4-flash-ga-260731 | 文本 | 1,024K / 384K tokens | 1,000 / 10,000,000 |
| DeepSeek V4 Pro 正式版 | deepseek-v4-prodeepseek-v4-pro-ga-260813 | 文本 | 1,024K / 384K tokens | 1,000 / 10,000,000 |
| DeepSeek V4.1 Flash | deepseek-v4-1-flash-260910 | 文本、图片、视频 | 1,024K / 384K tokens(思维链 128K) | 1,000 / 10,000,000 |
刊例价(元/百万 tokens)
| 模型 / 时段 | 输入 | 缓存命中 | 输出 | 缓存存储 |
|---|---|---|---|---|
V4 Flash GA deepseek-v4-flash-ga-260731 | 3.00 | 0.10 | 9.00 | 0.017 |
V4 Pro GA deepseek-v4-pro-ga-260813 | 9.00 | 0.30 | 27.00 | 0.017 |
| V4.1 Flash 高峰 | 2.00 | 0.04 | 8.00 | 0.017 |
| V4.1 Flash 空闲 | 1.00 | 0.02 | 4.00 | 0.017 |
| V4.1 Flash 批量 | 1.00 | 0.02 | 4.00 | — |
V4.1 Flash 迁移要点
| 维度 | V4 Flash / Pro GA | V4.1 Flash |
|---|---|---|
| Model ID | …-ga-260731 / …-ga-260813 | deepseek-v4-1-flash-260910 |
| 输入模态 | 文本 | 文本、图片、视频(原生多模态) |
| 推理档位映射 | minimal 关闭思考;medium→low;xhigh→high | none 关闭;minimal→low;medium/xhigh→high;Chat 兼容 ultra→max |
| 输出长度参数 | Chat max_tokens 默认 4K;Responses max_output_tokens 默认 32K | Chat 与 Responses 默认均为 128K,且都控制「回答 + 思维链」 |
| 消息角色 | system / user / assistant / tool | 额外支持 developer |
| 前缀续写 | 最后一条 assistant 消息即可触发 | 需显式 prefix=true;Responses 用 partial=true |
| top_p | 通用范围 [0,1] | 思考模式 <0.95 自动提升为 0.95;非思考模式固定 1.0 |
| logprobs | 深度思考模式不支持 | Chat 支持,top_logprobs 范围 0–20 |
3. 鉴权与通用约定
使用 API Key 鉴权,两套 API 请求头一致。API Key 可在火山方舟控制台 · API Key 管理页面创建。
Authorization: Bearer $ARK_API_KEY
Content-Type: application/json接口端点
| 用途 | 方法与路径 |
|---|---|
| 创建对话补全(Chat) | POST /chat/completions |
| 创建模型响应(Responses) | POST /responses |
| 查询模型响应(Responses) | GET /responses/{response_id} |
| Token 计数 | POST /tokenization |
model参数传 Model Name、带日期 Model ID 或 Endpoint ID(ep-xxxx)均可。- 长文本生成、深度推理等耗时场景,建议调大首 Token 超时(TTFT)与逐 Token 超时(TPOT),并优先使用流式输出。
- 建议用环境变量保存 API Key,避免硬编码进代码或前端。
4. 快速开始
Chat Completions 与 Responses 两套协议的最小调用示例。
Chat Completions:发起请求
curl https://ark.cn-beijing.volces.com/api/v3/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ARK_API_KEY" \
-d '{
"model": "deepseek-v4-flash",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
}'Chat Completions:响应结构
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "Hello! How can I help you today?",
"role": "assistant"
}
}
],
"created": 1742631811,
"id": "0217426318107460cfa43dc3f3683b1de1c09624ff49085a456ac",
"model": "deepseek-v4-flash",
"object": "chat.completion",
"usage": {
"completion_tokens": 9,
"prompt_tokens": 19,
"total_tokens": 28,
"prompt_tokens_details": { "cached_tokens": 0 },
"completion_tokens_details": { "reasoning_tokens": 0 }
}
}取回答内容读 choices[0].message.content;思维链内容读 choices[0].message.reasoning_content; 用量统计读 usage.completion_tokens_details.reasoning_tokens。
Responses API:发起请求
curl https://ark.cn-beijing.volces.com/api/v3/responses \
-H "Authorization: Bearer $ARK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-1-flash-260910",
"input": "分析这段代码的性能瓶颈",
"reasoning": {"effort": "high"},
"max_output_tokens": 131072
}'非流式响应从 output 数组中取类型化输出项:文本为 type: "message", 思维链为 type: "reasoning",函数调用为 type: "function_call"。
Responses API:查询历史响应
curl https://ark.cn-beijing.volces.com/api/v3/responses/{response_id} \
-H "Authorization: Bearer $ARK_API_KEY"deepseek-v4-1-flash-260910; 不要把 V4 的 deepseek-v4-flash 当作 V4.1 的别名——它会路由到 V4 正式版。5. 深度思考与推理强度
DeepSeek V4 与 V4.1 Flash 均默认开启深度思考:模型在回答前先进行分析,再输出最终回答。两者都通过 thinking.type=enabled/disabled 控制开关,不支持 auto。V4.1 所称「自适应深度思考与通用对话双模式」 属于模型架构描述,不应据此传 thinking.type=auto。
{
"thinking": {"type": "enabled"},
"reasoning_effort": "low"
}推理强度:两套 API 参数位置不同
| API | 参数 | 说明 |
|---|---|---|
| Chat Completions | reasoning_effort | 顶层字段,字符串枚举 |
| Responses | reasoning.effort | 嵌套在 reasoning 对象内,取值集合与映射规则不同,不可与 Chat 混用 |
| V4.1 Flash 默认值 | — | 两套 API 默认均为 high |
档位映射差异
| 传入档位 | V4 GA 实际效果 | V4.1 Flash 实际效果 |
|---|---|---|
| none | —(不支持) | 关闭思考 |
| minimal | 关闭思考,直接回答 | 映射为 low |
| low | 轻量思考,侧重快速响应 | 轻量思考 |
| medium | Chat 保留;Responses 映射为 low | 映射为 high |
| high | 深度分析(GA 默认值) | 深度分析(默认值) |
| xhigh | Responses 映射为 high | 映射为 high |
| max | 最高程度思考 | 最高程度思考(Chat 兼容 ultra→max) |
minimal 可关闭思考,而 V4.1 的 minimal 只是映射为 low。需要显式关闭请使用 thinking.type=disabled 或推理强度 none。思维链内容的返回位置
| API | 非流式 | 流式 | 用量统计 |
|---|---|---|---|
| Chat | choices[].message.reasoning_content | choices[].delta.reasoning_content | completion_tokens_details.reasoning_tokens |
| Responses | output[] 中 type: "reasoning" 输出项 | response.reasoning_summary_text.delta | output_tokens_details.reasoning_tokens |
输出长度控制
| API / 版本 | 参数 | 默认值与语义 |
|---|---|---|
| V4 GA Chat | max_tokens | 默认 4096;仅限制回答长度,不含思维链 |
| V4 GA Chat | max_completion_tokens | 范围 [0, 64K];限制思维链 + 回答;不可与 max_tokens 同时设置 |
| V4 GA Responses | max_output_tokens | 默认 32768;包含回答和思维链 |
| V4.1 Flash Chat | max_tokens / max_completion_tokens | 默认均为 128K;均控制回答 + 思维链;超限不报错,思维链可能被截断 |
| V4.1 Flash Responses | max_output_tokens | 默认 128K;控制回答 + 思维链;超限不报错 |
6. 流式输出
设置 stream: true 启用流式输出,模型通过 SSE 实时推送内容片段;深度思考模型尤其推荐使用流式, 可避免长任务因超时中断。
- 改善等待体验:无需等待完整内容生成
- 实时过程反馈:可实时展示思维链与回答
- 更高容错性:中途出错也能获取已生成内容
- 简化超时管理:保持连接状态,规避复杂任务超时
请求示例
curl https://ark.cn-beijing.volces.com/api/v3/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ARK_API_KEY" \
-d '{
"model": "deepseek-v4-flash",
"messages": [
{"role": "user", "content": "常见的十字花科植物有哪些?"}
],
"stream": true,
"stream_options": {"include_usage": true}
}'流式返回结构
data: {"choices":[{"delta":{"content":"","reasoning_content":"用户","role":"assistant"},"index":0}],"object":"chat.completion.chunk"}
...(思维链片段)...
data: {"choices":[{"delta":{"content":"十字","role":"assistant"},"index":0}],"object":"chat.completion.chunk"}
...(回答片段)...
data: {"choices":[{"delta":{"content":"","finish_reason":"stop","role":"assistant"},"index":0}]}
data: [DONE]| 字段 | 说明 |
|---|---|
choices[0].delta.content | 回答内容增量 |
choices[0].delta.reasoning_content | 思维链内容增量 |
choices[0].finish_reason | 停止原因(仅最后一个 chunk) |
stream_options.include_usage | 设为 true 时,在 [DONE] 前返回一个含完整 usage 的 chunk |
7. 工具调用(Function Calling)
两套 API 的工具调用都是两轮流程:第一轮模型返回工具调用指令 → 调用方执行工具 → 第二轮把工具结果回传 → 模型生成最终回答。
| 环节 | Chat Completions API | Responses API |
|---|---|---|
| 工具定义 | {"type":"function","function":{name,description,parameters}} | {"type":"function", name, description, parameters}(扁平,无 function 嵌套层) |
| 选择策略 | tool_choice:none / auto(默认)/ required / 指定工具;parallel_tool_calls 默认 true | 由模型按 tools 自行决策 |
| 第一轮响应位置 | choices[].message.tool_calls[] | output[] 中 type: "function_call" 项 |
| 结果回传 | 追加 role: "tool" + tool_call_id | function_call_output 输入项 + previous_response_id |
| 关联 ID | id ↔ tool_call_id | call_id ↔ call_id |
| 内置工具 | 无(仅自定义 function) | Web Search / Knowledge Search / MCP |
通用要求
parameters必须是合规的 JSON Schema 对象;所有字段名大小写敏感。- 建议使用英文字段名,中文说明放在
description中。 - 模型生成的
arguments是 JSON 字符串且不一定是合法 JSON,代码中执行前必须做解析校验。
arguments 的 JSON 合法性,并对工具入参做白名单/范围校验,避免模型幻觉参数直接打到下游系统。8. 结构化输出
两套 API 都支持纯文本 / JSON Object / JSON Schema 三档,仅参数位置不同。
| 输出模式 | Chat Completions API | Responses API |
|---|---|---|
| 纯文本(默认) | {"response_format": {"type": "text"}} | {"text": {"format": {"type": "text"}}} |
| JSON Object | {"response_format": {"type": "json_object"}} | {"text": {"format": {"type": "json_object"}}} |
| JSON Schema | 内嵌 json_schema 对象(beta) | schema 直接位于 text.format 内 |
Chat:JSON Schema 写法
{
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "person_info",
"description": "提取人物信息",
"strict": true,
"schema": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "姓名"},
"age": {"type": "integer", "description": "年龄"}
},
"required": ["name", "age"]
}
}
}
}Responses:JSON Schema 写法
{
"text": {
"format": {
"type": "json_schema",
"name": "person_info",
"description": "提取人物信息",
"strict": true,
"schema": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "姓名"},
"age": {"type": "integer", "description": "年龄"}
},
"required": ["name", "age"]
}
}
}
}字段含义一致:name 为自定义结构名称,schema 为 JSON Schema 定义,description 描述用途,strict=true 严格遵循 schema,false 为尽可能遵循。
9. 多模态理解
V4 Flash / Pro GA 为纯文本模型;只有 V4.1 Flash 原生支持图片与视频理解。
图片:detail 质量档位
| detail | 处理规则 |
|---|---|
| low | 保持长宽比缩放至 512×512 |
| high | 保持长宽比,在 544×544 至 1300×1300 范围缩放 |
| auto | 自动选择 |
| xhigh | 保持长宽比缩放至 1300×1300 |
image_pixel_limit 手动指定像素范围(3136 ≤ min_pixels ≤ max_pixels ≤ 4014080),优先级高于 detail。Chat 图片请求示例
curl https://ark.cn-beijing.volces.com/api/v3/chat/completions \
-H "Authorization: Bearer $ARK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-1-flash-260910",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?"},
{
"type": "image_url",
"image_url": { "url": "https://example.com/image.jpg", "detail": "high" }
}
]
}
]
}'视频理解(V4.1 Flash)
- 单个视频文件 ≤50MB,支持 Files ID。
- 抽帧范围 16–1280 帧,min_frames 默认 16。
- 单帧 token 可在 64–384 间调整,max_frame_tokens 默认 384,min_frame_tokens 默认 64。
- max_video_tokens 默认 81920;每帧前会插入 [<时间戳> second],模型据此理解时序。
Responses API 的对应格式:Chat 用 image_url / video_url,Responses 用 input_image / input_video。
10. Responses API 要点
Responses API 是火山方舟新一代接口,核心差异是「类型化输出 + 服务端托管上下文」。创建响应使用 POST /responses,关键参数包括 input、instructions、previous_response_id、store、text、caching 等。
input 的四种写法
| 形式 | 示例 |
|---|---|
| 纯文本字符串 | {"input": "你好"} |
| 消息列表(简易) | [{"role": "user", "content": "你好"}] |
| 结构化输入项 | 含 input_text / input_image 等内容块,见下方示例 |
| 工具结果回传 | function_call_output 项,配合 previous_response_id |
"input": [
{
"type": "message",
"role": "user",
"content": [
{"type": "input_text", "text": "描述这张图片"},
{"type": "input_image", "image_url": "https://..."}
]
}
]工具结果回传格式
{
"input": [
{
"type": "function_call_output",
"call_id": "call_abc123",
"output": "{\"temperature\":\"18~28℃\"}"
}
]
}多轮对话与上下文管理
默认 store: true 会存储响应,多轮对话只需传上一轮的 previous_response_id,模型自动继承上下文, 无需手动拼接历史消息。
# 第一轮
resp = client.responses.create(
model="deepseek-v4-1-flash-260910",
input="我叫小明",
)
# 第二轮:传入 previous_response_id,模型自动继承上下文
resp2 = client.responses.create(
model="deepseek-v4-1-flash-260910",
input="我叫什么名字?",
previous_response_id=resp.id,
)instructions 会作为首项插入系统/开发者消息,与 previous_response_id 一起使用时前一响应的指令不会延续; 且 instructions 不可与缓存同时使用。11. 上下文缓存与内置工具
通过 caching 参数降低重复 prompt 的处理开销,并在 Responses API 中使用平台内置工具。
{
"caching": {"type": "enabled"}
}取值 enabled 开启缓存,disabled 关闭(默认)。缓存命中情况可通过 usage.input_tokens_details.cached_tokens 查看;caching 不可与 instructions 同时使用。
内置工具支持矩阵
| 工具类型 | type 值 | V4 GA | V4.1 Flash |
|---|---|---|---|
| 联网搜索 | web_search | ✅ | ✅ |
| 知识库检索 | knowledge_search | ✅ | ✅ |
| MCP | mcp | ✅ | ✅ |
| 图像处理 | image_process | ❌ 模型卡未列 | ❌ 模型卡未列(原生视觉输入 ≠ 图像处理工具) |
- 内置工具为 Responses API 特有,Chat API 仅支持自定义 function。
- 平台存在某工具类型,不等于模型都支持,请以模型卡为准。
12. 错误码与排查
统一错误响应格式,便于在网关层做统一重试与提示。
{
"error": {
"code": "错误码",
"message": "错误描述"
}
}| 错误码 | 说明 | 建议处理 |
|---|---|---|
server_error | 模型内部错误 | 指数退避重试;持续失败请联系技术支持 |
InvalidParameter | 请求参数不合法(如 max_output_tokens 值无效) | 对照参数表校验取值范围与字段位置(Chat / Responses 不同) |
| 响应未完成时查询 | 调用 GET /responses/{id} 时目标响应仍在生成 | 等待响应完成后再查询,或改用流式消费 |
| 401 / 鉴权失败 | API Key 无效、被删除或未携带 Authorization 头 | 检查 Bearer Token 与 Key 状态 |
| 429 / 限流 | 超出模型 RPM / TPM 限制 | 降低并发或申请更高配额,必要时使用 TPM 保障包(service_tier) |
error.code 与 error.message → 确认 model 是否使用了与版本匹配的 Model ID → 再核对参数是否用错了 API(reasoning_effort vs reasoning.effort、response_format vs text.format)。13. 代码示例
以官方 volcenginesdkarkruntime SDK 为例,两种协议共享同一客户端初始化,仅调用方法与参数结构不同。
Python · Chat Completions
import os
from volcenginesdkarkruntime import Ark
client = Ark(
base_url="https://ark.cn-beijing.volces.com/api/v3",
api_key=os.getenv("ARK_API_KEY"),
)
# 非流式调用
completion = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "你好"},
],
thinking={"type": "enabled"}, # 开启深度思考(默认开启)
)
print(completion.choices[0].message.content)
# 思维链内容:completion.choices[0].message.reasoning_contentPython · Responses
import os
from volcenginesdkarkruntime import Ark
client = Ark(
base_url="https://ark.cn-beijing.volces.com/api/v3",
api_key=os.getenv("ARK_API_KEY"),
)
# 非流式调用
response = client.responses.create(
model="deepseek-v4-flash",
input="你好",
thinking={"type": "enabled"},
)
print(response.output[0].content[0].text)其它语言
- Node.js / Java / Go 等语言的完整示例可在控制台「使用指导」与火山方舟官方文档中获取,参数结构与上述一致。
- 若使用 OpenAI 兼容 SDK,把 Base URL 指向
https://ark.cn-beijing.volces.com/api/v3即可; Responses 协议需使用官方volcenginesdkarkruntimeSDK。