137 lines
4.3 KiB
Markdown
137 lines
4.3 KiB
Markdown
|
|
# 多 API 管理功能设计
|
|||
|
|
|
|||
|
|
## 功能概述
|
|||
|
|
|
|||
|
|
为每个 AI 服务商支持配置多个 API,用户可以:
|
|||
|
|
- 为同一服务商添加多个 API 配置(不同的 Key、端点、模型)
|
|||
|
|
- 选择其中一个作为当前使用的 API
|
|||
|
|
- 方便实现负载均衡、备用切换、不同场景使用不同配置等需求
|
|||
|
|
|
|||
|
|
## 数据结构
|
|||
|
|
|
|||
|
|
### 配置存储格式
|
|||
|
|
```php
|
|||
|
|
// 存储在 WordPress options 中
|
|||
|
|
// 键名:argon_ai_{provider}_apis
|
|||
|
|
// 值:JSON 数组
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
"id": "api_1",
|
|||
|
|
"name": "主 API",
|
|||
|
|
"api_key": "sk-xxx",
|
|||
|
|
"api_endpoint": "",
|
|||
|
|
"model": "gpt-4o-mini",
|
|||
|
|
"is_active": true
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "api_2",
|
|||
|
|
"name": "备用 API",
|
|||
|
|
"api_key": "sk-yyy",
|
|||
|
|
"api_endpoint": "https://api.custom.com/v1/chat/completions",
|
|||
|
|
"model": "gpt-4o",
|
|||
|
|
"is_active": false
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 当前使用的 API ID
|
|||
|
|
```php
|
|||
|
|
// 键名:argon_ai_{provider}_active_api
|
|||
|
|
// 值:字符串,API 的 ID
|
|||
|
|
"api_1"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 界面设计
|
|||
|
|
|
|||
|
|
### 设置页布局
|
|||
|
|
```
|
|||
|
|
AI 服务商: [OpenAI ▼]
|
|||
|
|
|
|||
|
|
┌─ OpenAI 配置 ─────────────────────────────┐
|
|||
|
|
│ │
|
|||
|
|
│ 已配置的 API: │
|
|||
|
|
│ ○ 主 API (gpt-4o-mini) [编辑] [删除]│
|
|||
|
|
│ ● 备用 API (gpt-4o) [编辑] [删除]│
|
|||
|
|
│ │
|
|||
|
|
│ [+ 添加新 API 配置] │
|
|||
|
|
│ │
|
|||
|
|
└────────────────────────────────────────────┘
|
|||
|
|
|
|||
|
|
添加/编辑 API 配置:
|
|||
|
|
┌────────────────────────────────────────────┐
|
|||
|
|
│ 配置名称: [主 API_______________] │
|
|||
|
|
│ API 密钥: [sk-xxx______________] [显示] │
|
|||
|
|
│ API 端点: [___________________] (可选) │
|
|||
|
|
│ 模型: [gpt-4o-mini_________] [刷新] │
|
|||
|
|
│ │
|
|||
|
|
│ [保存] [取消] │
|
|||
|
|
└────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 实现步骤
|
|||
|
|
|
|||
|
|
### 1. 数据层
|
|||
|
|
- `argon_get_provider_apis($provider)` - 获取提供商的所有 API 配置
|
|||
|
|
- `argon_get_active_api($provider)` - 获取当前使用的 API 配置
|
|||
|
|
- `argon_add_provider_api($provider, $config)` - 添加 API 配置
|
|||
|
|
- `argon_update_provider_api($provider, $api_id, $config)` - 更新 API 配置
|
|||
|
|
- `argon_delete_provider_api($provider, $api_id)` - 删除 API 配置
|
|||
|
|
- `argon_set_active_api($provider, $api_id)` - 设置当前使用的 API
|
|||
|
|
|
|||
|
|
### 2. 界面层
|
|||
|
|
- 为每个提供商显示 API 列表
|
|||
|
|
- 添加/编辑表单(可折叠)
|
|||
|
|
- 单选框选择当前使用的 API
|
|||
|
|
- AJAX 操作(添加、编辑、删除、切换)
|
|||
|
|
|
|||
|
|
### 3. 调用层
|
|||
|
|
- 更新 `argon_get_ai_provider_config()` 函数
|
|||
|
|
- 从多个 API 中获取当前激活的配置
|
|||
|
|
- 保持向后兼容(如果没有配置多 API,使用原有逻辑)
|
|||
|
|
|
|||
|
|
## 使用场景
|
|||
|
|
|
|||
|
|
### 场景 1:负载均衡
|
|||
|
|
- 配置多个 OpenAI API Key
|
|||
|
|
- 手动或自动切换使用不同的 Key
|
|||
|
|
- 避免单个 Key 达到速率限制
|
|||
|
|
|
|||
|
|
### 场景 2:备用切换
|
|||
|
|
- 主 API 配置官方端点
|
|||
|
|
- 备用 API 配置代理端点
|
|||
|
|
- 主 API 失败时手动切换到备用
|
|||
|
|
|
|||
|
|
### 场景 3:不同场景使用不同配置
|
|||
|
|
- API 1:使用 gpt-4o-mini(快速、便宜)用于评论检测
|
|||
|
|
- API 2:使用 gpt-4o(准确、贵)用于文章摘要
|
|||
|
|
- 根据使用场景选择不同的 API
|
|||
|
|
|
|||
|
|
### 场景 4:测试与生产分离
|
|||
|
|
- API 1:测试环境配置
|
|||
|
|
- API 2:生产环境配置
|
|||
|
|
- 方便切换测试
|
|||
|
|
|
|||
|
|
## 向后兼容
|
|||
|
|
|
|||
|
|
如果用户已有旧配置(单 API 模式):
|
|||
|
|
1. 自动迁移到新格式
|
|||
|
|
2. 创建一个名为"默认配置"的 API
|
|||
|
|
3. 设置为当前使用
|
|||
|
|
|
|||
|
|
## 未来扩展
|
|||
|
|
|
|||
|
|
### 自动切换(可选)
|
|||
|
|
- 检测 API 调用失败
|
|||
|
|
- 自动切换到下一个可用的 API
|
|||
|
|
- 记录切换日志
|
|||
|
|
|
|||
|
|
### 负载均衡(可选)
|
|||
|
|
- 轮询模式:依次使用不同的 API
|
|||
|
|
- 随机模式:随机选择一个 API
|
|||
|
|
- 权重模式:根据权重分配使用频率
|
|||
|
|
|
|||
|
|
### 健康检查(可选)
|
|||
|
|
- 定期检测 API 可用性
|
|||
|
|
- 标记不可用的 API
|
|||
|
|
- 自动禁用失败的 API
|