# codex_api **Repository Path**: chees_cn/codex_api ## Basic Information - **Project Name**: codex_api - **Description**: codex的国内api接口转发服务,适用于服务端部署,然后给本地的codex使用,支持deepseek - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-07 - **Last Updated**: 2026-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Codex API — 多租户 AI 转发服务平台 > **Version:** v1.0.1 > **English:** [README_EN.md](README_EN.md) 基于 Node.js + Vue 3 的多租户 AI 模型转发服务平台,完全兼容 OpenAI API 格式(Chat Completions 和 Responses API),支持 DeepSeek、Kimi、OpenAI、SiliconFlow 等多家模型提供商,可作为 Codex CLI、Cursor、Continue、Aider 等 AI 编程工具的统一后端代理。 **核心目的**:让国内开发者能够更方便地使用 DeepSeek、Kimi 等优秀的国产大模型,不需要每次都手动配置复杂的代理参数,帮助大家快速上手。 --- ## 功能特性 ### 核心能力 - **双 API 兼容**:同时支持 OpenAI Chat Completions API(`/v1/chat/completions`)和 Responses API(`/v1/responses`)格式 - **多模型提供商**:支持 DeepSeek、Kimi、OpenAI、SiliconFlow、Kimi Code 等多家提供商,可自由切换 - **多租户架构**:用户注册/登录、独立 API Key 管理、独立服务配置 - **流式响应**:支持 SSE 流式和非流式响应,实时返回生成内容 - **工具调用(Tool Calls)**:自动修复多种非标准工具格式,支持多工具并行调用 - **模型名称映射**:客户端传入任意模型名,服务端自动匹配用户配置的提供商模型 - **请求日志记录**:完整的请求/响应日志,支持用量统计和调试分析 - **健康检查端点**:`/health` 用于服务状态监控 ### 前端管理界面 - **仪表盘**:用量统计、请求趋势图表 - **API Key 管理**:创建、查看、禁用 API Key - **提供商配置**:系统预设 + 用户自定义模型提供商 - **服务管理**:创建转发服务,绑定提供商和模型 - **请求日志**:查看历史请求详情 - **使用教程**:内置 Codex CLI 配置向导,手把手教你如何在 Windows 上配置转发服务 ### Kimi Code API 支持(v1.0.1 新增) - **编码智能体身份标识**:自动注入 `KimiCLI` 请求头(`User-Agent`、`X-Msh-Platform` 等),避免 403 权限错误 - **专用端点**:支持 `https://api.kimi.com/coding/v1` 编码智能体 API --- ## 项目结构 ``` codex-api/ ├── backend/ # Express + Prisma + MySQL 后端 │ ├── app.js # 应用入口 │ ├── src/ │ │ ├── config/ # 配置(数据库、环境变量) │ │ ├── controllers/ # 控制器(Auth、API Key、Provider 等) │ │ ├── middleware/ # 中间件(JWT 认证、API Key 认证) │ │ ├── routes/ # 路由定义 │ │ ├── services/ # 业务逻辑(代理转发核心) │ │ └── config/ │ ├── prisma/ │ │ ├── schema.prisma # 数据库模型定义 │ │ └── seed.js # 预设数据(系统提供商) │ ├── .env # 环境变量(本地) │ └── package.json # 后端依赖 │ ├── frontend/ # Vue 3 + Element Plus 前端 │ ├── src/ │ │ ├── views/ # 页面(登录、注册、仪表盘) │ │ ├── components/ # 公共组件 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── router/ # 路由配置 │ │ └── api/ # API 接口封装 │ └── package.json # 前端依赖 │ └── README.md # 本文档 ``` --- ## 快速开始 ### 环境要求 - Node.js 18+ - MySQL 8.0+ ### 1. 克隆仓库 ```bash git clone cd codex-api ``` ### 2. 数据库配置 创建 MySQL 数据库,然后配置后端环境变量: ```bash cd backend cp .env.example .env ``` 编辑 `backend/.env`: ```env # 服务端口 PORT=8001 # 数据库配置(分字段填写,避免连接字符串格式错误) # Database localhost:3306 DB_HOST=localhost DB_PORT=3306 DB_USER=username DB_PASSWORD=password DB_NAME=codexapi DB_CONNECTION_LIMIT=10 # JWT 配置 JWT_SECRET=your-super-secret-jwt-key-change-in-production JWT_EXPIRES_IN=7d ``` ### 3. 初始化数据库 ```bash cd backend npx prisma migrate dev --name init npx prisma generate npm run db:seed # 插入系统预设提供商(DeepSeek、Kimi、OpenAI、SiliconFlow、Kimi Code) ``` ### 4. 启动后端 ```bash cd backend npm install npm start ``` 后端服务将在 `http://127.0.0.1:8001` 启动。 ### 5. 启动前端 ```bash cd frontend npm install npm run dev ``` 前端开发服务器将在 `http://127.0.0.1:5173` 启动。 --- ## 系统预设提供商 执行 `npm run db:seed` 后,系统会自动创建以下预设提供商: | 名称 | 显示名称 | Base URL | 说明 | |------|---------|----------|------| | `deepseek` | DeepSeek | `https://api.deepseek.com` | 深度求索 | | `kimi` | Moonshot AI (Kimi) | `https://api.moonshot.cn` | 月之暗面 | | `kimi-code` | Kimi Code | `https://api.kimi.com/coding/v1` | 编码智能体(需订阅) | | `openai` | OpenAI | `https://api.openai.com` | OpenAI GPT | | `siliconflow` | SiliconFlow | `https://api.siliconflow.cn` | 硅基流动 | --- ## API 端点 ### 代理端点(需 API Key 认证) | 方法 | 路径 | 说明 | |------|------|------| | POST | `/v1/chat/completions` | Chat Completions API(流式/非流式) | | POST | `/v1/responses` | Responses API(流式/非流式) | ### 管理端点 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/auth/register` | 用户注册 | | POST | `/api/auth/login` | 用户登录 | | GET | `/api/auth/me` | 获取当前用户信息 | | GET | `/api/providers` | 获取系统提供商列表 | | GET | `/api/user-providers` | 获取用户配置的提供商 | | POST | `/api/user-providers` | 创建用户提供商配置 | | GET | `/api/services` | 获取用户服务列表 | | POST | `/api/services` | 创建转发服务 | | GET | `/api/api-keys` | 获取 API Key 列表 | | POST | `/api/api-keys` | 创建 API Key | | GET | `/api/request-logs` | 获取请求日志 | | GET | `/health` | 健康检查 | ### API Key 认证方式 在请求头中携带 API Key: ```http Authorization: Bearer sk-your-api-key-here ``` --- ## 客户端配置指南 ### Codex CLI ```bash export OPENAI_API_KEY="sk-your-api-key" export OPENAI_BASE_URL="http://127.0.0.1:8001/v1" codex "Hello, world!" ``` ### Cursor 在 Cursor Settings → Models 中添加自定义模型: - **Model**: `deepseek-chat`(或你在服务中配置的任意模型名) - **Base URL**: `http://127.0.0.1:8001/v1` - **API Key**: `sk-your-api-key` ### Continue (VS Code) 在 `~/.continue/config.json` 中添加 OpenAI 兼容 provider: ```json { "models": [{ "title": "Codex API", "provider": "openai", "model": "deepseek-chat", "apiBase": "http://127.0.0.1:8001/v1", "apiKey": "sk-your-api-key" }] } ``` ### 通用 OpenAI SDK ```javascript import OpenAI from 'openai'; const client = new OpenAI({ apiKey: 'sk-your-api-key', baseURL: 'http://127.0.0.1:8001/v1', }); const stream = await client.chat.completions.create({ model: 'deepseek-chat', messages: [{ role: 'user', content: 'Hello!' }], stream: true, }); for await (const chunk of stream) { process.stdout.write(chunk.choices[0]?.delta?.content || ''); } ``` --- ## 请求示例 ### Chat Completions API ```bash curl http://127.0.0.1:8001/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-your-api-key" \ -d '{ "model": "deepseek-chat", "messages": [ { "role": "system", "content": "你是一个有帮助的助手。" }, { "role": "user", "content": "你好" } ], "stream": true }' ``` ### Responses API ```bash curl http://127.0.0.1:8001/v1/responses \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-your-api-key" \ -d '{ "model": "deepseek-chat", "input": "Hello, what is 2+2?", "stream": true }' ``` ### 工具调用 ```bash curl http://127.0.0.1:8001/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-your-api-key" \ -d '{ "model": "deepseek-chat", "messages": [{ "role": "user", "content": "北京天气怎么样?" }], "tools": [{ "type": "function", "function": { "name": "get_weather", "description": "获取天气信息", "parameters": { "type": "object", "properties": { "city": { "type": "string", "description": "城市名" } }, "required": ["city"] } } }], "stream": false }' ``` --- ## 版本历史 ### v1.0.1(当前版本) - 新增 Kimi Code API 支持,自动注入编码智能体身份标识请求头 - 数据库配置改为分字段格式(DB_HOST、DB_PORT、DB_USER 等),便于运维管理 - 优化代理服务核心逻辑,提升流式响应稳定性 ### v1.0.0 - 多租户 AI 转发服务平台初版 - 支持 Chat Completions 和 Responses API 双格式 - 支持 DeepSeek、Kimi、OpenAI、SiliconFlow 等多家模型提供商 - 前端管理界面(Vue 3 + Element Plus) - 用户系统、API Key 管理、服务配置、请求日志 --- ## 技术栈 ### 后端 - **Node.js** — 运行时 - **Express** — HTTP 服务框架 - **Prisma** — ORM 数据库访问 - **MySQL** — 数据持久化 - **OpenAI Node.js SDK** — 上游 API 客户端(兼容 OpenAI 格式) - **jsonwebtoken / bcryptjs** — JWT 认证与密码加密 - **dotenv** — 环境变量管理 ### 前端 - **Vue 3** — 渐进式框架 - **Element Plus** — UI 组件库 - **Pinia** — 状态管理 - **Vue Router** — 路由管理 - **ECharts** — 数据可视化 - **Vite** — 构建工具 --- ## License MIT