Files

215 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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一致)。
> 修改配置后,请重启服务以生效。