mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-04 08:25:26 +08:00
Merge branch 'dev' into codex/update-project-documentation-and-version-number-0jh1p4
This commit is contained in:
@@ -98,7 +98,9 @@ Gemini-compatible clients can also send `x-goog-api-key`, `?key=`, or `?api_key=
|
||||
| Method | Path | Auth | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| GET | `/healthz` | None | Liveness probe |
|
||||
| HEAD | `/healthz` | None | Liveness probe (no body) |
|
||||
| GET | `/readyz` | None | Readiness probe |
|
||||
| HEAD | `/readyz` | None | Readiness probe (no body) |
|
||||
| GET | `/v1/models` | None | OpenAI model list |
|
||||
| GET | `/v1/models/{id}` | None | OpenAI single-model query (alias accepted) |
|
||||
| POST | `/v1/chat/completions` | Business | OpenAI chat completions |
|
||||
|
||||
2
API.md
2
API.md
@@ -98,7 +98,9 @@ Gemini 兼容客户端还可以使用 `x-goog-api-key`、`?key=` 或 `?api_key=`
|
||||
| 方法 | 路径 | 鉴权 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| GET | `/healthz` | 无 | 存活探针 |
|
||||
| HEAD | `/healthz` | 无 | 存活探针(无响应体) |
|
||||
| GET | `/readyz` | 无 | 就绪探针 |
|
||||
| HEAD | `/readyz` | 无 | 就绪探针(无响应体) |
|
||||
| GET | `/v1/models` | 无 | OpenAI 模型列表 |
|
||||
| GET | `/v1/models/{id}` | 无 | OpenAI 单模型查询(支持 alias 入参) |
|
||||
| POST | `/v1/chat/completions` | 业务 | OpenAI 对话补全 |
|
||||
|
||||
33
README.MD
33
README.MD
@@ -28,28 +28,28 @@
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
Client["🖥️ 客户端\n(OpenAI / Claude / Gemini 兼容)"]
|
||||
Client["🖥️ 客户端 / SDK\n(OpenAI / Claude / Gemini)"]
|
||||
|
||||
subgraph DS2API["DS2API 服务"]
|
||||
direction TB
|
||||
CORS["CORS 中间件"]
|
||||
Auth["🔐 鉴权中间件"]
|
||||
subgraph DS2API["DS2API 3.0(统一 Go 路由内核)"]
|
||||
Router["chi Router + 中间件\n(RequestID / Recoverer / CORS / Timeout)"]
|
||||
|
||||
subgraph Adapters["适配器层"]
|
||||
OA["OpenAI 适配器\n/v1/*"]
|
||||
CA["Claude 适配器\n/anthropic/*"]
|
||||
GA["Gemini 适配器\n/v1beta/models/*"]
|
||||
subgraph Adapters["协议适配层"]
|
||||
OA["OpenAI\n/v1/*"]
|
||||
CA["Claude\n/anthropic/* + /v1/messages"]
|
||||
GA["Gemini\n/v1beta/models/* + /v1/models/*"]
|
||||
end
|
||||
|
||||
subgraph Support["支撑模块"]
|
||||
Pool["📦 账号池 / 并发队列"]
|
||||
PoW["⚙️ PoW WASM\n(wazero)"]
|
||||
Stream["🌊 统一流式引擎\nstream + sse"]
|
||||
Sieve["🧰 Tool Sieve\nGo + Node 对齐"]
|
||||
subgraph Runtime["运行时与核心能力"]
|
||||
Auth["Auth Resolver\n(API key / bearer / x-goog-api-key)"]
|
||||
Pool["Account Pool + Queue\n(并发与轮询)"]
|
||||
DS["DeepSeek Client\n(Session / Auth / HTTP)"]
|
||||
Pow["PoW WASM (wazero)"]
|
||||
Tool["Tool Sieve\n(Go/Node 语义对齐)"]
|
||||
Format["Response Render\n(OpenAI/Claude/Gemini)"]
|
||||
end
|
||||
|
||||
Admin["🛠️ Admin API\n/admin/*"]
|
||||
WebUI["🌐 WebUI\n(/admin)"]
|
||||
Admin["Admin API\n/admin/*"]
|
||||
WebUI["WebUI Static\n/admin"]
|
||||
end
|
||||
|
||||
DS["☁️ DeepSeek API"]
|
||||
@@ -425,6 +425,7 @@ go run ./cmd/ds2api
|
||||
|
||||
```text
|
||||
ds2api/
|
||||
├── app/ # 统一 Handler 入口(供 Vercel / 本地共用)
|
||||
├── cmd/
|
||||
│ ├── ds2api/ # 本地 / 容器启动入口
|
||||
│ └── ds2api-tests/ # 端到端测试集入口
|
||||
|
||||
33
README.en.md
33
README.en.md
@@ -28,28 +28,28 @@ DS2API converts DeepSeek Web chat capability into OpenAI-compatible, Claude-comp
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
Client["🖥️ Clients\n(OpenAI / Claude / Gemini compat)"]
|
||||
Client["🖥️ Clients / SDKs\n(OpenAI / Claude / Gemini)"]
|
||||
|
||||
subgraph DS2API["DS2API Service"]
|
||||
direction TB
|
||||
CORS["CORS Middleware"]
|
||||
Auth["🔐 Auth Middleware"]
|
||||
subgraph DS2API["DS2API 3.0 (Unified Go Routing Core)"]
|
||||
Router["chi Router + Middleware\n(RequestID / Recoverer / CORS / Timeout)"]
|
||||
|
||||
subgraph Adapters["Adapter Layer"]
|
||||
OA["OpenAI Adapter\n/v1/*"]
|
||||
CA["Claude Adapter\n/anthropic/*"]
|
||||
GA["Gemini Adapter\n/v1beta/models/*"]
|
||||
subgraph Adapters["Protocol Adapters"]
|
||||
OA["OpenAI\n/v1/*"]
|
||||
CA["Claude\n/anthropic/* + /v1/messages"]
|
||||
GA["Gemini\n/v1beta/models/* + /v1/models/*"]
|
||||
end
|
||||
|
||||
subgraph Support["Support Modules"]
|
||||
Pool["📦 Account Pool / Queue"]
|
||||
PoW["⚙️ PoW WASM\n(wazero)"]
|
||||
Stream["🌊 Unified Streaming\nstream + sse"]
|
||||
Sieve["🧰 Tool Sieve\nGo + Node parity"]
|
||||
subgraph Runtime["Runtime + Core Capabilities"]
|
||||
Auth["Auth Resolver\n(API key / bearer / x-goog-api-key)"]
|
||||
Pool["Account Pool + Queue\n(concurrency and rotation)"]
|
||||
DS["DeepSeek Client\n(session / auth / HTTP)"]
|
||||
Pow["PoW WASM (wazero)"]
|
||||
Tool["Tool Sieve\n(Go/Node semantic parity)"]
|
||||
Format["Response Render\n(OpenAI/Claude/Gemini)"]
|
||||
end
|
||||
|
||||
Admin["🛠️ Admin API\n/admin/*"]
|
||||
WebUI["🌐 WebUI\n(/admin)"]
|
||||
Admin["Admin API\n/admin/*"]
|
||||
WebUI["WebUI Static\n/admin"]
|
||||
end
|
||||
|
||||
DS["☁️ DeepSeek API"]
|
||||
@@ -419,6 +419,7 @@ Response fields include:
|
||||
|
||||
```text
|
||||
ds2api/
|
||||
├── app/ # Unified handler entry (shared by Vercel/local)
|
||||
├── cmd/
|
||||
│ ├── ds2api/ # Local / container entrypoint
|
||||
│ └── ds2api-tests/ # End-to-end testsuite entrypoint
|
||||
|
||||
@@ -94,6 +94,7 @@ Manually build WebUI to `static/admin/`:
|
||||
|
||||
```text
|
||||
ds2api/
|
||||
├── app/ # Unified handler entry (shared by Vercel/local)
|
||||
├── cmd/
|
||||
│ ├── ds2api/ # Local/container entrypoint
|
||||
│ └── ds2api-tests/ # End-to-end testsuite entrypoint
|
||||
|
||||
@@ -94,6 +94,7 @@ docker-compose -f docker-compose.dev.yml up
|
||||
|
||||
```text
|
||||
ds2api/
|
||||
├── app/ # 统一 Handler 入口(供 Vercel / 本地共用)
|
||||
├── cmd/
|
||||
│ ├── ds2api/ # 本地/容器启动入口
|
||||
│ └── ds2api-tests/ # 端到端测试集入口
|
||||
|
||||
Reference in New Issue
Block a user