1
0

feat: 初始化 AI Gateway 项目

实现支持 OpenAI 和 Anthropic 双协议的统一大模型 API 网关 MVP 版本,包含:
- OpenAI 和 Anthropic 协议代理
- 供应商和模型管理
- 用量统计
- 前端配置界面
This commit is contained in:
2026-04-15 16:53:28 +08:00
commit 915b004924
53 changed files with 5662 additions and 0 deletions

188
backend/README.md Normal file
View File

@@ -0,0 +1,188 @@
# AI Gateway Backend
AI 网关后端服务,提供统一的大模型 API 代理接口。
## 功能特性
- 支持 OpenAI 协议(`/v1/chat/completions`
- 支持 Anthropic 协议(`/v1/messages`
- 支持流式响应SSE
- 支持 Function Calling / Tools
- 多供应商配置和路由
- 用量统计
## 技术栈
- **语言**: Go
- **HTTP 框架**: Gin
- **ORM**: GORM
- **数据库**: SQLite
## 项目结构
```
backend/
├── cmd/
│ └── server/
│ └── main.go # 主程序入口
├── internal/
│ ├── config/ # 配置和数据库
│ │ ├── config.go # 配置目录管理
│ │ ├── database.go # 数据库连接
│ │ ├── models.go # 数据模型
│ │ ├── provider.go # 供应商 CRUD
│ │ ├── model.go # 模型 CRUD
│ │ └── stats.go # 统计记录
│ ├── handler/ # HTTP 处理器
│ │ ├── openai_handler.go
│ │ ├── anthropic_handler.go
│ │ ├── provider_handler.go
│ │ ├── model_handler.go
│ │ └── stats_handler.go
│ ├── protocol/ # 协议适配器
│ │ ├── openai/
│ │ │ ├── types.go
│ │ │ └── adapter.go
│ │ └── anthropic/
│ │ ├── types.go
│ │ ├── converter.go
│ │ └── stream_converter.go
│ ├── provider/ # 供应商客户端
│ │ └── client.go
│ └── router/ # 模型路由
│ └── model_router.go
├── go.mod
└── README.md
```
## 运行方式
### 安装依赖
```bash
go mod download
```
### 启动服务
```bash
go run cmd/server/main.go
```
服务将在端口 9826 启动。
## API 文档
### 代理接口
#### OpenAI Chat Completions
```
POST /v1/chat/completions
```
请求示例:
```json
{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "Hello"}
],
"stream": false
}
```
#### Anthropic Messages
```
POST /v1/messages
```
请求示例:
```json
{
"model": "claude-3-opus",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": [{"type": "text", "text": "Hello"}]}
]
}
```
### 管理接口
#### 供应商管理
- `GET /api/providers` - 列出所有供应商
- `POST /api/providers` - 创建供应商
- `GET /api/providers/:id` - 获取供应商
- `PUT /api/providers/:id` - 更新供应商
- `DELETE /api/providers/:id` - 删除供应商
创建供应商示例:
```json
{
"id": "openai",
"name": "OpenAI",
"api_key": "sk-...",
"base_url": "https://api.openai.com/v1"
}
```
**重要说明:**
- `base_url` 应配置到 API 版本路径,不包含具体端点
- OpenAI: `https://api.openai.com/v1`
- GLM: `https://open.bigmodel.cn/api/paas/v4`
- 其他 OpenAI 兼容供应商根据其文档配置版本路径
#### 模型管理
- `GET /api/models` - 列出模型(支持 `?provider_id=xxx` 过滤)
- `POST /api/models` - 创建模型
- `GET /api/models/:id` - 获取模型
- `PUT /api/models/:id` - 更新模型
- `DELETE /api/models/:id` - 删除模型
创建模型示例:
```json
{
"id": "gpt-4",
"provider_id": "openai",
"model_name": "gpt-4"
}
```
#### 统计查询
- `GET /api/stats` - 查询统计
- `GET /api/stats/aggregate` - 聚合统计
查询参数:
- `provider_id` - 供应商 ID
- `model_name` - 模型名称
- `start_date` - 开始日期YYYY-MM-DD
- `end_date` - 结束日期YYYY-MM-DD
- `group_by` - 聚合维度provider/model/date
## 配置
配置和数据存储在 `~/.nex/` 目录:
- `~/.nex/config.db` - SQLite 数据库
## 开发
### 构建
```bash
go build -o ai-gateway cmd/server/main.go
```
### 环境要求
- Go 1.21 或更高版本