tdn-001/Ai-Gateway

GitHub: tdn-001/Ai-Gateway

一个兼容 OpenAI API 协议的智能 AI 模型网关,通过异常自动恢复、SSE 流式缓存和多 Key 轮询机制,提升免费大语言模型集群的调用稳定性。

Stars: 1 | Forks: 0

AI Gateway Logo

AI Gateway

兼容 OpenAI API 协议的智能模型网关
统一入口 · 异常恢复 · 流式缓冲 · Web 管理后台

## 📖 项目简介 AI Gateway 是一个兼容 OpenAI API 协议的智能模型网关,作为用户访问模型服务的统一入口。它的核心价值在于自动处理请求过程中的 429、500、502 等异常错误,让应用始终只收到成功的模型返回。 **请求链路:** 用户客户端 → AI Gateway → Nginx(可选) → 模型节点池 ## ✨ 功能特性 - **OpenAI 兼容** — 完全兼容 `POST /v1/chat/completions`,支持 `stream=true/false` - **SSE 流式处理** — 实时读取并转发 SSE 流,缓存已输出内容 - **异常自动恢复** — 支持 429、500、502、503、504 等异常,自动重试与恢复 - **两种恢复模式** — 模式 A(接续生成)/ 模式 B(完整重生成),支持自定义提示词模板 - **流式缓冲模式** — 可选择将上游内容完全缓存后一次性输出,失败时客户端不会看到部分内容 - **Web 管理后台** — 配置管理、提示词管理、API Key 管理、日志查看、统计图表 - **API Key 认证** — 支持多 Key 管理、启用/禁用、调用记录追踪 - **模型 Key 轮询** — 多个模型 Key 自动轮询,避免单 Key 限流 - **纯内存存储** — 不依赖 Redis、MySQL,运行状态全内存,配置本地文件持久化 - **Docker 部署** — 单容器运行,前端资源嵌入 Go 二进制 ## 🚀 快速开始 ### 前置要求 - Go 1.23+(本地编译) - Node.js 20+(构建前端,仅在本地开发时需要) - Docker & Docker Compose(容器部署) ### 方式一:Docker Compose 部署(推荐) # 克隆仓库 git clone https://github.com/tdn-001/Ai-Gateway.git cd Ai-Gateway # 创建数据目录 mkdir -p data # 构建并启动 docker compose up -d --build # 查看日志 docker compose logs -f # 停止 docker compose down 访问 `http://localhost:3301` 进入后台管理,首次访问会提示注册管理员账号。 ### 方式二:本地编译运行 **Linux / macOS:** # 克隆仓库 git clone https://github.com/tdn-001/Ai-Gateway.git cd Ai-Gateway # 构建前端 cd frontend npm install npm run build cd .. # 编译并运行 go build -o ai-gateway . ./ai-gateway **Windows:** # 克隆仓库 git clone https://github.com/tdn-001/Ai-Gateway.git cd Ai-Gateway # 构建前端 cd frontend npm install npm run build cd .. # 编译并运行 go build -o ai-gateway.exe . .\ai-gateway.exe ### 方式三:直接运行(开发模式) # 先构建前端 cd frontend && npm install && npm run build && cd .. # 启动 go run . ## ⚙️ 配置说明 首次启动会自动生成默认配置,所有配置文件位于 `data/` 目录下: | 文件 | 说明 | |------|------| | `data/config.json` | 网关核心配置(端口、上游地址、超时、恢复策略等) | | `data/admin.json` | 管理员账号(bcrypt 加密) | | `data/api_keys.json` | 客户端 API Key | | `data/model_keys.json` | 上游模型节点 Key | | `data/prompts.json` | 恢复提示词模板 | | `data/api_usage.json` | API 调用记录 | ### 核心配置项 { "listen_port": "3301", "nginx_upstream_url": "http://127.0.0.1:8080", "client_timeout": 300, "upstream_timeout": 300, "sse_recovery_enable": true, "default_recovery_mode": "B", "max_retry_times": 5, "session_expire_minute": 30, "log_keep_days": 5, "buffer_mode": false } ## 🔧 环境变量 | 变量 | 说明 | 默认值 | |------|------|--------| | `GIN_MODE` | Gin 运行模式(release/debug) | `debug` | | `JWT_SECRET` | JWT 签名密钥 | `ai-gateway-secret-key-2024` | ## 📡 API 接口 ### OpenAI 兼容接口 POST /v1/chat/completions Content-Type: application/json Authorization: Bearer { "model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Hello"}], "stream": true } ### 管理后台接口 所有管理接口需携带 JWT Token(通过登录获取): | 路径 | 方法 | 说明 | |------|------|------| | `/admin/login` | POST | 管理员登录 | | `/admin/register` | POST | 注册管理员 | | `/admin/config` | GET/PUT | 配置管理 | | `/admin/prompts` | GET/POST | 提示词管理 | | `/admin/prompts/:id` | PUT/DELETE | 提示词编辑/删除 | | `/admin/logs` | GET/DELETE | 日志查看/清空 | | `/admin/apikeys` | GET/POST | API Key 管理 | | `/admin/modelkeys` | GET/POST | 模型 Key 管理 | | `/admin/stats` | GET | 系统统计 | ## 🐳 Docker 部署详解 ### 构建镜像 docker build -t ai-gateway . ### 运行容器 docker run -d \ --name ai-gateway \ -p 3301:3301 \ -v /path/to/data:/app/data \ -e TZ=Asia/Shanghai \ -e GIN_MODE=release \ -e JWT_SECRET=your-secret-key \ ai-gateway ### docker-compose.yml services: ai-gateway: build: . container_name: ai-gateway ports: - "3301:3301" volumes: - /home/obj/ai_gateway/data:/app/data environment: - TZ=Asia/Shanghai - GIN_MODE=release - JWT_SECRET=${JWT_SECRET:-ai-gateway-secret-key-2024} restart: unless-stopped ## 🗂️ 项目结构 ai-gateway/ ├── cmd/ │ └── main.go # 入口文件 ├── internal/ │ ├── auth/ │ │ └── jwt.go # JWT 认证 │ ├── config/ │ │ └── config.go # 配置管理 │ ├── gateway/ │ │ ├── proxy.go # 请求代理 │ │ ├── sse.go # SSE 流处理 │ │ ├── recovery.go # 异常恢复 │ │ └── location.go # IP 定位 │ ├── logger/ │ │ └── logger.go # 日志 │ └── storage/ │ ├── file.go # 文件存储 │ ├── apikeys.go # API Key 管理 │ └── modelkeys.go # 模型 Key 管理 ├── frontend/ │ ├── src/ │ │ ├── views/ # 前端页面 │ │ └── router/ # 路由 │ └── package.json ├── data/ # 配置数据目录 ├── embed.go # 前端资源嵌入 ├── main.go # 主程序 ├── Dockerfile ├── docker-compose.yml └── README.md ## 🔒 安全建议 1. **生产环境务必修改 JWT 密钥**:通过环境变量 `JWT_SECRET` 设置 2. **设置 GIN_MODE=release**:关闭 debug 模式 3. **定期更换 API Key**:通过后台管理页面管理 4. **配置日志保留天数**:根据需求调整 `log_keep_days` 5. **使用 HTTPS**:建议在前置 Nginx 上配置 SSL 证书 ## 📄 许可证 本项目基于 MIT 许可证开源。 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request!
标签:AI网关, DLL 劫持, EVTX分析, Go, OpenAI兼容, Ruby工具, Vue, 大语言模型, 安全监控, 文件系统扫描, 日志审计, 请求拦截, 负载均衡