一个统一的 AI API 网关,通过单一优雅的接口聚合多个 AI 服务提供商(OpenAI、Anthropic、Gemini)。就像棱镜将光线折射成多种颜色一样,Prism API 无缝地转换和路由不同 AI 提供商之间的请求。
- 🌈 通用接口:支持 OpenAI、Anthropic 和 Gemini 格式
- 🔄 多提供商支持:聚合多个 AI 服务提供商
- ⚖️ 智能负载均衡:轮询、加权、最少连接和随机策略
- 🔑 API 密钥管理:为每个用户生成独立的 API 密钥
- 💰 配额管理:灵活的配额分配和使用跟踪
- 📊 数据分析:详细的使用统计和请求日志
- 🚀 高性能:Redis 缓存和连接池优化
- 🔒 安全可靠:JWT 认证、速率限制和管理员访问控制
- 📱 现代化界面:使用 React 和 Ant Design 构建的用户友好界面
- 🌊 流式支持:所有提供商的完整 SSE 流式支持
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 用户门户 │ │ 管理面板 │ │ Nginx │
│ (React) │────▶│ (React) │────▶│ 反向代理 │
└─────────────┘ └─────────────┘ └──────┬──────┘
│
▼
┌─────────────┐
│ 后端 API │
│ (Go) │
└──────┬──────┘
│
┌──────────────────────┼──────────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ PostgreSQL │ │ Redis │ │ AI APIs │
│ 数据库 │ │ 缓存 │ │ 提供商 │
└─────────────┘ └─────────────┘ └─────────────┘
Prism API 充当 AI API 的通用转换器和路由器。就像棱镜将白光折射成光谱一样,Prism API:
- 折射任何格式的传入请求(OpenAI、Anthropic、Gemini)
- 转换为统一的内部格式
- 路由到适当的 AI 提供商
- 反射以原始格式返回响应
这意味着您可以:
- 使用 OpenAI 的格式调用 Claude 模型
- 使用 Anthropic 的格式调用 GPT 模型
- 使用 Gemini 的格式调用任何提供商
- 无需更改代码即可切换提供商
prism-api/
├── backend/ # Go 后端服务
│ ├── cmd/ # 应用程序入口
│ ├── config/ # 配置管理
│ ├── internal/ # 内部代码
│ │ ├── adapter/ # API 适配器(OpenAI、Anthropic、Gemini)
│ │ ├── api/ # HTTP 处理器
│ │ ├── loadbalancer/# 负载均衡策略
│ │ ├── middleware/ # 中间件(认证、速率限制)
│ │ ├── models/ # 数据模型
│ │ ├── repository/ # 数据访问层
│ │ └── service/ # 业务逻辑
│ ├── pkg/ # 公共库
│ └── scripts/ # 数据库迁移
├── portal/ # 用户门户(React)
│ ├── src/
│ │ ├── components/ # 组件
│ │ ├── layouts/ # 布局
│ │ ├── pages/ # 页面
│ │ ├── services/ # API 服务
│ │ └── router/ # 路由
│ └── public/ # 静态资源
├── admin/ # 管理面板(React)
│ └── src/ # 与 portal 结构类似
├── docs/ # 文档
│ ├── API.md # API 文档
│ ├── DEPLOYMENT.md # 部署指南
│ └── DEVELOPMENT.md # 开发指南
├── docker-compose.yml # Docker 配置
├── nginx.conf # Nginx 配置
└── README.md
- Go 1.23
- Gin 框架
- PostgreSQL 15
- Redis 7
- GORM
- React 18
- Vite
- Ant Design
- TanStack Query
- TypeScript
- 克隆仓库
# GitHub
git clone https://github.com/adnaan-worker/prism-api.git
cd prism-api
# 或者使用 Gitee(国内推荐)
git clone https://gitee.com/adnaan/prism-api.git
cd prism-api- 配置环境变量
cp .env.example .env
# 编辑 .env 文件,至少需要修改 JWT_SECRET- 启动所有服务
docker-compose up -d- 访问应用
- 用户门户:http://localhost:3000
- 管理面板:http://localhost:3001
- 后端 API:http://localhost:8080/api
- Go 1.23+
- Node.js 20+
- PostgreSQL 15+
- Redis 7+
cd backend
# 安装依赖
go mod download
# 启动数据库和 Redis
docker-compose up -d postgres redis
# 运行数据库迁移
go run scripts/migrate.go
# 启动服务器
go run cmd/server/main.go后端将运行在 http://localhost:8080
cd portal
# 安装依赖
npm install
# 启动开发服务器
npm run dev门户将运行在 http://localhost:3000
cd admin
# 安装依赖
npm install
# 启动开发服务器
npm run dev管理面板将运行在 http://localhost:3001
关键环境变量(参见 .env.example):
# 数据库
DATABASE_URL=postgres://postgres:postgres@localhost:5432/prism_api?sslmode=disable
DB_MAX_OPEN_CONNS=25
DB_MAX_IDLE_CONNS=5
DB_CONN_MAX_LIFETIME=5m
# Redis
REDIS_URL=redis://localhost:6379
REDIS_POOL_SIZE=10
REDIS_MIN_IDLE_CONN=2
# JWT(生产环境必须修改!)
JWT_SECRET=your-secret-key-change-in-production
# 服务器
PORT=8080
SERVER_READ_TIMEOUT=10s
SERVER_WRITE_TIMEOUT=10s
REQUEST_TIMEOUT=30s
# 初始管理员账户(可选)
ADMIN_USERNAME=admin
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=admin123cd backend
# 运行所有测试
go test ./...
# 运行测试并生成覆盖率报告
go test -cover ./...
# 运行特定测试
go test -v ./internal/service -run TestAuthServicecd portal # 或 cd admin
# 运行测试
npm test
# 运行测试并生成覆盖率报告
npm test -- --coverage- ✅ 用户注册和登录
- ✅ API 密钥管理
- ✅ 配额跟踪和每日签到
- ✅ 模型浏览
- ✅ 文档和代码示例
- ✅ 个人统计和使用历史
- ✅ 用户管理(查看、启用/禁用、调整配额)
- ✅ API 配置管理(增删改查、批量操作)
- ✅ 负载均衡器配置
- ✅ 统计概览(用户、请求、趋势)
- ✅ 请求日志和导出
- ✅ 用户认证(JWT)
- ✅ API 密钥认证
- ✅ 速率限制(基于 Redis)
- ✅ 多提供商适配器(OpenAI、Anthropic、Gemini)
- ✅ 智能负载均衡
- ✅ 配额管理
- ✅ 请求日志记录
- ✅ 管理员访问控制
- ✅ 流式支持(SSE)
- 密码加密:bcrypt 哈希
- JWT 认证:安全的基于令牌的认证
- API 密钥:安全的 sk- 前缀密钥
- 速率限制:防止 API 滥用
- 管理员权限:严格的访问控制
- CORS 配置:跨域保护
- 连接池:优化的数据库和 Redis 连接
- 缓存:热数据的 Redis 缓存
- 负载均衡:智能请求分发
- 异步处理:使用 Goroutines 处理并发请求
- 索引优化:数据库查询优化
欢迎提交 Issues 和 Pull Requests!
Adnaan
- GitHub: @adnaan-worker
- Gitee: @adnaan
- GitHub: https://github.com/adnaan-worker/prism-api
- Gitee: https://gitee.com/adnaan/prism-api(国内推荐)
MIT