Prmbr/MODEL_MANAGEMENT.md

157 lines
3.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.

# 模型管理系统
## 概述
本项目的模型管理系统支持两种服务提供者:
- **OpenRouter**: 用于文本生成模型
- **Replicate**: 用于图片、视频、音频生成模型
## 数据库结构
### Model 表新增字段
```sql
serviceProvider String @default("openrouter") // 服务提供者
outputType String @default("text") // 输出类型
```
- `serviceProvider`: 服务提供者,可选值:
- `openrouter`: OpenRouter 服务
- `replicate`: Replicate 服务
- `outputType`: 输出类型,可选值:
- `text`: 文本输出OpenRouter 模型)
- `image`: 图片输出Replicate 图片生成模型)
- `video`: 视频输出Replicate 视频生成模型)
- `audio`: 音频输出Replicate 音频生成模型)
## 环境变量配置
### 必需的环境变量
```bash
# OpenRouter API 密钥(用于文本生成模型)
OPENROUTER_API_KEY="your_openrouter_api_key"
# Replicate API 令牌(用于多媒体生成模型)
REPLICATE_API_TOKEN="your_replicate_api_token"
```
## 服务类
### OpenRouterService
位置:`src/lib/openrouter.ts`
功能:
- 获取 OpenRouter 可用模型
- 转换模型数据为数据库格式
- 自动设置 `serviceProvider: 'openrouter'``outputType: 'text'`
### ReplicateService
位置:`src/lib/replicate.ts`
功能:
- 获取 Replicate 可用模型
- 按类型分类模型(图片、视频、音频)
- 转换模型数据为数据库格式
- 自动设置 `serviceProvider: 'replicate'` 和相应的 `outputType`
主要方法:
- `getImageGenerationModels()`: 获取图片生成模型
- `getVideoGenerationModels()`: 获取视频生成模型
- `getAudioGenerationModels()`: 获取音频生成模型
## API 接口
### POST /api/admin/models
同步模型接口支持新参数:
```json
{
"action": "sync",
"planId": "plan_id",
"serviceProvider": "openrouter" | "replicate"
}
```
响应:
```json
{
"message": "Models fetched successfully",
"availableModels": [...],
"planId": "plan_id",
"serviceProvider": "openrouter"
}
```
## 前端界面
### 管理员模型管理页面
位置:`src/app/admin/models/page.tsx`
新增功能:
1. 服务提供者选择器
- OpenRouter (Text Models)
- Replicate (Image/Video/Audio Models)
2. 模型显示增强
- 显示输出类型标签
- 显示服务提供者标签
- 区分不同类型的模型
## 使用流程
1. **选择订阅套餐**
2. **选择服务提供者**
- OpenRouter: 获取文本生成模型
- Replicate: 获取多媒体生成模型
3. **同步模型**
- 系统自动获取对应服务的可用模型
- 自动分类和标记输出类型
4. **添加模型到套餐**
- 选择需要的模型
- 批量添加到指定套餐
## 模型分类逻辑
### Replicate 模型分类
系统通过以下关键词自动分类 Replicate 模型:
**图片生成模型**:
- 名称包含: image, diffusion, flux, sdxl, dalle
- 描述包含: image, generate, diffusion
**视频生成模型**:
- 名称包含: video, runway, pika, animate
- 描述包含: video, animate, motion
**音频生成模型**:
- 名称包含: audio, music, sound, musicgen, bark
- 描述包含: audio, music, sound, speech
## 注意事项
1. **API 限制**: Replicate API 可能有调用频率限制
2. **模型可用性**: 某些 Replicate 模型可能需要特定权限
3. **成本考虑**: Replicate 模型的定价结构与 OpenRouter 不同
4. **错误处理**: 系统会优雅处理 API 调用失败的情况
## 扩展性
系统设计支持未来添加更多服务提供者:
- 只需实现相应的服务类
- 更新 API 接口支持新的 serviceProvider 值
- 在前端添加新的选项
## 测试建议
1. 测试 OpenRouter 模型同步
2. 测试 Replicate 模型同步(需要有效的 API 令牌)
3. 验证模型分类的准确性
4. 测试前端界面的响应性和用户体验