# 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 或更高版本