企业级AI聚合网关,支持多服务商统一接入、智能路由、熔断降级、流式协议转换。
- 多服务商支持: OpenAI、Anthropic、Gemini、DeepSeek等
- 协议转换: 自动转换不同服务商的API格式
- 智能路由: 轮询、加权、最少连接、优先级、自适应等多种策略
- 高可用: 熔断器、重试、降级、健康检查
- 流式支持: SSE流式响应,支持客户端断开检测
- 配额管理: Token配额跟踪、速率限制
- 可观测性: 结构化日志、Prometheus指标、OpenTelemetry追踪
- 管理界面: 现代化Web UI,液态玻璃设计风格
# 1. 克隆项目
git clone https://github.com/example/aigateway.git
cd aigateway
# 2. 安装依赖
go mod download
# 3. 启动Redis(必需)
docker run -d -p 6379:6379 redis:7-alpine
# 4. 初始化数据库
make migrate
# 5. 运行
make run访问 http://localhost:8080/health 检查服务状态。
# 复制环境变量文件并修改
cp .env.example .env
# 设置管理员Token
export ADMIN_TOKEN="admin-$(openssl rand -hex 16)"
# 启动服务
docker-compose -f docker/docker-compose.yaml up -d
# 查看日志
docker-compose logs -f gateway配置文件位于 config/ 目录:
config.yaml- 默认配置config.dev.yaml- 开发环境config.staging.yaml- 预发布环境config.prod.yaml- 生产环境
所有配置都可以通过环境变量覆盖,前缀为 AIGATEWAY_:
export AIGATEWAY_SERVER_PORT=8080
export AIGATEWAY_DATABASE_DSN=./data/gateway.db
export AIGATEWAY_REDIS_ADDR=localhost:6379
export AIGATEWAY_AUTH_ADMIN_TOKEN=admin-xxxxxxxx使用SQLite(零配置):
database:
driver: sqlite
dsn: ./data/gateway.db必须使用MySQL或PostgreSQL(支持多实例):
database:
driver: mysql
dsn: "user:password@tcp(localhost:3306)/aigateway?charset=utf8mb4&parseTime=True"# OpenAI格式
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer sk-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4",
"messages": [{"role": "user", "content": "Hello"}]
}'# 查看仪表盘
curl http://localhost:8080/admin/v1/dashboard/overview \
-H "Authorization: Bearer admin-xxxxxxxx"
# 添加服务商
curl -X POST http://localhost:8080/admin/v1/providers \
-H "Authorization: Bearer admin-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "OpenAI",
"base_url": "https://api.openai.com",
"supported_formats": ["openai"]
}'完整API文档见 docs/design/03-api-design.md
访问 http://localhost:8080 打开Web管理界面。
默认管理员Token在配置文件中设置:
auth:
admin_token: "admin-xxxxxxxxxxxxxxxx"Client → Gateway → Protocol Converter → Router → Provider
↓
[Auth, RateLimit, CircuitBreaker, Retry, Cache]
详细架构设计见 docs/design/02-architecture-overview.md
aigateway/
├── cmd/
│ ├── gateway/ # 程序入口
│ └── migrate/ # 数据库迁移工具
├── internal/
│ ├── handler/ # HTTP处理器
│ ├── service/ # 业务逻辑
│ ├── repository/ # 数据访问
│ ├── protocol/ # 协议转换
│ ├── routing/ # 负载均衡
│ ├── resilience/ # 熔断重试
│ └── ...
├── pkg/ # 公共库
├── config/ # 配置文件
├── migrations/ # 数据库迁移(支持MySQL/PostgreSQL/SQLite)
├── docker/ # Docker配置
└── ui/ # Web界面
make testmake lintmake build访问 http://localhost:9090/metrics
关键指标:
gateway_requests_total- 总请求数gateway_request_duration_seconds- 请求延迟gateway_tokens_total- Token使用量
使用 docker-compose.yaml 启动Grafana:
docker-compose up -d grafana访问 http://localhost:3000(默认密码:admin/admin)
在16核CPU、32GB内存的单实例上:
- 吞吐量: 10,000+ req/s
- 延迟P50: <10ms
- 延迟P99: <50ms
- 并发连接: 10,000+
不含上游服务商响应时间
Provider Token明文存储(按设计要求),通过以下措施保护:
- 数据库访问控制(最小权限)
- 管理API独立认证
- 所有操作记录审计日志
- 日志中不记录Token明文
- 数据库传输加密(TLS)
- 定期备份,加密存储
客户端API Key使用SHA256哈希存储,支持:
- 自动生成安全密钥
- 配额和速率限制
- 过期时间控制
- 撤销功能
网关会降级为单实例模式运行,但功能受限:
- 熔断器状态仅本地
- 分布式锁降级为本地锁
- 速率限制仅本地计数
生产环境必须确保Redis可用
# 执行迁移(使用默认配置)
make migrate
# 或者手动运行迁移工具
go run ./cmd/migrate --config config/config.yaml up
# 回滚最近一次迁移
go run ./cmd/migrate --config config/config.yaml down --steps 1# Docker
docker-compose logs -f gateway
# 本地
tail -f logs/gateway.log欢迎提交Issue和Pull Request。
MIT License