这是一个用于管理OpenAI API中转站的系统,可以管理多个中转站、分组和模型,并提供溯源功能。
- 中转站管理:添加、编辑、删除中转站
- 分组管理:为每个中转站添加多个分组,每个分组有独立的API Key
- 模型管理:自动获取每个分组可用的模型列表
- 溯源功能:通过图片URL追踪请求,记录中转节点的IP和UA信息
- 溯源历史:查看和删除溯源历史记录
- 前端:Vue 3 + Vue Router + Ant Design Vue + Axios
- 后端:Express + SQLite
- 构建工具:Vite
- 容器化:Docker + Nginx
-
查找one-api有没有获取模型价格的api,找到了,不过shell api需要用户登录
-
模型列表中,可以查看每一个模型添加价格,用户可以编辑价格
-
增加是否逆向的标签
-
添加扫描ip端口的能力
- Node.js 14.0+
- npm 或 yarn
- Docker(如果使用Docker部署)
# 构建Docker镜像
docker build -t openai-proxy-manager .
# 运行Docker容器
docker run -p 80:80 -v $(pwd)/server/data:/app/server/data openai-proxy-manager
或者使用docker-compose:
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
# 安装根目录依赖
npm install
# 安装前端依赖
cd client
npm install
# 安装后端依赖
cd ../server
npm install
# 在根目录运行前后端
npm start
# 或分别运行
# 运行前端开发服务器
cd client
npm run dev
# 运行后端开发服务器
cd ../server
npm run dev
# 构建前端
cd client
npm run build
# 运行后端服务器(会自动提供前端静态文件)
cd ../server
npm start
openai-proxy-manager/
├── client/ # 前端代码
│ ├── public/ # 静态资源
│ ├── src/ # 源代码
│ │ ├── assets/ # 资源文件
│ │ ├── components/ # 组件
│ │ ├── router/ # 路由配置
│ │ ├── store/ # 状态管理
│ │ ├── views/ # 页面视图
│ │ ├── App.vue # 主应用组件
│ │ └── main.js # 入口文件
│ ├── index.html # HTML模板
│ └── vite.config.js # Vite配置
├── server/ # 后端代码
│ ├── data/ # 数据库文件
│ ├── src/ # 源代码
│ │ ├── controllers/ # 控制器
│ │ ├── models/ # 数据模型
│ │ ├── routes/ # 路由
│ │ ├── utils/ # 工具函数
│ │ └── index.js # 入口文件
│ └── package.json # 项目配置
├── Dockerfile # Docker构建文件
├── docker-compose.yml # Docker Compose配置
├── nginx.conf # Nginx配置
├── start.sh # Docker启动脚本
└── README.md # 项目说明
GET /api/proxies
- 获取所有中转站GET /api/proxies/:id
- 获取单个中转站POST /api/proxies
- 创建中转站PUT /api/proxies/:id
- 更新中转站DELETE /api/proxies/:id
- 删除中转站
GET /api/proxies/:proxyId/groups
- 获取中转站的所有分组GET /api/groups/:id
- 获取单个分组POST /api/groups
- 创建分组PUT /api/groups/:id
- 更新分组DELETE /api/groups/:id
- 删除分组POST /api/groups/:id/refresh-models
- 刷新分组的模型列表
GET /api/traces
- 获取所有溯源记录GET /api/traces/:id
- 获取单个溯源记录GET /api/traces/model/:modelId
- 获取模型的溯源记录POST /api/traces
- 创建溯源记录DELETE /api/traces/:id
- 删除溯源记录GET /api/img?traceid=xxx
- 溯源图片请求
当用户发送OpenAI API请求时,请求中会包含一个图片的URL,该URL指向当前系统,并附带traceId。例如:/api/img?traceid=xxx
。系统会返回一个随机图片,并记录请求者的IP地址和时间。
如果请求通过中转节点,中转节点会访问该图片URL,从而记录下访问者的IP和UA等信息。在OpenAI API请求完成后,程序会查询数据库,检测是否有与当前traceId匹配的请求记录。
MIT