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

3.8 KiB
Raw Blame History

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 - 供应商 ID
  • model_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 或更高版本