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