feat: 初始化 AI Gateway 项目
实现支持 OpenAI 和 Anthropic 双协议的统一大模型 API 网关 MVP 版本,包含: - OpenAI 和 Anthropic 协议代理 - 供应商和模型管理 - 用量统计 - 前端配置界面
This commit is contained in:
188
backend/README.md
Normal file
188
backend/README.md
Normal 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 或更高版本
|
||||
Reference in New Issue
Block a user