# 模型管理系统

## 概述

本项目的模型管理系统支持两种服务提供者：
- **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. 测试前端界面的响应性和用户体验
