ModelGate 是一个功能完整的企业级大模型 API 网关,提供统一的接口来管理和转发到多个大模型服务(OpenAI、Anthropic、DeepSeek、智谱等)。支持用户管理、API 密钥管理、计费系统、请求记录等完整功能。
ModelGate 采用前后端分离架构,由以下两部分组成:
- 后端服务 (
/) - 基于 Go 语言开发,包含 API 转发服务和管理后台服务 - Web 管理后台 (
/web) - 基于 Vue 3 + TypeScript + NaiveUI 开发的现代化管理界面
- 多模型支持 - 支持 OpenAI、Anthropic、智谱 (Zhipu AI) 等多个大模型提供商
- 接口转发 - 提供统一的 API 接口,智能转发到不同的大模型服务
- 用户管理 - 完整的用户注册、登录、认证授权系统
- API 密钥管理 - 用户 API 密钥的创建、管理和权限控制
- 供应商管理 - 管理不同的大模型供应商及其配置
- 模型管理 - 管理不同供应商的 AI 模型配置和定价
- 计费系统 - 基于 Token 使用量的计费和账户流水管理
- 请求记录 - 完整的 API 请求历史记录和查询
- 流式响应 - 支持流式和非流式响应模式
- 速率限制 - 内置请求速率限制功能
- Redis 缓存 - 支持 Redis 缓存提升性能
| 技术 | 说明 |
|---|---|
| Go 1.26 | 开发语言 |
| Gin | REST API 框架 |
| Connect RPC | gRPC-Web 框架 |
| GORM | 数据库 ORM |
| JWT | 认证授权 |
| samber/do | 依赖注入 |
| Viper | 配置管理 |
| Logrus | 日志 |
| Redis | 缓存 |
| Cobra | 命令行工具 |
| Protocol Buffers | 接口定义 |
| 技术 | 说明 |
|---|---|
| Vue 3.5+ | 前端框架 |
| TypeScript 5.8+ | 类型系统 |
| Vite 6.3+ | 构建工具 |
| Naive UI 2.41+ | UI 组件库 |
| UnoCSS | 原子化 CSS |
| Pinia 3.0+ | 状态管理 |
| Vue Router 4.5+ | 路由管理 |
| Vue I18n 11.1+ | 国际化 |
| ConnectRPC | gRPC-Web 客户端 |
| ECharts 5.6+ | 图表库 |
后端:
- Go 1.26+
- MySQL 5.7+
- Redis 6.0+
- (可选) Docker
前端:
- Node.js 18.20.0+
- pnpm 8.7.0+
# 克隆仓库
git clone https://github.com/modelgate/modelgate.git
cd modelgate
# 安装 Go 依赖
go mod download
# 安装工具
go install github.com/bufbuild/buf/cmd/[email protected]
go install google.golang.org/protobuf/cmd/[email protected]
go install connectrpc.com/connect/cmd/[email protected]
npm install -g @bufbuild/[email protected]
# 生成 Protobuf 代码
buf generate复制并编辑环境变量:
cp .env.example .env编辑 .env 和 configs/config.toml:
[apiServer]
port = 8088
[adminServer]
port = 8080
[database]
type = "mysql"
host = "127.0.0.1"
port = 3306
name = "modelgate"
user = "your_user"
password = "your_password"
[redis]
host = "localhost"
port = 6379go run cmd/main.go migrate# 启动 API 转发服务 (端口 8088)
go run cmd/main.go api
# 启动管理后台服务 (端口 8080)
go run cmd/main.go admin
# 同时启动两个服务
go run cmd/main.go allcd web
pnpm install编辑 web/.env,设置后端服务地址:
VITE_PUBLIC_GRPC_SERVICE_URL="http://localhost:8080/api"pnpm dev访问 http://localhost:9527
pnpm build# 启动所有服务
docker-compose -f deployments/docker-compose.yaml up -d# 构建镜像
docker build -t modelgate:latest .
# 运行容器
docker run -d \
-p 8088:8088 \
-p 8080:8080 \
-e MG_KEY_SECRET=your_key_secret \
-e MG_DATABASE_HOST=your_db_host \
-e MG_DATABASE_PASSWORD=your_db_password \
-e MG_DATABASE_USER=your_db_user \
-e MG_DATABASE_NAME=your_db_name \
-e MG_DATABASE_PORT=your_db_port \
-e MG_REDIS_HOST=your_redis_host \
-e MG_REDIS_PASSWORD=your_redis_password \
modelgate:latest- API 转发服务:
http://localhost:8088 - 管理后台服务:
http://localhost:8080 - 默认账号:admin
- 默认密码:123456
使用 gowatch:
gowatch# 更新 Protobuf 定义后重新生成代码
buf generate
# 验证 Protobuf 文件
buf lintgo test ./...
go test -cover ./...cd web
# 代码检查
pnpm lint
# 类型检查
pnpm typecheck
# Git 提交 (遵循 Conventional Commits)
pnpm commit:zh# 查看帮助
go run cmd/main.go --help
# 启动 API 转发服务
go run cmd/main.go api
# 启动管理后台
go run cmd/main.go admin
# 同时启动两个服务
go run cmd/main.go all
# 数据库迁移
go run cmd/main.go migrate| 服务 | 端口 | 说明 |
|---|---|---|
| API 转发服务 | 8088 | OpenAI 兼容的 API 接口 |
| 管理后台服务 | 8080 | gRPC-Web 管理接口 |
| Web 前端 | 9527 | 管理后台界面 |
推荐使用最新版 Chrome 浏览器进行开发。
| Chrome | Edge | Firefox | Safari |
|---|---|---|---|
| last 2 versions | last 2 versions | last 2 versions | last 2 versions |
MIT License - 详见 LICENSE 文件
欢迎提交 Issue 和 Pull Request!
如有问题或建议,请提交 Issue。
Made with ❤️ by ModelGate Team


