162 lines
5.6 KiB
Markdown
162 lines
5.6 KiB
Markdown
|
|
# AI 设置页面重构方案
|
|||
|
|
|
|||
|
|
## 重构目标
|
|||
|
|
|
|||
|
|
将当前按提供商分组的 API 管理方式改为统一的 API 列表管理,并重新组织 AI 功能的设置结构。
|
|||
|
|
|
|||
|
|
## 当前结构问题
|
|||
|
|
|
|||
|
|
1. **API 管理分散**:每个提供商独立管理 API,用户需要在 10 个提供商之间切换
|
|||
|
|
2. **结构不清晰**:AI 摘要和评论审核分散在不同的一级分类中
|
|||
|
|
3. **用户体验差**:添加 API 时需要先选择提供商,然后才能配置
|
|||
|
|
|
|||
|
|
## 新结构设计
|
|||
|
|
|
|||
|
|
### 页面结构
|
|||
|
|
```
|
|||
|
|
AI 功能 (独立 h1,不在分类编号中)
|
|||
|
|
├── API 管理 (h2)
|
|||
|
|
│ ├── 已配置的 API 列表(统一显示所有提供商的 API)
|
|||
|
|
│ └── 添加新 API(输入密钥 → 选择提供商 → 选择模型)
|
|||
|
|
├── 文章摘要 (h2)
|
|||
|
|
│ ├── 启用 AI 摘要
|
|||
|
|
│ ├── 默认服务商选择
|
|||
|
|
│ ├── Prompt 设置
|
|||
|
|
│ └── 排除文章设置
|
|||
|
|
└── 评论审核 (h2)
|
|||
|
|
├── 启用 AI 识别
|
|||
|
|
├── 实时检测模式
|
|||
|
|
├── 关键字管理
|
|||
|
|
├── Prompt 模式
|
|||
|
|
└── 其他配置
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 数据结构变更
|
|||
|
|
|
|||
|
|
#### 旧数据结构
|
|||
|
|
```php
|
|||
|
|
// 每个提供商独立存储
|
|||
|
|
argon_ai_openai_apis = [
|
|||
|
|
{id: 'api_1', name: '主API', api_key: 'sk-xxx', ...}
|
|||
|
|
]
|
|||
|
|
argon_ai_anthropic_apis = [...]
|
|||
|
|
// ... 10 个提供商
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 新数据结构
|
|||
|
|
```php
|
|||
|
|
// 统一存储所有 API
|
|||
|
|
argon_ai_apis = [
|
|||
|
|
{
|
|||
|
|
id: 'api_1',
|
|||
|
|
name: '主 OpenAI API',
|
|||
|
|
provider: 'openai',
|
|||
|
|
api_key: 'sk-xxx',
|
|||
|
|
api_endpoint: '',
|
|||
|
|
model: 'gpt-4o-mini',
|
|||
|
|
is_active: false,
|
|||
|
|
created_at: 1234567890
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 'api_2',
|
|||
|
|
name: '备用 Claude API',
|
|||
|
|
provider: 'anthropic',
|
|||
|
|
api_key: 'sk-ant-xxx',
|
|||
|
|
api_endpoint: '',
|
|||
|
|
model: 'claude-3-5-sonnet-20241022',
|
|||
|
|
is_active: true,
|
|||
|
|
created_at: 1234567891
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
// 当前使用的 API(按场景)
|
|||
|
|
argon_ai_summary_active_api = 'api_1' // 文章摘要使用的 API
|
|||
|
|
argon_ai_spam_active_api = 'api_2' // 垃圾评论检测使用的 API
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 实施步骤
|
|||
|
|
|
|||
|
|
### 步骤 1:数据迁移函数
|
|||
|
|
创建 `argon_migrate_ai_apis()` 函数,将旧的分散数据迁移到新的统一结构。
|
|||
|
|
|
|||
|
|
### 步骤 2:更新核心函数
|
|||
|
|
- 修改 `argon_get_ai_provider_config()` 支持新数据结构
|
|||
|
|
- 添加 `argon_get_all_apis()` 获取所有 API
|
|||
|
|
- 添加 `argon_get_api_by_id($api_id)` 获取指定 API
|
|||
|
|
- 添加 `argon_add_api($config)` 添加 API
|
|||
|
|
- 添加 `argon_update_api($api_id, $config)` 更新 API
|
|||
|
|
- 添加 `argon_delete_api($api_id)` 删除 API
|
|||
|
|
- 添加 `argon_set_active_api_for_scenario($scenario, $api_id)` 设置场景使用的 API
|
|||
|
|
|
|||
|
|
### 步骤 3:重构 settings.php
|
|||
|
|
- 移除原有的按提供商分组的 API 配置界面
|
|||
|
|
- 创建新的统一 API 列表界面
|
|||
|
|
- 重新组织 AI 功能的设置结构
|
|||
|
|
|
|||
|
|
### 步骤 4:更新 AJAX 处理函数
|
|||
|
|
- 更新所有 API 管理相关的 AJAX 函数
|
|||
|
|
- 支持新的数据结构
|
|||
|
|
|
|||
|
|
### 步骤 5:向后兼容
|
|||
|
|
- 在主题加载时自动检测并迁移旧数据
|
|||
|
|
- 保留旧数据作为备份
|
|||
|
|
|
|||
|
|
## 界面设计
|
|||
|
|
|
|||
|
|
### API 管理界面
|
|||
|
|
```
|
|||
|
|
┌─ 已配置的 API ─────────────────────────────────────┐
|
|||
|
|
│ │
|
|||
|
|
│ ● 主 OpenAI API (gpt-4o-mini) │
|
|||
|
|
│ OpenAI (ChatGPT) | sk-xxx... │
|
|||
|
|
│ [测试] [编辑] [删除] │
|
|||
|
|
│ │
|
|||
|
|
│ ○ 备用 Claude API (claude-3-5-sonnet) │
|
|||
|
|
│ Anthropic (Claude) | sk-ant-xxx... │
|
|||
|
|
│ [测试] [编辑] [删除] │
|
|||
|
|
│ │
|
|||
|
|
│ [+ 添加新 API] │
|
|||
|
|
└─────────────────────────────────────────────────────┘
|
|||
|
|
|
|||
|
|
添加/编辑 API:
|
|||
|
|
┌─────────────────────────────────────────────────────┐
|
|||
|
|
│ 配置名称: [主 OpenAI API_________________] │
|
|||
|
|
│ API 密钥: [sk-xxx_______________________] [显示] │
|
|||
|
|
│ 提供商: [OpenAI (ChatGPT) ▼] │
|
|||
|
|
│ API 端点: [_____________________________] (可选) │
|
|||
|
|
│ 模型: [gpt-4o-mini__________________] [刷新] │
|
|||
|
|
│ │
|
|||
|
|
│ [保存] [取消] │
|
|||
|
|
└─────────────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 文章摘要设置
|
|||
|
|
```
|
|||
|
|
启用 AI 摘要: [启用 ▼]
|
|||
|
|
默认使用 API: [主 OpenAI API ▼]
|
|||
|
|
Prompt 设置: [...]
|
|||
|
|
排除文章 ID: [...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 评论审核设置
|
|||
|
|
```
|
|||
|
|
启用 AI 识别: [☑] 启用 AI 自动识别垃圾评论
|
|||
|
|
默认使用 API: [备用 Claude API ▼]
|
|||
|
|
实时检测模式: [智能抽查 ▼]
|
|||
|
|
...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 优势
|
|||
|
|
|
|||
|
|
1. **统一管理**:所有 API 在一个列表中,一目了然
|
|||
|
|
2. **灵活配置**:不同场景可以使用不同的 API
|
|||
|
|
3. **易于添加**:添加 API 时直接输入密钥和选择提供商
|
|||
|
|
4. **更好的 UX**:不需要在多个提供商之间切换
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **数据迁移**:确保旧数据能够正确迁移到新结构
|
|||
|
|
2. **向后兼容**:保留旧数据作为备份,以防迁移失败
|
|||
|
|
3. **测试充分**:需要测试所有 AI 功能是否正常工作
|
|||
|
|
4. **文档更新**:更新用户文档说明新的配置方式
|