Skip to content

lulistart/gpt2api-node

Repository files navigation

GPT2API Node

基于 Node.js + Express 的 OpenAI Codex 反向代理服务,支持多账号管理、自动刷新 token、负载均衡,提供 OpenAI 兼容的 API 接口和完整的管理后台。

界面预览

管理员登录

管理员登录

仪表盘

仪表盘

API Keys管理

API Keys 管理

账号管理

账号管理

数据分析

数据分析

系统设置

系统设置

功能特性

  • ✅ OpenAI Codex 反向代理
  • ✅ 完整的 Web 管理后台
  • ✅ 多账号管理和批量导入
  • ✅ 自动 Token 刷新机制
  • ✅ 负载均衡(轮询/随机/最少使用)
  • ✅ API Key 管理和认证
  • ✅ 请求统计和数据分析
  • ✅ 支持流式和非流式响应
  • ✅ OpenAI API 兼容接口
  • ✅ 批量删除账号功能
  • ✅ 实时活动记录

快速开始

方式一:Docker 部署(推荐)

使用 Docker Compose 一键部署:

# 克隆项目
git clone https://github.com/lulistart/gpt2api-node.git
cd gpt2api-node

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

服务将在 http://localhost:3000 启动。

方式二:本地部署

1. 安装依赖

cd gpt2api-node
npm install

2. 初始化数据库

npm run init-db

默认管理员账户:

  • 用户名:admin
  • 密码:admin123

3. 启动服务

npm start

开发模式(自动重启):

npm run dev

4. 访问管理后台

打开浏览器访问:http://localhost:3000/admin

使用默认账户登录后,请立即修改密码。

管理后台功能

仪表盘

  • 系统概览和实时统计
  • API Keys 数量
  • Token 账号数量
  • 今日请求数和成功率
  • 最近活动记录

API Keys 管理

  • 创建和管理 API Keys
  • 查看使用统计
  • 启用/禁用 API Key

账号管理

  • 批量导入 Token(支持 JSON 文件)
  • 手动添加账号
  • 批量删除账号
  • 查看账号额度和使用情况
  • 刷新账号额度
  • 负载均衡策略配置

数据分析

  • 请求量趋势图表
  • 模型使用分布
  • 账号详细统计
  • API 请求日志

系统设置

  • 修改管理员密码
  • 负载均衡策略设置

负载均衡策略

支持三种负载均衡策略:

  1. 轮询(round-robin):按顺序依次使用每个账号
  2. 随机(random):随机选择一个可用账号
  3. 最少使用(least-used):选择请求次数最少的账号

可在管理后台的账号管理页面或通过环境变量配置。

API 接口

聊天完成接口

端点: POST /v1/chat/completions

请求头:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

请求示例:

curl http://localhost:3000/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.3-codex",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ],
    "stream": false
  }'

流式请求:

curl http://localhost:3000/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.3-codex",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ],
    "stream": true
  }'

模型列表

端点: GET /v1/models

curl http://localhost:3000/v1/models

健康检查

端点: GET /health

curl http://localhost:3000/health

支持的模型

  • gpt-5.3-codex - GPT 5.3 Codex(最新)
  • gpt-5.2 - GPT 5.2
  • gpt-5.2-codex - GPT 5.2 Codex
  • gpt-5.1 - GPT 5.1
  • gpt-5.1-codex - GPT 5.1 Codex
  • gpt-5.1-codex-mini - GPT 5.1 Codex Mini(更快更便宜)
  • gpt-5.1-codex-max - GPT 5.1 Codex Max
  • gpt-5 - GPT 5
  • gpt-5-codex - GPT 5 Codex
  • gpt-5-codex-mini - GPT 5 Codex Mini

在 Cherry Studio 中使用

Cherry Studio 是一个支持多种 AI 服务的桌面客户端。配置步骤:

1. 创建 API Key

  1. 访问管理后台:http://localhost:3000/admin
  2. 进入 API Keys 页面
  3. 点击 创建 API Key
  4. 复制生成的 API Key(只显示一次)

2. 在 Cherry Studio 中配置

  1. 打开 Cherry Studio
  2. 进入 设置模型提供商
  3. 添加新的 OpenAI 兼容 提供商
  4. 填写配置:
    • 名称: GPT2API Node(或自定义名称)
    • API 地址: http://localhost:3000/v1
    • API Key: 粘贴刚才创建的 API Key
    • 模型: 选择或手动输入模型名称(如 gpt-5.3-codex

3. 开始使用

配置完成后,在 Cherry Studio 中选择刚才添加的提供商和模型,即可开始对话。

使用示例

Python

import openai

client = openai.OpenAI(
    base_url="http://localhost:3000/v1",
    api_key="YOUR_API_KEY"
)

response = client.chat.completions.create(
    model="gpt-5.3-codex",
    messages=[
        {"role": "user", "content": "Hello!"}
    ]
)

print(response.choices[0].message.content)

JavaScript/Node.js

import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'http://localhost:3000/v1',
  apiKey: 'YOUR_API_KEY'
});

const response = await client.chat.completions.create({
  model: 'gpt-5.3-codex',
  messages: [
    { role: 'user', content: 'Hello!' }
  ]
});

console.log(response.choices[0].message.content);

Token 管理

批量导入

  1. 准备 JSON 文件,格式如下:
[
  {
    "access_token": "your_access_token",
    "refresh_token": "your_refresh_token",
    "id_token": "your_id_token",
    "account_id": "account_id",
    "email": "email@example.com",
    "name": "账号名称"
  }
]
  1. 在管理后台的账号管理页面点击 导入 JSON
  2. 选择文件或粘贴 JSON 内容
  3. 预览后确认导入

手动添加

在管理后台的账号管理页面点击 手动添加,填写必要信息。

自动刷新

服务会自动检测 token 是否过期,并在需要时自动刷新。

环境变量配置

创建 .env 文件:

PORT=3000
SESSION_SECRET=your-secret-key-change-in-production
LOAD_BALANCE_STRATEGY=round-robin
MODELS_FILE=./models.json

项目结构

gpt2api-node/
├── src/
│   ├── index.js              # 主服务器文件
│   ├── tokenManager.js       # Token 管理模块
│   ├── proxyHandler.js       # 代理处理模块
│   ├── config/
│   │   └── database.js       # 数据库配置
│   ├── models/
│   │   └── index.js          # 数据模型
│   ├── routes/
│   │   ├── auth.js           # 认证路由
│   │   ├── apiKeys.js        # API Keys 路由
│   │   ├── tokens.js         # Tokens 路由
│   │   ├── stats.js          # 统计路由
│   │   └── settings.js       # 设置路由
│   ├── middleware/
│   │   └── auth.js           # 认证中间件
│   └── scripts/
│       └── initDatabase.js   # 数据库初始化脚本
├── public/
│   └── admin/                # 管理后台前端
│       ├── index.html
│       ├── login.html
│       └── js/
│           └── admin.js
├── database/
│   └── app.db                # SQLite 数据库
├── models.json               # 模型配置
├── package.json
└── README.md

注意事项

  1. 安全性:

    • 首次登录后请立即修改管理员密码
    • 妥善保管 API Keys
    • 生产环境请使用 HTTPS
  2. 网络要求: 需要能够访问 chatgpt.comauth.openai.com

  3. Token 有效期: Token 会自动刷新,但如果 refresh_token 失效,需要重新获取

  4. 并发限制: 根据 OpenAI 账户限制,注意控制并发请求数量

故障排除

无法访问管理后台

确保服务已启动,访问 http://localhost:3000/admin

数据库初始化失败

删除 database/app.db 文件,重新运行 npm run init-db

Token 刷新失败

可能是 refresh_token 已过期,需要重新导入新的 token

API 请求失败

  1. 检查 API Key 是否正确
  2. 确保有可用的 Token 账号
  3. 查看管理后台的请求日志

许可证

MIT License

相关项目

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors