Tóm tắt nhanh:
- DS2API là cổng API mã nguồn mở viết bằng Go, biến giao diện DeepSeek Web thành endpoint API tương thích đồng thời với OpenAI, Claude (Anthropic) và Gemini (Google).
- Hỗ trợ đầy đủ các SDK phổ biến: OpenAI SDK, Anthropic SDK, Google Gemini SDK, Codex CLI, Vercel AI SDK, LangChain, LlamaIndex, OpenWebUI.
- Triển khai linh hoạt qua nhiều phương thức: Docker, Vercel, Zeabur, binary release hoặc build trực tiếp từ mã nguồn.
- Có sẵn WebUI quản trị tại
/admin, hỗ trợ pool nhiều tài khoản DeepSeek, queue concurrent request, PoW (Proof-of-Work) DeepSeekHashV1 native.- Cung cấp các model alias linh hoạt:
deepseek-v4-flash,deepseek-v4-pro, các biến thể-nothinking,-search,-visioncùng alias kiểugpt-4.1,gpt-5,claude-*,gemini-*.
Mấy tuần trước mình đang loay hoay với một dự án nhỏ cần dùng AI để xử lý data. Vấn đề là: ChatGPT Plus và Business vừa rồi quét gắt quá, mà dùng API chính thống thì sao chịu nổi. Trong khi đó, DeepSeek Web lại miễn phí và cũng mạnh tương đối. Mình từng tìm kiếm các giải pháp tương tự rồi mà chưa ưng cái nào.
Và rồi mình tìm thấy DS2API trên GitHub. Đây là một project do tác giả CJackHwang phát triển, viết bằng Go, đóng vai trò như một cây cầu giữa giao diện DeepSeek Web và các API chuẩn. Nói cách khác, sau khi cài DS2API, bạn có thể gọi DeepSeek y hệt cách gọi OpenAI, Claude hoặc Gemini – tất cả thông qua endpoint local của mình.

DS2API giải quyết bài toán gì
DS2API hướng đến ba nhóm vấn đề rất thực tế:
- Tận dụng tài nguyên DeepSeek Web miễn phí thay vì trả tiền cho API Key chính thức.
- Đa dạng giao thức tương thích – không cần viết lại code, ứng dụng đang dùng OpenAI SDK chỉ cần đổi
base_urllà dùng được. - Tự host hoàn toàn – dữ liệu prompt và response không đi qua bên thứ ba nào ngoài DeepSeek.
Toàn bộ source code và documentation chính thức nằm tại kho lưu trữ DS2API trên GitHub, mình khuyên các bạn star repo trước khi đọc tiếp.
Những điểm khiến mình ưng nhất
Sau khi vọc thử vài ngày, đây là những thứ mình thấy hay:
- Pool tài khoản và queue: bạn có thể thêm nhiều account DeepSeek, DS2API tự động xoay tour và xếp hàng request.
- Tool Calling đầy đủ: hỗ trợ
delta.tool_callscủa OpenAI,tool_usecủa Claude,functionCallcủa Gemini – tức là agent framework như LangChain dùng được ngon. - PoW DeepSeekHashV1 native: implement bằng Go nên rất nhanh, không cần Node helper.
- WebUI quản trị: vào
/admincó dashboard quản lý key, account, monitoring. - Vercel Node Runtime: stream SSE qua Vercel serverless edge, tận dụng được hạ tầng miễn phí.
Hướng dẫn cài đặt DS2API
Project hỗ trợ tới 4 cách triển khai. Mình sẽ chia sẻ hai cách phổ biến nhất là Docker (cho self-host) và Vercel (cho ai không có VPS).
Cách 1: Triển khai bằng Docker
Đây là cách mình recommend vì sạch sẽ, dễ update. Yêu cầu chỉ cần Docker và Docker Compose:
git clone https://github.com/CJackHwang/ds2api.git
cd ds2api
cp .env.example .env
cp config.example.json config.jsonMở file .env để chỉnh các biến quan trọng nhất:
DS2API_ADMIN_KEY=<đặt mật khẩu admin>
DS2API_HOST_PORT=5001Tiếp theo chỉnh config.json để thêm tài khoản DeepSeek (qua email/mobile) và cấu hình keys hoặc api_keys để client sử dụng. Nó sẽ dạng như này:
{
[...],
"accounts": [
{
"_comment": "vnROM",
"name": "vnROM 1",
"remark": "vnROM",
"email": "[email protected]",
"password": "password@123"
},
{
"_comment": "addROM",
"name": "addROM",
"email": "[email protected]",
"password": "password@123"
},
{
"_comment": "duyasia",
"name": "duyasia",
"email": "[email protected]",
"password": "password@123"
}
],
[...]
}Sau đó khởi động:
docker compose up -d
docker compose logs -fMặc định service chạy trên port 5001. Nếu muốn đổi, sửa DS2API_HOST_PORT trong .env. File config.json được mount vào container tại /data/config.json qua bind mount, nên mọi thay đổi ở host đều phản ánh sang container – rất tiện khi tinh chỉnh.

Cách 2: Triển khai trên Vercel (miễn phí)
Nếu bạn không có VPS, Vercel là lựa chọn tuyệt vời. Các bước:
- Fork repo về tài khoản GitHub của mình.
- Vào Vercel, chọn Import Project trỏ tới repo vừa fork.
- Trong Environment Variables, thêm hai biến:
DS2API_ADMIN_KEY: mật khẩu adminDS2API_CONFIG_JSON: nội dung config.json đã encode Base64
Để tạo Base64 từ config:
base64 < config.json | tr -d '\n'Lưu ý quan trọng:
Trên Vercel, endpoint
/v1/chat/completionssẽ chạy qua Node Runtime (api/chat-stream.js) để xử lý SSE và PoW prepare bằng Go, sau đó stream qua Node. Các endpoint khác vẫn chạy normal Go handler.
Cách 3: Tải binary release
Đây là cách nhanh nhất nếu bạn ngại Docker:
tar -xzf ds2api_<tag>_linux_arm64.tar.gz
cd ds2api_<tag>_linux_arm64
cp config.example.json config.json
./ds2apiGitHub Actions tự động build release cho Linux/macOS/Windows. Mình đã thử bản Linux arm64 chạy mượt mà.
Cách 4: Build từ mã nguồn
Yêu cầu Go 1.26+ và Node.js 20.19+ (hoặc 22.12+) nếu muốn build cả WebUI:
git clone https://github.com/CJackHwang/ds2api.git
cd ds2api
cp config.example.json config.json
go run ./cmd/ds2apiĐể build WebUI:
./scripts/build-webui.shHoặc thủ công:
cd webui
npm ci
npm run build -- --outDir static/admin --emptyOutDirHướng dẫn sử dụng thực tế
Sau khi DS2API chạy, bạn có thể gọi nó từ bất kỳ ứng dụng nào hỗ trợ OpenAI/Claude/Gemini API.
Sử dụng với OpenAI SDK
Chỉ cần đổi base_url thành endpoint local:
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:5001/v1",
api_key="your-key-from-config"
)
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "Xin chào!"}]
)
print(response.choices[0].message.content)
"gpt-4o": "deepseek-v4-flash",
"gpt-5.3-codex": "deepseek-v4-pro",
"gpt-5.5": "deepseek-v4-flash",
"o3": "deepseek-v4-pro"DS2API hỗ trợ alias rất hay: bạn có thể dùng gpt-4o, gpt-5.3-codex, gpt-5.5, o3 – chúng được map sang model DeepSeek tương ứng trong config.json. Suffix -nothinking để tắt chain-of-thought, -search để bật web search, -vision cho input ảnh.
[Ảnh minh họa: WebUI admin DS2API hiển thị danh sách account pool, key management và monitoring]
Sử dụng với Claude Code
Đây là use case mình thấy hay nhất. Set hai biến môi trường:
export ANTHROPIC_BASE_URL=http://127.0.0.1:5001
export ANTHROPIC_API_KEY=<key trong config.json>Sau đó chạy Claude Code như bình thường. DS2API sẽ map claude-sonnet-4-6 sang deepseek-v4-flash, claude-opus-4-6 sang deepseek-v4-pro. Nó còn convert protocol DSML của DeepSeek thành tool_use chuẩn của Claude một cách tự động.
Sử dụng với Gemini SDK
Endpoint Gemini available tại /v1beta/models/{model}:generateContent và /v1beta/models/{model}:streamGenerateContent. Chỉ cần set x-goog-api-key header bằng key trong config.
Truy cập WebUI quản trị

Mở trình duyệt vào http://127.0.0.1:5001/admin, đăng nhập bằng DS2API_ADMIN_KEY. Tại đây bạn có thể:
- Thêm/xóa tài khoản DeepSeek vào pool.
- Quản lý API key cho client.
- Xem real-time monitoring (request count, queue depth, account status).
- Test endpoint trực tiếp từ UI.
Health check
Hai endpoint tiện cho monitoring:
curl http://127.0.0.1:5001/healthz
curl http://127.0.0.1:5001/readyzMình thường set hai endpoint này vào Uptime Kuma để theo dõi.
Mình muốn nói thẳng: DS2API là một project rất sáng tạo, giải quyết đúng pain point của ae nghèo như mình. Đặc biệt là dùng được cho OpenClaw, tool call được luôn nhé ae. Tuy nhiên cũng cần lưu ý vài điểm trước khi sử dụng:
- Tuân thủ Terms of Service của DeepSeek: việc dùng giao diện Web qua API có thể vi phạm ToS, hãy đọc kỹ trước khi triển khai cho production.
- Dùng cho mục đích cá nhân/học tập: mình thấy hợp với side project, prototype, không khuyến khích đưa vào sản phẩm thương mại.
- Theo dõi update thường xuyên: DeepSeek có thể đổi giao thức, project cần cập nhật theo. Hãy bật notification trên repo để không bỏ sót release.
Để bắt đầu khám phá sâu hơn, các bạn ghé trang chủ DS2API trên GitHub và đọc kỹ phần docs/ARCHITECTURE.md cùng API.md. Một số hướng mở rộng mình đang định khám phá tiếp: tích hợp DS2API vào n8n để xây workflow automation chạy trên DeepSeek, dùng nó như backend cho OpenWebUI để có giao diện chat đẹp, hoặc kết hợp với LangChain để build agent xử lý dữ liệu cá nhân. Nếu bạn cũng đang đi cùng hướng, ới mình một tiếng nhé – cafe mình mời, chúng ta cùng bàn cách tận dụng DS2API hiệu quả nhất.








