3.8 KiB
3.8 KiB
模型管理系统
概述
本项目的模型管理系统支持两种服务提供者:
- OpenRouter: 用于文本生成模型
- Replicate: 用于图片、视频、音频生成模型
数据库结构
Model 表新增字段
serviceProvider String @default("openrouter") // 服务提供者
outputType String @default("text") // 输出类型
-
serviceProvider
: 服务提供者,可选值:openrouter
: OpenRouter 服务replicate
: Replicate 服务
-
outputType
: 输出类型,可选值:text
: 文本输出(OpenRouter 模型)image
: 图片输出(Replicate 图片生成模型)video
: 视频输出(Replicate 视频生成模型)audio
: 音频输出(Replicate 音频生成模型)
环境变量配置
必需的环境变量
# 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
同步模型接口支持新参数:
{
"action": "sync",
"planId": "plan_id",
"serviceProvider": "openrouter" | "replicate"
}
响应:
{
"message": "Models fetched successfully",
"availableModels": [...],
"planId": "plan_id",
"serviceProvider": "openrouter"
}
前端界面
管理员模型管理页面
位置:src/app/admin/models/page.tsx
新增功能:
-
服务提供者选择器
- OpenRouter (Text Models)
- Replicate (Image/Video/Audio Models)
-
模型显示增强
- 显示输出类型标签
- 显示服务提供者标签
- 区分不同类型的模型
使用流程
- 选择订阅套餐
- 选择服务提供者
- OpenRouter: 获取文本生成模型
- Replicate: 获取多媒体生成模型
- 同步模型
- 系统自动获取对应服务的可用模型
- 自动分类和标记输出类型
- 添加模型到套餐
- 选择需要的模型
- 批量添加到指定套餐
模型分类逻辑
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
注意事项
- API 限制: Replicate API 可能有调用频率限制
- 模型可用性: 某些 Replicate 模型可能需要特定权限
- 成本考虑: Replicate 模型的定价结构与 OpenRouter 不同
- 错误处理: 系统会优雅处理 API 调用失败的情况
扩展性
系统设计支持未来添加更多服务提供者:
- 只需实现相应的服务类
- 更新 API 接口支持新的 serviceProvider 值
- 在前端添加新的选项
测试建议
- 测试 OpenRouter 模型同步
- 测试 Replicate 模型同步(需要有效的 API 令牌)
- 验证模型分类的准确性
- 测试前端界面的响应性和用户体验