chore: initialize qiming workspace repository

This commit is contained in:
Codex
2026-05-29 14:22:48 +08:00
commit bfd67a0f2c
10750 changed files with 1885711 additions and 0 deletions

View File

@@ -0,0 +1,136 @@
# Model Proxy 模块
大模型请求代理模块,用于代理和管理大模型 API 请求。
## 功能特性
1. **API Key 代理**:用户使用自己的 API Key后端代理到实际的大模型服务
2. **配置管理**:通过 HTTP API 管理 API Key 配置
3. **高性能**:基于 Netty 实现的高性能 HTTP/HTTPS 代理
4. **缓存支持**:使用本地缓存提高查询性能
## 架构设计
```
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Client │ ───> │ Model Proxy │ ───> │ LLM Provider │
│ (User API Key)│ │ Server │ │ (Backend API) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
┌──────────────────┐
│ Configuration │
│ Service │
└──────────────────┘
```
## 核心组件
### 1. ModelProxyServer
代理服务器启动类,基于 Netty 实现 HTTP/HTTPS 代理服务。
**配置项:**
- `model.proxy.port`: 代理服务端口默认8088
- `model.proxy.ssl.enabled`: 是否启用 SSL默认false
### 2. HttpProxyRequestHandler
HTTP 请求处理器,负责:
- 提取用户 API Key
- 查询代理配置
- 转发请求到后端服务
- 转发响应到客户端
### 3. ModelApiProxyConfigService
配置管理服务,提供:
- 根据用户 API Key 查询配置
- 添加/更新配置
- 删除配置
- 根据 ID 查询配置
### 4. ModelApiProxyConfigController
HTTP API 控制器,提供 RESTful 接口:
- `GET /api/model/proxy/config/query?userApiKey={key}` - 查询配置
- `GET /api/model/proxy/config/get/{id}` - 根据 ID 查询
- `POST /api/model/proxy/config/save` - 保存/更新配置
- `DELETE /api/model/proxy/config/delete/{id}` - 删除配置
## 使用方法
### 1. 配置代理服务
`application.yml` 中配置:
```yaml
model:
proxy:
port: 8088
ssl:
enabled: false
```
### 2. 添加代理配置
调用 API 添加配置:
```bash
curl -X POST http://localhost:8080/api/model/proxy/config/save \
-H "Content-Type: application/json" \
-d '{
"userApiKey": "sk-user-xxx",
"baseUrl": "https://api.openai.com/v1",
"backendApiKey": "sk-backend-yyy",
"model": "gpt-4",
"enabled": true,
"description": "OpenAI GPT-4 代理"
}'
```
### 3. 使用代理
客户端使用用户 API Key 调用大模型:
```bash
curl -X POST http://localhost:8088/api/proxy/model/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-user-xxx" \
-d '{
"model": "gpt-4",
"messages": [{"role": "user", "content": "Hello!"}]
}'
```
代理服务器会:
1. 提取 `Authorization``x-api-key` 头中的用户 API Key
2. 查询对应的代理配置
3. 将请求转发到后端服务(使用后端 API Key
4. 将响应返回给客户端
## 数据库表
```sql
CREATE TABLE `model_api_proxy_config` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`tenant_id` BIGINT(20) NOT NULL,
`user_api_key` VARCHAR(255) NOT NULL,
`base_url` VARCHAR(512) NOT NULL,
`backend_api_key` VARCHAR(255) NOT NULL,
`model` VARCHAR(128) DEFAULT NULL,
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
`description` VARCHAR(512) DEFAULT NULL,
`created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_user_api_key` (`tenant_id`, `user_api_key`)
);
```
## 接口文档
启动服务后访问 Swagger 文档http://localhost:8080/swagger-ui.html
## 注意事项
1. 代理服务器默认使用 HTTP如需 HTTPS 请配置 SSL 证书
2. 用户 API Key 需要在租户内唯一
3. 配置信息会缓存 5 分钟,修改配置后即时生效
4. 支持 WebSocket 连接升级