Skip to content

🌈 Universal AI API Gateway - One key, all AI models. Support OpenAI, Anthropic & Gemini formats with smart load balancing.

License

Notifications You must be signed in to change notification settings

adnaan-worker/Prism-API

Repository files navigation

Prism API Logo

Prism API

棱镜 —— 通用 AI API 网关

License: MIT Go Version React Version PRs Welcome

作者:adnaan

功能特性快速开始文档架构


一个统一的 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 的特别之处

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

🚀 快速开始

使用 Docker Compose(推荐)

  1. 克隆仓库
# 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
  1. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,至少需要修改 JWT_SECRET
  1. 启动所有服务
docker-compose up -d
  1. 访问应用

本地开发

前置要求

  • 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=admin123

🧪 测试

后端测试

cd backend

# 运行所有测试
go test ./...

# 运行测试并生成覆盖率报告
go test -cover ./...

# 运行特定测试
go test -v ./internal/service -run TestAuthService

前端测试

cd portal  # 或 cd admin

# 运行测试
npm test

# 运行测试并生成覆盖率报告
npm test -- --coverage

📊 功能详情

用户门户

  • ✅ 用户注册和登录
  • ✅ API 密钥管理
  • ✅ 配额跟踪和每日签到
  • ✅ 模型浏览
  • ✅ 文档和代码示例
  • ✅ 个人统计和使用历史

管理面板

  • ✅ 用户管理(查看、启用/禁用、调整配额)
  • ✅ API 配置管理(增删改查、批量操作)
  • ✅ 负载均衡器配置
  • ✅ 统计概览(用户、请求、趋势)
  • ✅ 请求日志和导出

后端 API

  • ✅ 用户认证(JWT)
  • ✅ API 密钥认证
  • ✅ 速率限制(基于 Redis)
  • ✅ 多提供商适配器(OpenAI、Anthropic、Gemini)
  • ✅ 智能负载均衡
  • ✅ 配额管理
  • ✅ 请求日志记录
  • ✅ 管理员访问控制
  • ✅ 流式支持(SSE)

🔐 安全性

  • 密码加密:bcrypt 哈希
  • JWT 认证:安全的基于令牌的认证
  • API 密钥:安全的 sk- 前缀密钥
  • 速率限制:防止 API 滥用
  • 管理员权限:严格的访问控制
  • CORS 配置:跨域保护

🚀 性能

  • 连接池:优化的数据库和 Redis 连接
  • 缓存:热数据的 Redis 缓存
  • 负载均衡:智能请求分发
  • 异步处理:使用 Goroutines 处理并发请求
  • 索引优化:数据库查询优化

🤝 贡献

欢迎提交 Issues 和 Pull Requests!

👨‍💻 作者

Adnaan

🔗 仓库地址

📄 许可证

MIT

About

🌈 Universal AI API Gateway - One key, all AI models. Support OpenAI, Anthropic & Gemini formats with smart load balancing.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published