DeepSeek 全家桶接入
XAI Router 对 DeepSeek 的接口做透传:请求体原样转发(只按模型映射改写 model),响应原样返回。DeepSeek 官方文档里的参数和返回字段都可以直接使用,包括 safety_check、title、latest_reminder、deepseek_web_search、deepseek_read_url。
所有路径带不带 /v1 前缀都可以。鉴权用 Authorization: Bearer $API_KEY 或 x-api-key: $API_KEY。
接口一览
| 接口 | 路径 | 计费模型 |
|---|---|---|
| Chat Completions | POST /v1/chat/completions | deepseek-flash |
| Responses | POST /v1/responses | 同上 |
| Messages(Anthropic 格式) | POST /v1/messages、POST /v1/messages/count_tokens | 同上 |
| 网页搜索 | POST /v1/tools/search | deepseek-search |
| 网页抓取 | POST /v1/tools/fetch | deepseek-fetch |
| OCR | POST /v1/tools/ocr | deepseek-ocr |
| 语音合成 | POST /v1/tools/tts,或 WebSocket 同一路径 | deepseek-tts |
| 语音识别 | POST /v1/tools/asr | deepseek-asr |
| 文件 | POST /v1/files、GET /v1/files、GET /v1/files/{id}、DELETE /v1/files/{id} | 文档解析为 deepseek-files |
| 余额 | GET /user/balance | 不计费 |
对话与联网工具
三种协议都支持服务端联网工具。下面是 Chat Completions 的例子:
curl $BASE_URL/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-flash",
"thinking": {"type": "enabled"},
"tools": [{"type": "deepseek_web_search"}, {"type": "deepseek_read_url"}],
"messages": [{"role": "user", "content": "DeepSeek V4.1 有哪些更新?"}],
"stream": true
}'计费按上游返回的最终用量:输入、缓存命中、输出 Token,加上联网工具次数。工具次数取 usage.server_tool_use 里的 tool_search、tool_fetch、tool_image_search 之和,按模型的 Query 单价计。
工具接口的计费单位
| 计费模型 | 计费单位 | 默认单价 |
|---|---|---|
deepseek-search | 每次返回了结果的搜索 | $0.005 |
deepseek-fetch | 每次成功的抓取 | $0.005 |
deepseek-ocr | 识别成功的页数 | $0.0015 / 页 |
deepseek-tts | 字符数,汉字算 2 个 | $3 / 万字符 |
deepseek-asr | 音频秒数,不足 1 秒按 1 秒 | $0.78 / 小时 |
deepseek-files | 文档解析页数,按文件大小估算 | $0.0015 / 页 |
没有结果的搜索、失败的请求不计费。
文件
上传、引用、查询、删除的用法与 DeepSeek 官方一致,OpenAI 格式和 Anthropic 格式都支持。Anthropic 格式需要带请求头 anthropic-beta: files-api-2025-04-14。
curl $BASE_URL/v1/files \
-H "Authorization: Bearer $API_KEY" \
-F purpose="text_recognition" \
-F file="@report.pdf"需要了解的几点:
- 文件只属于上传它的用户。 其他用户不能列出、查询、删除或在对话里引用它,会得到 400。
- 文档解析按大小估算页数计费。 以
text_recognition或rich_layout_recognition上传时,每 10 KiB 算一页,最少 1 页,最多 1000 页。以user_data上传不计费。 - 文件列表只包含用同一种格式上传的文件。 用 OpenAI 格式上传的文件出现在 OpenAI 格式的列表里,Anthropic 格式同理。按 id 查询、删除和引用不受这个限制。
- 列表不支持
before_id参数。
语音合成 WebSocket
连接 wss://<XAI 域名>/v1/tools/tts,消息格式与 DeepSeek 官方一致。鉴权有两种方式:
- 请求头
Authorization: Bearer $API_KEY; - 浏览器里无法设置请求头时,用子协议
Sec-WebSocket-Protocol: tts, bearer.$API_KEY。
一次会话按发送的字符数计费。
余额
GET /user/balance 按 DeepSeek 的格式返回你在 XAI 的余额:
{
"is_available": true,
"balance_infos": [
{"currency": "USD", "total_balance": "110.00", "granted_balance": "0.00", "topped_up_balance": "110.00"}
]
}currency 与控制台显示的币种一致:账户计费系数为 1 时是 USD,否则是 CNY。
管理员须知
- 添加 Provider 为
https://api.deepseek.com的 Key 后,deepseek*会自动映射到这个分组,上表里的计费模型都匹配这条规则。 - 文件上传(
user_data)和文件列表的请求里没有模型信息,使用files这个模型名做分组映射。分组里有多家服务商时,请把files映射到 DeepSeek 所在的分组。 - 同一个用户的文件会固定在同一个上游账号上,引用文件的对话请求也会发到这个账号。
- 文件登记保存在 Redis 里,默认在用户最后一次上传后保留 3 年,可用环境变量
FILE_REGISTRY_TTL调整。删除用户时,登记和上游文件会一并清理。 - 默认单价可以在定价里修改。对话里的联网工具按
deepseek-flash的Query单价计,默认与deepseek-search相同。 - 工具和文档解析的计费模型只对各自的接口有效:不能用在对话接口上,也不能通过模型映射换成别的模型,否则请求会得到 400。