Skip to content

上游和模型配置

MJ-Studio 通过灵活的上游和模型配置系统,支持多种 AI 服务的统一管理和调用。用户可以自由配置多个 API 上游,并为每个上游配置多个 AI 模型,实现一站式多模型 AI 创作。

功能概述

上游和模型配置是 MJ-Studio 的核心基础设施,通过两层架构实现灵活的多模型管理:

  • 上游配置(Upstream):管理 API 服务端点的连接信息(URL、密钥、平台类型等)
  • 模型配置(Aimodel):定义具体的 AI 模型及其调用参数(模型类型、API 格式、模型名称、能力等)

一个上游可以配置多个模型,支持图片生成、视频生成、对话和 TTS 四大类别的 AI 能力。

核心能力

  • 多上游管理:支持配置多个 API 服务商(官方 API、第三方中转等)
  • 多模型支持:每个上游可配置多个 AI 模型(绘图、对话、视频、TTS)
  • 统一调用:通过模型选择器统一调用不同上游的不同模型
  • 余额查询:支持主流平台的余额查询(OpenAI、Cloudflare AI 等)
  • 多 Key 配置:单个上游支持配置多个 API Key 并指定使用
  • 自定义显示名称:为模型设置自定义名称,简化长模型名或区分同类型模型
  • 从上游导入模型:调用上游 API 获取模型列表,自动推断分类和能力
  • 模型能力标记:标记模型的视觉、推理、工具调用、联网能力

数据结构

上游配置(Upstream)

上游配置存储 API 服务的连接信息和元数据。

字段类型说明
idnumber自增主键
userIdnumber所属用户 ID
namestring上游名称(用户自定义,如"我的 MJ"、"公司 API")
baseUrlstringAPI 请求前缀(如 https://api.openai.com
apiKeystring主 API Key
apiKeysApiKeyConfig[]多 Key 配置(JSON 数组,可选)
remarkstring备注说明(可选)
sortOrdernumber排序顺序(0 表示置顶,默认 999)
upstreamPlatformUpstreamPlatform上游平台类型(用于余额查询,如 openaicloudflare-ai
userApiKeystring用户在该平台的 Key(用于余额查询等)
upstreamInfoUpstreamInfo上游信息缓存(JSON 对象,存储余额、用户信息等)
createdAtDate创建时间

ApiKeyConfig 结构

typescript
{
  keyName: string      // Key 名称(如 "生图专用"、"对话专用")
  apiKey: string       // API Key 值
}

UpstreamInfo 结构

typescript
{
  balance?: number     // 余额(美元)
  updatedAt?: string   // 余额更新时间
  // ... 其他平台特定信息
}

模型配置(Aimodel)

模型配置定义具体的 AI 模型及其调用参数,隶属于某个上游配置。

字段类型说明
idnumber自增主键
upstreamIdnumber关联的上游配置 ID
categoryModelCategory模型分类(image / video / chat / tts
modelTypeModelType模型类型(如 midjourneydallegpt 等)
apiFormatApiFormatAPI 请求格式(如 mj-proxydalleopenai-chat
modelNamestring发送给上游的模型标识符(如 gpt-4odall-e-3
namestring显示名称(用户可自定义,用于 UI 显示)
estimatedTimenumber预计生成时间(秒,默认 60)
keyNamestring使用的 Key 名称(默认 default 表示使用主 Key)
capabilitiesstring[]模型能力列表(vision/reasoning/function_calling/web_search
createdAtDate创建时间
deletedAtDate软删除时间(null 表示未删除)

模型能力(Capabilities)

能力说明图标
vision视觉能力,支持图片输入👁
reasoning推理能力,支持深度思考🧠
function_calling工具调用能力🔧
web_search联网能力,可访问实时信息🌐

模型分类(ModelCategory)

分类说明支持的模型类型
image图片生成模型Midjourney、DALL-E、Flux、Gemini、豆包、GPT-4o 图像、抠抠图等
video视频生成模型即梦视频、Veo、Sora、Grok 视频
chat对话模型GPT、Claude、Gemini、DeepSeek、通义千问、Kimi 等
tts语音合成模型TTS、Suno、Audio 等

API 格式(ApiFormat)

API 格式决定了请求时使用的接口协议。

格式说明支持的模型
mj-proxyMidjourney Proxy APIMidjourney
geminiGoogle Generative Language APIGemini 绘图
dalleOpenAI Images API(兼容格式)DALL-E、Flux、豆包绘图、Z-Image
openai-chatOpenAI Chat Completions API所有对话模型、部分绘图模型(GPT-4o 图像、Gemini 等)
claudeAnthropic Messages API所有对话模型(通过适配层)
koukoutu抠抠图 API抠抠图
video-unified统一视频生成 API即梦视频、Veo、Sora、Grok 视频

配置页面

配置页面分为两个独立的管理入口:上游配置(/settings/upstreams)和模型配置(/settings/models)。

上游配置

上游配置页面(/settings/upstreams)管理 API 服务端点。

功能

  • 显示所有上游配置卡片(名称、URL、Key 状态、余额)
  • 支持拖拽排序(调整在模型选择器中的显示顺序)
  • 查询余额(支持平台:OpenAI、Cloudflare AI)
  • 编辑/删除上游配置

卡片信息

  • 上游名称(可点击进入详情编辑)
  • Base URL(脱敏显示,如 https://api.open***.com
  • API Key 状态(显示主 Key 和多 Key 数量)
  • 余额(支持的平台显示美元余额,更新时间)
  • 备注信息

新建上游

点击"新建上游"按钮,填写以下信息:

字段必填说明示例
上游名称自定义名称,用于区分不同服务"我的 OpenAI"、"公司中转 API"
Base URLAPI 请求地址前缀https://api.openai.com
主 API Key默认使用的 API 密钥sk-...
上游平台-用于余额查询(可选)OpenAI、Cloudflare AI、None
用户 API Key-平台账号的 Key(用于查询余额)sk-...
备注-说明信息"用于生产环境"

多 Key 配置(可选):

  • 点击"添加 Key"可配置多个 API Key
  • 每个 Key 需设置名称(如"生图专用"、"对话专用")
  • 配置模型时可指定使用哪个 Key

模型配置

模型配置页面(/settings/models)统一管理所有模型,采用列表视图。

列表功能

  • 显示所有模型(支持 Grid/Table 切换)
  • 按分类筛选(对话/图片/视频/TTS)
  • 关键词搜索
  • 列表按分类分组显示

列表字段

字段说明
分类对话/图片/视频/TTS
显示名称默认为模型名称,可自定义
模型能力视觉/联网/推理/工具(图标展示)

添加模型

有两种方式添加模型:

手动添加

点击"添加模型"按钮,打开模型编辑模态框:

字段必填说明
显示名称在模型选择器中显示的名称
模型名称发送给 API 的模型标识符
分类对话/图片/视频/TTS
API 格式请求接口格式
模型类型AI 模型类型
使用的 Key指定使用哪个 API Key
模型能力-视觉/推理/工具/联网(可多选)
预计时间-生成预计耗时(秒)

从上游导入

点击"从上游导入"按钮,系统会调用上游 /v1/models 接口获取模型列表:

  1. 选择目标上游配置
  2. 展示可选模型列表(支持搜索筛选,按分组显示)
  3. 点击模型旁的"+"添加到本地配置
  4. 添加时自动推断分类、能力和 API 格式

自动推断规则

系统根据模型 ID 自动推断以下信息:

推断项规则示例
分类dall-e→图片, kling→视频, tts→TTS, 其他→对话
视觉能力gpt-4o, claude-3, qwen-vl
推理能力o1, deepseek-r1, qwq
工具调用gpt-4, claude, qwen
API 格式midjourney→mj-proxy, gemini→gemini, 其他→openai-chat

编辑模型

点击列表项的"编辑"按钮打开模型编辑模态框,可修改所有字段。

显示名称的作用

引入原因

  1. 区分同类型模型

    • 同一上游的同一模型类型可能有多个模型(如两个 "Gemini 绘图")
    • 原有显示逻辑无法区分(都显示为"Gemini 绘图")
    • 通过自定义名称区分(如"Gemini Nano"、"Gemini Pro")
  2. 简化长模型名

    • 对话模型名称通常很长(如 gpt-4o-search-preview-2025-03-11
    • 显示名称可设为简短名称(如 gpt-4o
    • 实际调用仍使用完整的模型名称

使用位置

  • 所有模型选择器(创作工作台、对话页面、设置页面)
  • 任务卡片(显示使用的模型名称)
  • 助手信息(对话右侧栏显示模型名称)

修改规则

  • 绘图/视频模型:选择模型类型时自动填充为 MODEL_TYPE_LABELS[modelType](中文名称)
  • 对话模型:输入模型名称时自动填充为 modelName(模型标识符)
  • 所有情况下,用户都可以手动修改显示名称
  • 每次修改模型类型/模型名称时,显示名称会被覆盖(不保留用户编辑)

模型选择器

模型选择器是 MJ-Studio 中统一的模型选择组件,在创作工作台和对话页面中使用。

组件位置

  • 创作工作台/studio - 绘图、视频表单顶部
  • 对话页面/chat - 消息输入框中的模型切换按钮
  • 工作流页面/workflow/[id] - 绘图节点中的模型选择
  • 设置页面/settings/general - 绘图相关设置(AI 优化模型、嵌入式绘画模型、工作台默认模型)

选择器样式

下拉列表样式(默认):

  • 按钮显示当前选择(上游名称 / 模型名称
  • 点击展开下拉菜单
  • 菜单按上游分组,每个上游显示其所有模型

列表平铺样式list-layout prop):

  • 不使用下拉菜单,直接显示为平铺列表
  • 适用于表单场景(如设置页面)

选择逻辑

按分类筛选category prop):

  • image:仅显示绘图模型
  • video:仅显示视频模型
  • chat:仅显示对话模型

自动选择(默认开启):

  • 首次加载时自动选择第一个可用模型
  • 可通过 no-auto-select prop 禁用

对齐方式align-right prop):

  • 默认左对齐
  • 设置 align-right 后下拉菜单右对齐(适用于页面右侧场景)

显示格式

按钮文本

上游名称 / 模型显示名称

下拉菜单结构

📦 上游名称 1
  └─ 模型显示名称 1
  └─ 模型显示名称 2
📦 上游名称 2
  └─ 模型显示名称 3

示例

  • 按钮:我的 OpenAI / gpt-4o
  • 菜单:
    📦 我的 OpenAI
      └─ gpt-4o
      └─ gpt-4o-mini
    📦 公司 API
      └─ Claude Sonnet
      └─ DeepSeek

双向绑定

模型选择器通过 v-model 实现双向绑定:

vue
<ModelSelector
  :upstreams="upstreams"
  category="image"
  v-model:upstream-id="selectedUpstreamId"
  v-model:aimodel-id="selectedAimodelId"
/>
  • upstream-id:选中的上游 ID
  • aimodel-id:选中的模型 ID

使用场景

场景 1:配置多个官方 API

需求:使用 OpenAI 官方 API、Google Gemini API、Anthropic API

配置步骤

  1. 新建上游"OpenAI 官方"
    • Base URL: https://api.openai.com
    • 配置 GPT-4o(对话)、DALL-E 3(绘图)
  2. 新建上游"Google AI"
    • Base URL: https://generativelanguage.googleapis.com
    • 配置 Gemini 2.5 Flash(对话)、Gemini 绘图(绘图)
  3. 新建上游"Anthropic"
    • Base URL: https://api.anthropic.com
    • 配置 Claude Sonnet 4(对话)

场景 2:配置第三方中转服务

需求:使用一个中转 API 访问多个模型(OpenAI、Claude、Gemini 等)

配置步骤

  1. 新建上游"万能中转"
    • Base URL: https://api.your-proxy.com
    • 配置多个对话模型(GPT-4o、Claude Sonnet、Gemini Flash、DeepSeek)
    • 配置多个绘图模型(DALL-E、Flux、Gemini 绘图)
  2. 为不同用途配置多个 Key(可选)
    • 添加 Key"生图专用"
    • 添加 Key"对话专用"
    • 绘图模型指定使用"生图专用",对话模型使用"对话专用"

场景 3:区分同类型模型

需求:同一上游有两个 Gemini 绘图模型(不同版本或配置)

配置步骤

  1. 编辑上游"我的中转"
  2. 添加第一个 Gemini 绘图模型
    • 模型类型:Gemini 绘图
    • 模型名称:gemini-2.5-flash-image
    • 显示名称:Gemini Flash
  3. 添加第二个 Gemini 绘图模型
    • 模型类型:Gemini 绘图
    • 模型名称:gemini-2.5-pro-image
    • 显示名称:Gemini Pro

效果

  • 模型选择器显示"我的中转 / Gemini Flash"和"我的中转 / Gemini Pro"
  • 清晰区分两个模型

场景 4:简化长模型名

需求:对话模型名称太长,希望简化显示

配置步骤

  1. 配置对话模型
    • 模型名称:gpt-4o-search-preview-2025-03-11(实际调用名称)
    • 显示名称:gpt-4o(简化显示)
  2. 配置另一个模型
    • 模型名称:gpt-4o-mini-search-preview-2025-03-11
    • 显示名称:gpt-4o-mini

效果

  • 模型选择器显示"gpt-4o"和"gpt-4o-mini"(简洁清晰)
  • 实际 API 调用使用完整模型名称

注意事项

  1. API 格式兼容性

    • 不同模型类型支持的 API 格式不同
    • 配置时系统会自动筛选可用格式
    • 错误的格式会导致调用失败
  2. 模型名称规范

    • 模型名称必须与上游 API 接受的标识符完全一致
    • 对话模型通常区分大小写(如 gpt-4o 不能写成 GPT-4O
    • 建议参考上游服务商的官方文档
  3. 显示名称规则

    • 显示名称仅用于 UI 展示,不影响 API 调用
    • 修改模型类型/模型名称时会覆盖显示名称
    • 建议使用简短、易识别的名称
  4. 多 Key 配置

    • 多 Key 配置主要用于区分不同用途或避免额度限制
    • 每个模型可以指定使用哪个 Key
    • 删除 Key 前确保没有模型正在使用
  5. 上游平台类型

    • 仅用于余额查询功能
    • 如果不需要查询余额,可以不配置
    • 目前支持:OpenAI、Cloudflare AI
  6. 预计时间

    • 预计时间用于进度条显示和用户体验优化
    • 系统会根据实际耗时自动更新(仅绘图模型)
    • 建议根据实际情况调整初始值
  7. 软删除机制

    • 删除模型配置不会立即删除数据库记录
    • 系统使用 deletedAt 字段实现软删除
    • 同步上游配置时,已删除的模型会被恢复(如果重新添加)
  8. 数据同步

    • 编辑上游配置时,系统会智能同步模型列表
    • 已存在的模型会更新字段
    • 新添加的模型会创建记录
    • 删除的模型会标记为软删除

最佳实践

  1. 命名规范

    • 上游名称:使用业务场景命名(如"生产环境"、"测试 API")
    • 显示名称:简短清晰(如"GPT-4o"、"Claude Sonnet")
  2. Key 管理

    • 主 Key 用于通用场景
    • 多 Key 配置用于区分用途(生图、对话、测试等)
    • 定期轮换 API Key 提高安全性
  3. 模型分组

    • 将相同服务商的模型放在同一上游
    • 或按业务场景分组(如"高质量生图"、"快速对话")
  4. 余额监控

    • 配置上游平台类型和用户 Key
    • 定期查询余额,避免欠费中断服务
    • 设置多个上游作为备用
  5. 性能优化

    • 置顶常用上游(排序顺序设为 0)
    • 删除不再使用的模型配置
    • 合理设置预计时间(影响进度条显示)

MJ-Studio - 多模型 AI 工作台