DS2API 安装搭建教程:将 DeepSeek 网页能力转换为 OpenAI/Claude/Gemini 兼容 API

精彩教程3小时前发布 小文
58 0

前言

DS2API 是一款轻量级、高性能的全栈中间件,能将 DeepSeek 网页端对话能力转换为 OpenAI、Claude、Gemini 兼容的通用 API。后端使用 Go 语言全量实现,自带 React WebUI 管理台,支持多账号轮询、Docker 部署、Vercel Serverless 等多种方式。

简单来说:有了它,你就能用 DeepSeek 的网页账号,对外提供标准 OpenAI/Claude/Gemini 格式的 API 接口,直接对接各种 AI 客户端和开发框架。

项目地址:https://github.com/CJackHwang/ds2api

当前最新版本:v4.1.2(2026.04.28 发布)

核心功能一览

能力 说明
OpenAI 兼容 支持 /v1/chat/completions、/v1/responses、/v1/embeddings、/v1/files 等接口
Claude 兼容 支持 /anthropic/v1/messages 等 Claude 原生接口,可直接接入 Claude Code
Gemini 兼容 支持 /v1beta/models/* 的 generateContent 和 streamGenerateContent
多账号轮询 自动 Token 刷新,支持邮箱/手机号双登录方式
并发队列控制 每账号 in-flight 上限 + 等待队列,动态计算建议并发值
DeepSeek PoW 纯 Go 高性能实现,毫秒级响应
Tool Calling 防泄漏处理,结构化增量输出
WebUI 管理台 /admin 单页应用,中英文双语、深色模式
运维探针 GET /healthz(存活)、GET /readyz(就绪)

支持的模型

OpenAI 接口模型

模型类型 模型 ID thinking search
default deepseek-v4-flash 默认开启
default deepseek-v4-flash-nothinking 永久关闭
expert deepseek-v4-pro 默认开启
expert deepseek-v4-pro-nothinking 永久关闭
default deepseek-v4-flash-search 默认开启
default deepseek-v4-flash-search-nothinking 永久关闭
expert deepseek-v4-pro-search 默认开启
expert deepseek-v4-pro-search-nothinking 永久关闭
vision deepseek-v4-vision 默认开启
vision deepseek-v4-vision-nothinking 永久关闭
vision deepseek-v4-vision-search 默认开启
vision deepseek-v4-vision-search-nothinking 永久关闭

此外还支持常见的模型别名映射(如 gpt-4.1、o3、claude-* 等),方便旧客户端直接兼容。

部署方式优先级建议

推荐按以下顺序选择:

  1. 下载 Release 构建包:最省事,产物已编译完成,适合大多数用户 👈 推荐新手
  2. Docker / GHCR 镜像部署:适合需要容器化、编排或云环境部署
  3. Vercel 部署:适合已有 Vercel 环境且接受其平台约束的场景
  4. 本地源码运行:适合开发、调试或需要自行修改代码

方式一:下载 Release 构建包(推荐新手)

这是最简单的方式,不需要安装 Go 或 Node.js,直接下载编译好的二进制文件即可运行。

第一步:下载对应平台的压缩包

前往 GitHub Release 页面下载对应平台的包:

👉 点击前往 Release 页面

支持的平台:

平台 架构 文件格式
Linux amd64 / arm64 / armv7 .tar.gz
macOS amd64 / arm64 .tar.gz
Windows amd64 / arm64 .zip

第二步:解压并配置

# 解压(以 Linux amd64 为例)
tar -xzf ds2api_v4.1.2_linux_amd64.tar.gz
cd ds2api_v4.1.2_linux_amd64

# 复制配置模板
cp config.example.json config.json

第三步:编辑配置文件

使用你喜欢的编辑器打开 config.json,需要填写以下关键信息:

{
  "keys": [
    "your-api-key-1"
  ],
  "accounts": [
    {
      "name": "主账号",
      "email": "your-email@example.com",
      "password": "your-password"
    }
  ]
}

必须修改的字段

  • keys:设置你对外提供 API 的访问密钥(客户端调用时使用)
  • accounts:填入你的 DeepSeek 账号信息(支持邮箱或手机号登录)

第四步:启动服务

./ds2api

默认访问地址:http://127.0.0.1:5001

WebUI 管理台:http://127.0.0.1:5001/admin

方式二:Docker 部署

适合熟悉 Docker 的用户,方便进行容器化管理和编排。

第一步:拉取镜像并准备配置

# 拉取最新镜像
docker pull ghcr.io/cjackhwang/ds2api:latest

# 克隆仓库(获取 docker-compose.yml 和配置模板)
git clone https://github.com/CJackHwang/ds2api.git
cd ds2api

# 复制模板
cp .env.example .env
cp config.example.json config.json

第二步:编辑环境变量和配置

编辑 .env 文件,至少设置以下内容:

# 管理密钥(必填,请改成强密码)
DS2API_ADMIN_KEY=your-strong-password

# 宿主机端口(可选,默认 6011 映射到容器 5001)
DS2API_HOST_PORT=6011

编辑 config.json,填入你的 DeepSeek 账号和 API 密钥(同方式一)。

第三步:启动

# 启动
docker-compose up -d

# 查看日志
docker-compose logs -f

# 更新镜像
docker-compose up -d --build

默认宿主机端口 6011 映射到容器内 5001,访问地址:http://你的IP:6011/admin

方式三:Vercel 部署

适合已有 Vercel 环境的用户,无需自己的服务器。

第一步:Fork 仓库

将项目 Fork 到你自己的 GitHub 账号下。

第二步:在 Vercel 导入项目

👉 一键部署到 Vercel

第三步:配置环境变量

在 Vercel Project Settings → Environment Variables 中配置:

变量 说明 是否必填
DS2API_ADMIN_KEY 管理密钥 ✅ 必填
DS2API_CONFIG_JSON 配置内容(JSON 或 Base64) 推荐填写

推荐方式:先在本地编辑好 config.json,再转成 Base64 粘贴:

base64 < config.json | tr -d '\n'

将输出的 Base64 字符串粘贴到 DS2API_CONFIG_JSON 环境变量中。

第四步:部署

点击部署按钮,等待构建完成即可。访问地址为 Vercel 分配的域名 + /admin

注意:Vercel 上流式请求采用”Go prepare + Node stream”的混合链路,以保证 SSE 实时性。

方式四:本地源码运行

适合开发者或需要自行修改代码的用户。

前置要求

  • Go 1.26+
  • Node.js 20.19+ 或 22.12+(仅在需要构建 WebUI 时)

步骤

# 1. 克隆仓库
git clone https://github.com/CJackHwang/ds2api.git
cd ds2api

# 2. 配置
cp config.example.json config.json
# 编辑 config.json

# 3. 启动
go run ./cmd/ds2api

首次启动时,若 static/admin 不存在,会自动构建 WebUI(需要 Node.js)。

如需编译为二进制文件:

go build -o ds2api ./cmd/ds2api
./ds2api

配置文件详解

配置文件 config.json 的核心字段说明:

字段 说明
keys / api_keys 客户端访问密钥。api_keys 支持 name 和 remark 元信息
accounts DeepSeek 托管账号,支持 email 或 mobile 登录,可配置代理、名称和备注
model_aliases 模型别名映射(OpenAI / Claude / Gemini 共用)
runtime 账号并发、队列与 Token 刷新策略,可通过 Admin API 热更新
auto_delete.mode 请求结束后的远端会话清理策略:none / single / all
thinking_injection 思考增强提示词(默认开启)
current_input_file 长上下文拆分上传策略(默认开启)

完整配置请参考项目中的 config.example.json

Nginx 反向代理配置

如果你需要在 Nginx 后部署,必须关闭缓冲以保证 SSE 流式响应正常:

server {
    listen 443 ssl;
    server_name api.example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://127.0.0.1:5001;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
        proxy_cache off;
        chunked_transfer_encoding on;
        tcp_nodelay on;
    }
}

Linux systemd 服务化

让 DS2API 在后台持续运行,并开机自启。

1. 复制文件到目标目录

sudo mkdir -p /opt/ds2api
sudo cp ds2api config.json /opt/ds2api/
sudo cp -r static/admin /opt/ds2api/static/admin

2. 创建 systemd 服务文件

# /etc/systemd/system/ds2api.service

[Unit]
Description=DS2API (Go)
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/ds2api
Environment=PORT=5001
Environment=DS2API_CONFIG_PATH=/opt/ds2api/config.json
Environment=DS2API_ADMIN_KEY=your-admin-key-here
ExecStart=/opt/ds2api/ds2api
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

3. 启动与管理

# 加载服务配置
sudo systemctl daemon-reload

# 设置开机自启
sudo systemctl enable ds2api

# 启动服务
sudo systemctl start ds2api

# 查看状态
sudo systemctl status ds2api

# 查看日志
sudo journalctl -u ds2api -f

# 重启服务
sudo systemctl restart ds2api

部署后验证

无论使用哪种部署方式,启动后建议依次检查:

# 1. 存活探针
curl -s http://127.0.0.1:5001/healthz
# 预期: {"status":"ok"}

# 2. 就绪探针
curl -s http://127.0.0.1:5001/readyz
# 预期: {"status":"ready"}

# 3. 模型列表
curl -s http://127.0.0.1:5001/v1/models
# 预期: {"object":"list","data":[...]}

# 4. 管理台页面
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:5001/admin
# 预期: 200

# 5. 测试 API 调用
curl http://127.0.0.1:5001/v1/chat/completions \
  -H "Authorization: Bearer your-api-key-1" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"hello"}]}'

鉴权模式说明

调用业务接口时支持两种鉴权模式:

模式 说明
托管账号模式 传入 config.keys 中的 key,由服务自动轮询选择账号
直通 Token 模式 传入的 Token 不在 config.keys 中时,直接作为 DeepSeek Token 使用

还支持通过请求头 X-Ds2-Target-Account 指定使用某个托管账号(值为 email 或 mobile)。

并发模型

每账号可用并发 = DS2API_ACCOUNT_MAX_INFLIGHT(默认 2)
建议并发值 = 账号数量 × 每账号并发上限
等待队列上限 = DS2API_ACCOUNT_MAX_QUEUE(默认 = 建议并发值)
429 阈值 = in-flight + 等待队列 ≈ 账号数量 × 4

当 in-flight 槽位满时请求进入等待队列,不会立即返回 429;超出总承载上限后才返回 429 Too Many Requests。

常见问题排查

Docker 部署后面板打不开?

  1. 检查端口是否一致:PORT 改成非 5001 时,访问地址也要对应修改
  2. 检查开发 compose 的 WebUI 静态文件:是否需要先构建一次 ./scripts/build-webui.sh

Vercel Go 构建失败?

  1. 进入 Vercel Project Settings → Build and Development Settings
  2. 清空自定义 Go Build Flags / Build Command
  3. 若必须设置 ldflags,使用 -ldflags="-s -w"(保证它是一个参数)
  4. 重新部署(建议清缓存后 Redeploy)

Claude Code 接入注意事项

  1. ANTHROPIC_BASE_URL 推荐直接指向 DS2API 根地址(如 http://127.0.0.1:5001
  2. ANTHROPIC_API_KEY 需要与 config.json 中的 keys 一致
  3. 如设置了系统代理,需对 DS2API 地址配置 NO_PROXY=127.0.0.1,localhost

总结

DS2API 是一个非常实用的开源工具,它让你能将 DeepSeek 网页端的对话能力转化为标准 API 接口,从而无缝对接 OpenAI、Claude、Gemini 等生态。无论是个人使用还是团队协作,都有合适的部署方式可选。

如果你在使用过程中遇到问题,可以前往项目的 GitHub Issues 反馈。

免责声明:本项目基于逆向方式实现,仅供学习、研究、个人实验和内部验证使用,请勿用于违反服务条款或法律法规的场景。

© 版权声明

相关文章