基于 xiaoY233/Chat2API 改造的 OpenAI 兼容代理服务:通过登录 DeepSeek / Qwen / Z.ai 官方网页版,把网页端能力封装成标准 OpenAI API,实现"零成本"调用主流模型。
- 原项目是 Electron 桌面工具(Koa 本地代理);本仓库将核心代理改为 Java (Spring Boot) 后端服务,可独立部署在服务器上,配合 Web 管理后台 + Electron 上报客户端使用,部署、运维更方便。
- 模型提供商只保留三个:DeepSeek、Qwen AI、Z.ai(原项目的 GLM、Kimi、MiniMax、Mimo、Perplexity 等已移除)。
| 模块 | 说明 |
|---|---|
backend-java |
Spring Boot 3.3 / Java 17 后端:OpenAI 兼容接口(/v1/*)、账号 / API Key / 模型映射管理、请求日志、会话、工具调用、上报接口 |
admin-web |
React + Vite 管理后台:账号管理、API Key 发放、模型映射、代理配置、日志查询 |
reporter-electron |
Electron 客户端:登录三家官方网页版,自动提取 token/cookie 并上报到后端 |
- DeepSeek —
chat.deepseek.com - Qwen AI —
chat.qwen.ai(支持思考模式enable_thinking) - Z.ai —
chat.z.ai
- JDK 17
- MySQL 8(连接串带
createDatabaseIfNotExist=true,首次启动自动建库)
cd backend-java
# 构建可执行 jar
./gradlew bootJar # Windows: gradlew.bat bootJar
java -jar build/libs/*.jar开发模式直接运行:./gradlew bootRun(或 Windows gradlew.bat bootRun)。
| 变量 | 说明 | 默认值 |
|---|---|---|
CHAT2API_SERVER_PORT |
服务端口 | 8080 |
CHAT2API_DB_URL |
MySQL 连接串 | jdbc:mysql://127.0.0.1:3306/chat2api?... |
CHAT2API_DB_USERNAME |
数据库用户名 | root |
CHAT2API_DB_PASSWORD |
数据库密码 | 空 |
CHAT2API_ENCRYPTION_KEY |
账号凭据 AES 加密密钥 | dev-only-change-this-secret-key |
CHAT2API_ADMIN_USERNAME |
管理后台用户名 | admin |
CHAT2API_ADMIN_PASSWORD |
管理后台密码 | admin123456 |
CHAT2API_JWT_SECRET |
JWT 签名密钥 | dev-only-change-this-jwt-secret |
CHAT2API_LOG_LEVEL |
日志级别 | INFO |
⚠️ 生产环境务必修改CHAT2API_ENCRYPTION_KEY、CHAT2API_JWT_SECRET、CHAT2API_ADMIN_PASSWORD。
cd admin-web
npm install
npm run build # 产物在 dist/开发模式:npm run dev(默认 http://localhost:5174)。
生产环境建议用 Nginx 托管 dist/ 静态资源,并将 /api、/v1 反向代理到后端(如 http://127.0.0.1:8080)。
cd reporter-electron
npm install
npm run dev工作流:
- 配置后端地址
- 注册上报客户端
- 选择提供商(DeepSeek / Qwen / Z.ai),打开官方登录页并登录
- 自动提取凭据(或手动粘贴凭据 JSON)
- 上报账号到后端
- 管理员登录管理后台(默认
admin/admin123456)。 - 用 reporter-electron 登录并上报各平台账号;支持多账号,后端按负载均衡策略(轮询 / 优先填充 / 故障转移)自动分配。
- 在管理后台创建 API Key(
c2a_xxx格式),按需配置模型映射。 - 在任意 OpenAI 兼容客户端(OpenAI SDK、Chatbox、NextChat、One API、Cursor 等)中填写:
Base URL: http://127.0.0.1:8080/v1
API Key: c2a_xxx
经域名部署时把 Base URL 换成
https://你的域名/v1。
# 普通对话
curl -X POST 'http://127.0.0.1:8080/v1/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer c2a_xxx' \
-d '{
"model": "模型名称",
"messages": [{"role": "user", "content": "你好"}]
}'
# 流式对话
curl -N -X POST 'http://127.0.0.1:8080/v1/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer c2a_xxx' \
-d '{
"model": "模型名称",
"stream": true,
"messages": [{"role": "user", "content": "请写一段简短介绍"}]
}'
# 查询可用模型
curl 'http://127.0.0.1:8080/v1/models' -H 'Authorization: Bearer c2a_xxx'请求体可携带 enable_thinking 控制 Qwen 是否使用思考模式:
enable_thinking: true— 思考模式enable_thinking: false— 快速模式- 不传 — 使用管理后台配置的默认值
本仓库基于 xiaoY233/Chat2API 修改,感谢原作者的开源贡献。