mirror of
https://github.com/MemeMeow-Studio/MemeMeow.git
synced 2026-10-17 04:41:01 +08:00
215 lines
5.8 KiB
Markdown
215 lines
5.8 KiB
Markdown
# VVQuest API 文档
|
||
|
||
## 目录
|
||
|
||
1. [接口概览](#接口概览)
|
||
2. [接口详情](#接口详情)
|
||
3. [API 配置文件说明](#api-配置文件说明)
|
||
|
||
## 接口概览
|
||
|
||
| 接口路径 | 方法 | 描述 |
|
||
|--------------------|------|--------------------------|
|
||
| `/search` | POST | 执行图片搜索 |
|
||
| `/generate-cache` | POST | 触发缓存生成(后台任务) |
|
||
| `/config` | GET | 获取当前配置 |
|
||
| `/api-config` | PUT | 更新API配置 |
|
||
| `/download-model` | POST | 下载指定模型 |
|
||
| `/models` | GET | 获取可用模型列表 |
|
||
| `/mode/{mode}` | PUT | 切换运行模式 |
|
||
| `/model/{model_id}`| PUT | 切换本地模型 |
|
||
|
||
## 接口详情
|
||
|
||
### 1. 搜索图片
|
||
|
||
- **路径**: `/search`
|
||
- **方法**: POST
|
||
- **描述**: 执行图片搜索
|
||
- **请求体** (application/json):
|
||
|
||
```json
|
||
{
|
||
"query": "搜索关键词",
|
||
"n_results": 5 // 可选,默认值 5
|
||
}
|
||
```
|
||
|
||
- **成功响应**
|
||
- 状态码: 200
|
||
- 内容: JSON 格式数据(具体字段需参考实现)
|
||
|
||
- **错误响应**
|
||
- 状态码: 422 (请求体验证失败)
|
||
|
||
### 2. 生成缓存
|
||
|
||
- **路径**: `/generate-cache`
|
||
- **方法**: POST
|
||
- **描述**: 触发后台缓存生成任务
|
||
- **成功响应**
|
||
- 状态码: 200
|
||
- 内容: JSON 格式空对象
|
||
|
||
### 3. 获取配置
|
||
|
||
- **路径**: `/config`
|
||
- **方法**: GET
|
||
- **描述**: 获取当前API配置
|
||
- **成功响应**
|
||
- 状态码: 200
|
||
- 内容: JSON 格式配置信息
|
||
|
||
### 4. 更新配置
|
||
|
||
- **路径**: `/api-config`
|
||
- **方法**: PUT
|
||
- **描述**: 更新API配置
|
||
- **请求体** (application/json):
|
||
|
||
```json
|
||
{
|
||
"api_key": "新的API密钥", // 可选(可为 null)
|
||
"base_url": "新的基础URL" // 可选(可为 null)
|
||
}
|
||
```
|
||
|
||
- **成功响应**
|
||
- 状态码: 200
|
||
- 内容: JSON 格式空对象
|
||
|
||
- **错误响应**
|
||
- 状态码: 422 (请求体验证失败)
|
||
|
||
### 5. 下载模型
|
||
|
||
- **路径**: `/download-model`
|
||
- **方法**: POST
|
||
- **描述**: 下载指定模型
|
||
- **请求体** (application/json):
|
||
|
||
```json
|
||
{
|
||
"model_id": "模型ID"
|
||
}
|
||
```
|
||
|
||
- **成功响应**
|
||
- 状态码: 200
|
||
- 内容: JSON 格式空对象
|
||
|
||
- **错误响应**
|
||
- 状态码: 422 (请求体验证失败)
|
||
|
||
### 6. 模型列表
|
||
|
||
- **路径**: `/models`
|
||
- **方法**: GET
|
||
- **描述**: 获取可用模型列表
|
||
- **成功响应**
|
||
- 状态码: 200
|
||
- 内容: JSON 格式模型列表
|
||
|
||
### 7. 切换模式
|
||
|
||
- **路径**: `/mode/{mode}`
|
||
- **方法**: PUT
|
||
- **描述**: 切换系统运行模式
|
||
- **路径参数**
|
||
- `mode` (字符串): 目标模式名称
|
||
- **成功响应**
|
||
- 状态码: 200
|
||
- 内容: JSON 格式空对象
|
||
|
||
- **错误响应**
|
||
- 状态码: 422 (参数验证失败)
|
||
|
||
### 8. 切换模型
|
||
|
||
- **路径**: `/model/{model_id}`
|
||
- **方法**: PUT
|
||
- **描述**: 切换本地使用的模型
|
||
- **路径参数**
|
||
- `model_id` (字符串): 目标模型ID
|
||
- **成功响应**
|
||
- 状态码: 200
|
||
- 内容: JSON 格式空对象
|
||
|
||
- **错误响应**
|
||
- 状态码: 422 (参数验证失败)
|
||
|
||
## API 配置文件说明
|
||
|
||
API 配置文件为 `/config/api_config.yaml` ,用于配置 API 的行为。
|
||
|
||
### 全局配置
|
||
|
||
```yaml
|
||
api:
|
||
generate_cache: False # 是否自动生成缓存(默认关闭)
|
||
```
|
||
|
||
- **作用**
|
||
- 当 `generate_cache: True` 时,系统启动后自动执行缓存生成任务。
|
||
|
||
### 端点权限控制
|
||
|
||
```yaml
|
||
protected_mode: False # 是否启用保护模式(默认关闭)
|
||
allowed_endpoints:
|
||
- "/search" # 允许访问的API端点(仅保护模式开启时生效)
|
||
```
|
||
|
||
- **作用**
|
||
- 当 `protected_mode: True` 时,仅列出的端点可被外部访问。
|
||
- 默认允许 `/search`,其他接口需手动添加(如 `/config`)。
|
||
|
||
### 请求限流配置
|
||
|
||
```yaml
|
||
rate_limit:
|
||
enabled: True # 是否启用请求限流
|
||
requests: 10 # 每分钟最大请求数
|
||
window: 60 # 时间窗口(单位:秒)
|
||
storage: "memory" # 限流计数存储方式(支持 memory/redis)
|
||
```
|
||
|
||
- **参数说明**
|
||
|
||
| 字段 | 类型 | 可选值 | 说明 |
|
||
|------------|--------|-------------------|-------------------------------|
|
||
| `enabled` | bool | `True`/`False` | 是否启用限流 |
|
||
| `requests` | int | 正整数 | 单位时间窗口内允许的最大请求数 |
|
||
| `window` | int | 正整数(秒) | 限流时间窗口长度 |
|
||
| `storage` | string | `memory`/`redis` | 计数器存储方式 |
|
||
|
||
- **示例场景**
|
||
- `requests: 10` + `window: 60` 表示每60秒最多处理 10 次请求。
|
||
- 若使用 `redis` 存储,需确保 Redis 服务已配置并连接。
|
||
|
||
### 运行模式配置
|
||
|
||
```yaml
|
||
mode: "local" # 系统运行模式(api/local)
|
||
api_mode_config:
|
||
default_api_key: "your-key-here" # API 默认密钥
|
||
default_base_url: "https://api.example.com" # API 默认服务地址
|
||
model: "bge-m3" # 当前使用的模型ID(需与模型列表匹配)
|
||
```
|
||
|
||
- **模式说明**
|
||
|
||
| 模式值 | 描述 |
|
||
|-----------|----------------------------------------------------------------------|
|
||
| `local` | 本地模式,优先使用本地模型和资源 |
|
||
| `api` | API 模式,依赖外部服务(需配置 `api_mode_config` 中的密钥和基础URL) |
|
||
|
||
- **API 模式专用配置**
|
||
- `default_api_key`: 调用外部 API 所需的身份凭证(建议通过环境变量注入)。
|
||
- `default_base_url`: 外部 API 服务的基础地址(例如 OpenAI 兼容接口)。
|
||
|
||
- **本地模式专用配置**
|
||
- `model`: 当前使用的模型ID(需与 `models` 配置中的模型ID一致)。
|
||
|
||
> 修改配置后,请重启服务以生效。
|