实现支持 OpenAI 和 Anthropic 双协议的统一大模型 API 网关 MVP 版本,包含: - OpenAI 和 Anthropic 协议代理 - 供应商和模型管理 - 用量统计 - 前端配置界面
3.8 KiB
3.8 KiB
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
运行方式
安装依赖
go mod download
启动服务
go run cmd/server/main.go
服务将在端口 9826 启动。
API 文档
代理接口
OpenAI Chat Completions
POST /v1/chat/completions
请求示例:
{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "Hello"}
],
"stream": false
}
Anthropic Messages
POST /v1/messages
请求示例:
{
"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- 删除供应商
创建供应商示例:
{
"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- 删除模型
创建模型示例:
{
"id": "gpt-4",
"provider_id": "openai",
"model_name": "gpt-4"
}
统计查询
GET /api/stats- 查询统计GET /api/stats/aggregate- 聚合统计
查询参数:
provider_id- 供应商 IDmodel_name- 模型名称start_date- 开始日期(YYYY-MM-DD)end_date- 结束日期(YYYY-MM-DD)group_by- 聚合维度(provider/model/date)
配置
配置和数据存储在 ~/.nex/ 目录:
~/.nex/config.db- SQLite 数据库
开发
构建
go build -o ai-gateway cmd/server/main.go
环境要求
- Go 1.21 或更高版本