@ziuchen/deepseek-api
v2.0.0
Published
OpenAI-compatible API server for DeepSeek
Readme
deepseek-api
An OpenAI-compatible DeepSeek API proxy server implemented with Node.js 20+.
Features
- ✅ Fully compatible with OpenAI API format
- ✅ Supports streaming responses (SSE)
- ✅ Supports deep thinking / reasoning chain (
reasoning_content) - ✅ Supports online search mode
- ✅ Local PoW computation (WASM)
- ✅ Server-side conversation reuse (reduces redundant sessions on DeepSeek)
- ✅ Zero production dependencies
Supported Models
DeepSeek V4 introduced two modes — 快速模式 (Flash) and 专家模式 (Pro) — each independently supporting deep thinking and web search.
| Model ID | Mode | Deep Thinking | Web Search |
|---|---|:---:|:---:|
| deepseek-v4-flash | 快速模式 | ❌ | ❌ |
| deepseek-v4-flash-thinking | 快速模式 | ✅ | ❌ |
| deepseek-v4-flash-search | 快速模式 | ❌ | ✅ |
| deepseek-v4-flash-thinking-search | 快速模式 | ✅ | ✅ |
| deepseek-v4-pro | 专家模式 | ❌ | ❌ |
| deepseek-v4-pro-thinking | 专家模式 | ✅ | ❌ |
| deepseek-v4-pro-search | 专家模式 | ❌ | ✅ |
| deepseek-v4-pro-thinking-search | 专家模式 | ✅ | ✅ |
Quick Start
Install dependencies
pnpm installConfigure environment variables
cp .env.example .env
# Edit the .env file (optional, defaults work out of the box)Development mode
pnpm devProduction build
pnpm build
pnpm startEnvironment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| LISTEN_HOST | Listening address | 127.0.0.1 |
| LISTEN_PORT | Listening port | 5001 |
| DATA_DIR | Data directory for persistent storage (conversations, etc.). Unset = memory only | (unset) |
| DEBUG_LOG_OUTPUT | Enable debug logging (1 or true to enable) | (disabled) |
API Endpoints
GET /v1/models
List available models.
POST /v1/chat/completions
Create a chat completion.
Request example:
curl http://127.0.0.1:5001/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_DEEPSEEK_TOKEN" \
-d '{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": true
}'Authentication
Pass DeepSeek's Bearer Token directly in the Authorization header.
You can obtain the token from DeepSeek web app (chat.deepseek.com):
- Open browser DevTools (F12)
- Go to Application → Local Storage →
https://chat.deepseek.com - Copy the value of the
userTokenkey
Project Structure
src/
├── index.ts # Main entry - HTTP server
├── types.ts # Type definitions
├── constants.ts # Constants and env config
├── logger.ts # Unified logger (DEBUG_LOG_OUTPUT control)
├── utils.ts # Utility functions
├── pow.ts # PoW WASM computation
├── account.ts # Token extraction from request
├── stream-parser.ts # DeepSeek stream response parser
├── deepseek.ts # DeepSeek API calls
├── conversation-store.ts # Server-side conversation state management
└── routes.ts # Route handlers
public/
└── sha3_wasm_bg.*.wasm # PoW computation WASM file