Skip to content

ticaxox/Responses-proxy

Repository files navigation

Responses Proxy

将 OpenAI 风格的 /v1/responses 请求转换并转发到只支持 /v1/chat/completions 的上游服务,同时提供中文 Web 管理台,用于管理上游、路由、密钥、健康检查和请求日志。

项目简介

适用场景:

  • 客户端需要调用 /v1/responses
  • 上游服务只支持 /v1/chat/completions
  • 需要一个可视化后台管理多上游和下游密钥
  • 希望通过 Docker 在单机环境快速部署

仓库地址:

Release 页面:

功能

  • 入站接口:POST /v1/responses
  • 模型列表:GET /v1/models
  • 健康检查:GET /healthzGET /readyz
  • 中文管理台:/admin
  • 多上游管理
  • 路由管理与模型映射
  • 下游 API Key 管理
  • 请求日志与健康检查记录
  • SQLite 持久化
  • Docker / Docker Compose 部署

技术栈

  • 后端:Node.js + TypeScript + Fastify
  • 前端:React + Vite
  • 数据库:SQLite
  • ORM:Prisma
  • 部署:Docker / Docker Compose

目录结构

.
├─ apps/
│  ├─ server/
│  │  ├─ prisma/
│  │  ├─ scripts/
│  │  ├─ src/
│  │  │  ├─ adapters/
│  │  │  ├─ lib/
│  │  │  ├─ plugins/
│  │  │  ├─ routes/
│  │  │  ├─ services/
│  │  │  ├─ types/
│  │  │  └─ utils/
│  │  └─ tests/
│  └─ web/
│     └─ src/
│        ├─ api/
│        ├─ components/
│        ├─ features/admin/
│        ├─ pages/
│        └─ styles/
├─ docker-compose.yml
├─ Dockerfile
├─ package.json
└─ .env.example

端口说明

当前项目统一按 8080:8080 使用:

  • 代码默认监听端口:8080
  • 容器暴露端口:8080
  • Docker Compose 默认映射:宿主机 8080 -> 容器 8080
  • 本地访问地址:http://localhost:8080

常用入口:

  • 管理台:http://localhost:8080/admin
  • API:http://localhost:8080

默认配置

默认配置如下:

PORT=8080
DATABASE_URL=file:./prisma/dev.db
ADMIN_INITIAL_PASSWORD=admin123456
ADMIN_JWT_SECRET=responses-proxy-jwt-secret-change-me
ENCRYPTION_SECRET=responses-proxy-encryption-secret-change-me

这些默认值仅适合测试环境,公网部署前请务必修改密钥和密码。

安装与启动

方式一:本地源码运行

  1. 进入项目目录
cd Responses-proxy
  1. 安装依赖
npm install
  1. 复制环境变量文件

Linux / macOS:

cp .env.example .env

Windows PowerShell:

Copy-Item .env.example .env
  1. 修改 .env

至少建议设置:

  • PORT=8080
  • ADMIN_INITIAL_PASSWORD
  • ADMIN_JWT_SECRET
  • ENCRYPTION_SECRET
  1. 生成 Prisma Client
npm run db:generate
  1. 初始化数据库
npm run db:init
  1. 构建项目
npm run build
  1. 启动服务
npm run start

方式二:开发模式

后端:

npm run dev

前端:

npm run dev:web

方式三:Docker Compose

  1. 准备环境变量文件
cp .env.example .env
  1. 确认 .env 中设置:
PORT=8080
HOST_PORT=8080
  1. 启动
docker compose up -d --build
  1. 查看日志
docker compose logs -f
  1. 停止
docker compose down

默认会创建两个 Docker volume:

  • responses_proxy_data
  • responses_proxy_logs

方式四:直接运行镜像

docker run -d \
  --name responses-proxy \
  -p 8080:8080 \
  -e PORT=8080 \
  -e ADMIN_INITIAL_PASSWORD=admin123456 \
  -e ADMIN_JWT_SECRET=responses-proxy-jwt-secret-change-me \
  -e ENCRYPTION_SECRET=responses-proxy-encryption-secret-change-me \
  -v responses_proxy_data:/app/apps/server/prisma \
  -v responses_proxy_logs:/app/logs \
  responses-proxy:latest

环境变量

推荐值:

PORT=8080
NODE_ENV=production
DATABASE_URL=file:./prisma/dev.db
HOST_BIND=0.0.0.0
HOST_PORT=8080
ADMIN_INITIAL_PASSWORD=admin123456
ADMIN_JWT_SECRET=responses-proxy-jwt-secret-change-me
ENCRYPTION_SECRET=responses-proxy-encryption-secret-change-me
LOG_LEVEL=info
LOG_REQUEST_BODIES=false
HEALTHCHECK_INTERVAL_MS=30000
CIRCUIT_OPEN_THRESHOLD=3
CIRCUIT_OPEN_MS=120000
DEFAULT_RATE_LIMIT_WINDOW_MS=60000
DEFAULT_RATE_LIMIT_REQUESTS=60

管理台使用

默认管理员账号:

  • 用户名:admin
  • 密码:admin123456

首次进入后建议立即修改密码。

管理台可完成:

  • 添加和编辑上游
  • 配置路由与模型映射
  • 创建和复制下游密钥
  • 查看请求日志
  • 查看健康检查结果

API 示例

创建响应

curl http://localhost:8080/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-your-client-key" \
  -d '{
    "model": "gpt-5.4",
    "input": "你好,给我一句测试回复。"
  }'

获取模型列表

curl http://localhost:8080/v1/models \
  -H "Authorization: Bearer sk-your-client-key"

健康检查

curl http://localhost:8080/healthz
curl http://localhost:8080/readyz

Release 资产说明

当前 Release 中上传的是按版本号命名的 Docker 镜像导出包,例如:

  • responses-proxy-v0.1.0.tar.gz

它可用于离线导入或迁移部署。

导入方式:

docker load < responses-proxy-v0.1.0.tar.gz

导入后运行:

docker run -d -p 8080:8080 -e PORT=8080 responses-proxy:latest

常用命令

npm install
npm run lint
npm run test
npm run build
npm run start
npm run db:generate
npm run db:init
docker compose up -d --build
docker compose logs -f

持久化说明

数据库默认位于:

apps/server/prisma/dev.db

Docker Compose 默认使用以下 volume 持久化:

  • responses_proxy_data
  • responses_proxy_logs

删除容器不会自动删除这些数据;删除 volume 才会清空数据。

安全建议

  • 公网部署前修改管理员密码
  • 公网部署前修改 ADMIN_JWT_SECRET
  • 公网部署前修改 ENCRYPTION_SECRET
  • 默认不要开启 LOG_REQUEST_BODIES
  • 建议通过反向代理或防火墙限制管理台访问

当前定位

当前项目重点是:

  • 兼容 /v1/responses
  • 适配只支持 /v1/chat/completions 的上游
  • 提供简洁可用的单机部署管理台

Anthropic 协议不是当前版本重点。

About

OpenAI Responses 转 Chat Completions 的代理网关,附带中文管理台与 Docker 单机部署。

Topics

Resources

Stars

Watchers

Forks

Contributors