Prmbr/MODEL_MANAGEMENT.md

3.8 KiB
Raw Blame History

模型管理系统

概述

本项目的模型管理系统支持两种服务提供者:

  • 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

新增功能:

  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. 测试前端界面的响应性和用户体验