# GPT2API Node 基于 Node.js + Express 的 OpenAI Codex 反向代理服务,支持 JSON 文件导入 token,自动刷新 token,提供 OpenAI 兼容的 API 接口。 ## 功能特性 - ✅ OpenAI Codex 反向代理 - ✅ 自动 Token 刷新机制 - ✅ 支持流式和非流式响应 - ✅ OpenAI API 兼容接口 - ✅ JSON 文件导入 Token - ✅ 简单易用的配置 ## 快速开始 ### 1. 安装依赖 ```bash cd gpt2api-node npm install ``` ### 2. 配置 Token 从 CLIProxyAPI 或其他来源获取 token 文件,复制到项目根目录并命名为 `token.json`: ```json { "id_token": "your_id_token_here", "access_token": "your_access_token_here", "refresh_token": "your_refresh_token_here", "account_id": "your_account_id", "email": "your_email@example.com", "type": "codex", "expired": "2026-12-31T23:59:59.000Z", "last_refresh": "2026-01-01T00:00:00.000Z" } ``` ### 3. 配置环境变量(可选) 复制 `.env.example` 为 `.env` 并修改配置: ```bash cp .env.example .env ``` ```env PORT=3000 TOKEN_FILE=./token.json ``` ### 4. 启动服务 ```bash npm start ``` 开发模式(自动重启): ```bash npm run dev ``` ## API 接口 ### 聊天完成接口 **端点**: `POST /v1/chat/completions` **请求示例**: ```bash curl http://localhost:3000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.3-codex", "messages": [ {"role": "user", "content": "Hello!"} ], "stream": false }' ``` **流式请求**: ```bash curl http://localhost:3000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.3-codex", "messages": [ {"role": "user", "content": "Hello!"} ], "stream": true }' ``` ### 模型列表 **端点**: `GET /v1/models` ```bash curl http://localhost:3000/v1/models ``` ### 健康检查 **端点**: `GET /health` ```bash curl http://localhost:3000/health ``` ## 支持的模型 - `gpt-5.3-codex` - GPT 5.3 Codex(最新) - `gpt-5.3-codex-spark` - GPT 5.3 Codex Spark(超快速编码模型) - `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. 启动代理服务 ```bash cd gpt2api-node npm start ``` ### 2. 在 Cherry Studio 中配置 1. 打开 Cherry Studio 2. 进入 **设置** → **模型提供商** 3. 添加新的 **OpenAI 兼容** 提供商 4. 填写配置: - **名称**: GPT2API Node(或自定义名称) - **API 地址**: `http://localhost:3000/v1` - **API Key**: 随意填写(如 `dummy`),不会被验证 - **模型**: 选择或手动输入模型名称(如 `gpt-5.3-codex`) ### 3. 开始使用 配置完成后,在 Cherry Studio 中选择刚才添加的提供商和模型,即可开始对话。 ### 可用模型列表 在 Cherry Studio 中可以使用以下任意模型: - `gpt-5.3-codex` - 推荐,最新版本 - `gpt-5.3-codex-spark` - 超快速编码 - `gpt-5.2-codex` - 稳定版本 - `gpt-5.1-codex` - 较旧版本 - 其他 GPT-5 系列模型 ## 使用示例 ### Python ```python import openai client = openai.OpenAI( base_url="http://localhost:3000/v1", api_key="dummy" # 不需要真实的 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 ```javascript import OpenAI from 'openai'; const client = new OpenAI({ baseURL: 'http://localhost:3000/v1', apiKey: 'dummy' }); const response = await client.chat.completions.create({ model: 'gpt-5.3-codex', messages: [ { role: 'user', content: 'Hello!' } ] }); console.log(response.choices[0].message.content); ``` ### cURL ```bash curl http://localhost:3000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.3-codex", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What is the capital of France?"} ] }' ``` ## Token 管理 ### 自动刷新 服务会自动检测 token 是否过期(提前 5 分钟),并在需要时自动刷新。刷新后的 token 会自动保存到文件中。 ### 手动导入 如果你有从 CLIProxyAPI 导出的 token 文件,直接复制为 `token.json` 即可使用。 ### Token 文件格式 Token 文件必须包含以下字段: - `access_token`: 访问令牌 - `refresh_token`: 刷新令牌 - `id_token`: ID 令牌(可选) - `account_id`: 账户 ID(可选) - `email`: 邮箱(可选) - `expired`: 过期时间(ISO 8601 格式) - `type`: 类型(固定为 "codex") ## 项目结构 ``` gpt2api-node/ ├── src/ │ ├── index.js # 主服务器文件 │ ├── tokenManager.js # Token 管理模块 │ └── proxyHandler.js # 代理处理模块 ├── package.json ├── .env.example ├── token.example.json ├── .gitignore └── README.md ``` ## 注意事项 1. **Token 安全**: 请妥善保管 `token.json` 文件,不要提交到版本控制系统 2. **网络要求**: 需要能够访问 `chatgpt.com` 和 `auth.openai.com` 3. **Token 有效期**: Token 会自动刷新,但如果 refresh_token 失效,需要重新获取 4. **并发限制**: 根据 OpenAI 账户限制,注意控制并发请求数量 ## 故障排除 ### Token 加载失败 确保 `token.json` 文件存在且格式正确,参考 `token.example.json`。 ### Token 刷新失败 可能是 refresh_token 已过期,需要重新从 CLIProxyAPI 获取新的 token。 ### 代理请求失败 检查网络连接,确保能够访问 OpenAI 服务。 ## 许可证 MIT License ## 相关项目 - [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) - 原始 Go 语言实现