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 CompletionsPOST /v1/chat/completionsdeepseek-flash
ResponsesPOST /v1/responses同上
Messages(Anthropic 格式)POST /v1/messages、POST /v1/messages/count_tokens同上
网页搜索POST /v1/tools/searchdeepseek-search
网页抓取POST /v1/tools/fetchdeepseek-fetch
OCRPOST /v1/tools/ocrdeepseek-ocr
语音合成POST /v1/tools/tts,或 WebSocket 同一路径deepseek-tts
语音识别POST /v1/tools/asrdeepseek-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。