1
0
Files
nex/backend/README.md
lanyuanxiaoyao 915b004924 feat: 初始化 AI Gateway 项目
实现支持 OpenAI 和 Anthropic 双协议的统一大模型 API 网关 MVP 版本,包含:
- OpenAI 和 Anthropic 协议代理
- 供应商和模型管理
- 用量统计
- 前端配置界面
2026-04-15 16:53:28 +08:00

189 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 或更高版本