🔀 Free Model Router
← 返回社区首页

FMR v3.0 新功能操作指引

MoA 多模型聚合 · 自定义 Provider · 自定义分组——假设你从未用过这三个功能,从零开始逐个讲清楚。

1 总览:三个新功能是什么

🧩 各用一句话说清楚

  • 自定义 Provider(管理台「Providers」页)——把你自己的 OpenAI 兼容服务(本地 Ollama、自建网关、第三方中转)接入 FMR,和免费渠道一起统一路由、统一管理。
  • 自定义分组(管理台「分组」页)——把若干模型打包成一个候选池,池子的名字可以直接当模型名用:客户端填写组 id,组内成员失败自动切换下一个。
  • MoA 多模型聚合(管理台「设置」页)——多个模型并行作答,再由一个聚合模型参考它们的答案合成最终回复,用"人多力量大"换取更高质量的回答。

🔗 三者怎么配合

前两个功能是一条流水线:接入自己的渠道后,还差最后一步"把它变成可调用的模型名",这一步由自定义分组完成。

① 自定义 Provider

在「Providers」页接入自己的服务

② 自定义分组

在「分组」页把模型编组,组 id 就是模型名

③ 客户端调用

model 填分组 id,组内失败自动切换成员

MoA 则是一个独立开关,它的自动挑选池同时覆盖免费模型和自定义模型——所以即使不手动指定参与者,接入的新模型也会被自动纳入。

⚠️ 最重要的规则,先记住这条

自定义渠道的模型不能直接调用:它们没有能力评分,不会进入默认分组,客户端直接拿模型 id 当 model 请求会返回 400。正确做法是先到「分组」页把模型加入自定义分组,然后用分组 id 作为 model 请求(比如模型 deepseek-v4-flash → 建组 grp-ark → 请求 model=grp-ark)。这条规则在第三章还会提醒你。

2 准备工作:打开管理台

📋 前置要求
  • FMR 已安装并正在运行(还没装?先看 FMR 配置手册,5 分钟启动)
  • 一台能开浏览器的电脑
1

确认服务已启动

安装时注册的系统服务会开机自启;如果是手动运行,保持服务进程在跑即可。

2

浏览器打开管理台

在浏览器地址栏输入:

http://127.0.0.1:5678/admin

本机(127.0.0.1)访问免密直达,不需要登录。如果服务部署在服务器上、你从别的设备访问,需要先设置管理员账号再登录(详见 配置手册的远程访问章节)。

🗺️ 左侧导航一览

页面 用途
快速开始新手引导、接入示例和模型名速查表
概览运行状态总览
Providers模型渠道管理,自定义 Provider 在这里添加(第三章)
分组默认分组 + 自定义分组 + 默认路由路径,自定义分组在这里创建(第四章)
权益中心多 API Key、识图、文生图等权益的开通入口
设置MoA 配置、超时档位等全局设置,MoA 在这里配置(第五章)
反馈提交问题和建议

三个新功能的入口分别在 Providers分组设置 三个页面,下面逐个讲解。

3 自定义 Provider:接入你自己的模型渠道

💡 它解决什么问题

FMR 默认聚合的是免费渠道。如果你手上有自己的 OpenAI 兼容服务——比如:

  • 本地跑的 Ollama(地址形如 http://localhost:11434/v1
  • 公司或个人搭的 API 网关
  • 第三方购买的 OpenAI 兼容中转服务

都可以通过自定义 Provider 接进来,让 FMR 把它们和免费渠道一起纳入路由、监控和管理。

⚠️ 安全提醒(添加时页面上也会显示)

自定义 provider 不受域名白名单保护,请确认 baseUrl 可信。另外 API Key 只保存在你本机的配置文件里,不会上传到任何服务器。

1

打开添加窗口

左侧导航进入「Providers」页,点击工具栏的「添加 Provider」按钮,会弹出「添加自定义 Provider」窗口。窗口分三步。

2

第 1 步:基本信息

  • Provider ID(必填):这个渠道的唯一标识。不能包含 # 和空格;创建后锁定不可修改。建议用好记的名字,比如 my-ollama
  • Base URL(必填):服务的 OpenAI 兼容地址,FMR 会自动拼接 /chat/completions 转发请求。只支持 http/https;如果漏写 /v1 版本段会自动补上。以本地 Ollama 为例填 http://localhost:11434/v1
3

第 2 步:API Keys

至少填写一个。本地 Ollama 这类不需要鉴权的服务,随便填一个占位值即可。想给同一个渠道配多个 Key 轮换?需要先在「权益中心」开通 multi_apikey 权益(5 credit/30 天),未解锁时只有第一个 key 会生效。

4

第 3 步:模型列表(可留空,稍后补充)

每行填一个模型:模型 id、是否识图(vision)、上下文窗口、最大输出。两个快捷按钮可以省去手填:

  • 「拉取模型」——自动请求上游的 /v1/models,把模型清单拉回来填充。
  • 「连通性测试」——立刻验证地址和 Key 是否可用,建议创建前点一次。

勾选「识图」的模型会被标记为具备 vision 能力,可参与识图路由。

5

点击「创建」

成功后提示:"自定义 provider 创建成功。模型需到「分组」页建组后才能被客户端路由"。渠道卡片会带一个「自定义」徽标,右上角菜单里有「全部模型 / 编辑 / 删除 / 停用 / 启用」。

⚠️ 创建成功 ≠ 可以直接调用

再次强调第一章的规则:自定义模型没有能力评分,不会进入默认路由池。此时客户端直接请求 model=你的模型id 会返回 400(错误信息里也会附上"请到分组页建组"的指引)。请继续完成第四章,把模型加入分组后才能正常调用。

🛠️ 日常管理

  • 编辑:ID 不可改;修改 Base URL 会强制重新做连通性测试,避免改错地址后不知情。
  • 停用 / 启用:临时下线渠道时用停用,统计和配置都保留。
  • 删除:软删除,历史统计保留,不怕误删。

🚫 常见报错对照

提示 原因与处理
provider id "X" 已存在 ID 重复,换一个即可
baseUrl "X" 已被 provider "Y" 使用 一个服务地址只能属于一个 Provider;如果确实是同一个服务,去编辑已有的那个
至少填写一个 API Key 第 2 步的 Key 编辑器是空的,至少填一行
连通性测试失败 检查服务是否启动、地址是否正确、本机网络能否到达该服务

喜欢直接改配置文件的用户:自定义 Provider 保存在 ~/.free-model-router/data/router-config.jsonproviders.<你的ID> 节点(带 custom: true 标记),改文件与管理台操作等效。

4 自定义分组:把模型打包成"可调用的模型名"

💡 它解决什么问题

分组页导语原文:"把模型按用途编成组,客户端直接填写组名即可使用。每组失败自动切换下一个成员,不花一分钱也能稳定用上免费模型。"

说白了,分组就是给一批模型起一个共同的名字:客户端 model 填组 id,请求就只在组内成员之间路由,某个成员挂了自动换下一个。典型玩法:

  • 接入自定义渠道的必经之路——自定义 Provider 的模型必须加入分组才能被调用(第三章的遗留任务在这里完成)。
  • 用途专属组——比如建一个"写作专用组",只放你觉得文笔好的几个模型。
  • 稳定优先组——把自己验证过最稳的模型编一组,避开波动大的渠道。

📦 先认识两个系统自带的默认分组

「分组」页上方是默认分组:系统按模型能力评分自动分档,成员随模型库实时更新,无需手动维护(也不可手动编辑成员):

组 id 定位 成员构成
model-router-max 最强模型,攻坚难题 评分 ≥95 的顶级模型
model-router-pro 日常好用,稳定均衡 评分 85–95(不含 95)的优质模型

两者各带启停开关,可点「查看成员」看当前入选的模型。

1

打开新建窗口

左侧导航进入「分组」页,在「我的分组」区域点击「+ 新建分组」

2

填「组 id」——这就是你未来的模型名

客户端到时候填的就是它,起个好记的名字,比如 my-best-models。命名规则:

  • 小写字母、数字开头,可含点、横线、下划线,2–64 位
  • 创建后不可修改
  • 不能用系统保留名:model-routermodel-router-moamodel-router-maxmodel-router-promodel-router-imagemodel-router-omni
3

显示名(选填)与分组类型

显示名只是给自己看的备注(比如"我的写作专用组")。分组类型二选一:

  • 对话组——放文本与多模态模型,用于对话/补全接口
  • 绘图组——放文生图模型,用于图像生成接口

类型创建后不可修改,选之前想清楚。

4

勾选成员模型

成员列表按渠道分组展示,顶部有搜索框("搜索模型名或渠道..."),每个模型带评分、能力标签和上下文窗口。自定义 provider 的模型也会出现在列表里——第三章接入的 Ollama 模型就在这里。至少勾选 1 个成员。

5

点击「创建分组」

成功提示:"分组「id」已创建,客户端填写该模型名即可使用"保存即生效,无需重启任何东西

📞 客户端怎么调用

和其他模型名的用法完全一致,把 model 换成你的组 id 即可:

curl http://127.0.0.1:5678/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "my-best-models", "messages": [{"role": "user", "content": "你好"}]}'

所有启用的分组会自动出现在 /v1/models 返回的模型列表里,OpenAI 和 Anthropic 两种协议都支持。不确定组名?在客户端里拉一次模型列表就能看到。

🛣️ 进阶:默认路由路径(model-router 映射)

分组页最下方可以配置客户端不指定模型(使用 model-router)时的默认路由路径:按顺序逐级尝试,组内失败自动降级到下一组,最终回退到全部文本模型。

操作:点「添加组」把启用的对话组加进路径,用 ↑↓ 调整优先顺序,最后点「保存映射」。留空表示不启用映射(默认行为,走系统自动路由)。

🛠️ 日常管理

  • 启停开关:停用后提示"客户端填写该组名将不再路由"——临时下线一个组就用它。
  • 编辑:只能改显示名和成员;组 id、分组类型锁定。
  • 删除:确认框会提醒"删除后客户端填写该组 id 的请求将报错,请先把客户端模型名改回 model-router 或其他分组"。删除前先改客户端配置。

5 MoA 多模型聚合:让一群模型合作回答

💡 它解决什么问题

单个免费模型偶尔会"翻车":推理不严谨、漏条件、答非所问。MoA(Mixture of Agents,多模型聚合)的思路是让多个模型先各自答一遍,再由一个聚合模型汇总出最终回复

  • 先并行把问题发给 N 个 reference(参考)模型,拿到 N 份草稿;
  • 再把这 N 份草稿作为参考材料,连同原问题一起交给 aggregator(聚合)模型,合成一份取长补短的最终回答。

对外它就是一个普通模型名 model-router-moa——任何客户端把 model 填成它即可,用法和别的模型没有区别。注意额度:一次 MoA 请求约消耗 (N+1) 次上游调用(N 个参考 + 1 个聚合),比普通请求费额度,建议用在值得认真答的问题上。

📋 前置要求
  • 至少有可用的文本模型(免费渠道或自定义渠道的模型都行)
  • MoA 默认已启用——不调参的话,客户端直接用 model-router-moa 就能跑
1

找到 MoA 配置区

左侧导航进入「设置」页,找到「MoA 配置」区块。说明文字会提示额度规则,和上面一致。

2

启用开关

勾选「启用 MoA(/v1/models 暴露 model-router-moa)」。勾上后 model-router-moa 才会出现在模型列表里;取消勾选则隐藏并拒绝相关请求。

3

Reference 数量与参与者

拖动「Reference 数量」滑块,1–6 个,默认 3。每个 Reference 槽位是一个下拉框,两种选法:

  • 自动(按能力智能挑选)——推荐。系统按能力评分挑当前最合适的模型,并做"模型族去重":同一系列的模型不会重复入选,保证参考意见的多样性。
  • 固定某个模型——下拉按渠道分组列出所有可用文本模型,选谁就固定用谁。

注意:同一个模型不能同时固定为 Reference 和聚合模型,否则页面会红字提示"被重复固定",保存会被拒绝。

4

聚合模型(aggregator)

负责"读所有草稿、写最终答案"的模型,同样可「自动」或固定。聚合模型的能力直接影响最终质量,想稳定高质量可以固定成你最信任的模型。

5

选档位(profile)

档位决定参考模型的超时和输出上限,下拉三选一(默认均衡):

档位 参数 适合
速度优先(speed) 超时 60s · 单份 reference 上限 1500 tokens · 流式心跳 关 要求响应快,接受略简短的聚合
均衡(balanced) 超时 120s · 单份 reference 上限 2500 tokens · 流式心跳 关 日常使用,默认推荐
质量优先(quality) 超时 240s · 单份 reference 上限 不限 · 流式心跳 开 难题攻坚,愿意多等

切换档位时下方会实时显示对应参数提示。

6

(可选)高级选项

展开「高级选项」可设降级通知策略loud(默认,失败/替补会告知聚合模型,让它心里有数)或 silent(静默忽略失败)。

7

保存并检查解析预览

「保存 MoA 配置」。下方的解析预览区会逐槽位显示实际生效的模型(固定 / 自动 / 替补 / 无法解析),替补项标红并说明原因——保存后记得扫一眼这里,确认没有"无法解析"的槽位。

📞 客户端怎么调用

curl http://127.0.0.1:5678/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "model-router-moa", "messages": [{"role": "user", "content": "帮我审一遍这段方案,指出漏洞"}]}'

OpenAI 和 Anthropic 两种协议都支持,与普通模型名用法完全一致。

🛟 出问题时它怎么表现(降级机制)

  • 一个可用模型都没有 → 返回 503:"MoA 无可用模型:请检查 Provider 配置或稍后重试"
  • 只剩 1 个可用 → 自动跳过多模型聚合,单模型直连,请求不会失败
  • 部分参考模型失败 → 成功的照常参与聚合;loud 模式会把失败情况告知聚合模型
  • 参考模型全部失败 → 聚合模型单独回答,请求仍然可用
  • 固定指定的模型临时不可用 → 自动换替补,并在结果中标注
  • 输入超过所有模型的上下文窗口 → 返回 400

两个贴心机制:usage 统计是所有子调用之和(N 个参考 + 1 个聚合),账目清楚;长上下文自动升档——输入约 3.2 万 tokens 以上时,本次请求自动按质量优先档参数执行,只升不降,无需手动调档。

6 常见问题

❓ 为什么请求自定义模型返回 400"未知模型"?

自定义渠道的模型不直接对外暴露,这是设计行为。请到「分组」页把模型加入自定义分组,然后用分组 id 作为 model 请求(见第四章)。返回 400 时错误信息里也附有这条指引。

❓ 在管理台保存配置后,需要重启服务吗?

不需要。分组、Provider、MoA 配置保存即生效,/v1/models 会立即反映最新状态。

❓ MoA 请求返回 503?

说明此刻池内一个可用模型都没有。去「Providers」页检查渠道是否启用、健康状态是否正常;免费上游偶发波动时稍等重试即可。

❓ MoA 响应的 tokens 消耗为什么比普通请求大?

一次 MoA 请求 = N 个参考模型 + 1 个聚合模型,共 (N+1) 次上游调用,usage 是它们之和。想省额度就把 Reference 数量调小,或普通问题直接用 model-router,难题再上 MoA。

❓ 想给同一个 Provider 配多个 API Key?

需要先在「权益中心」开通 multi_apikey 权益(5 credit/30 天);未开通时多填的 key 不会生效,只有第一个在使用。

❓ 新建分组提示"该 id 为系统保留名称"?

这 6 个名字是系统内置模型名,不能占用:model-routermodel-router-moamodel-router-maxmodel-router-promodel-router-imagemodel-router-omni。换个自己的名字即可。

❓ 删除分组或 Provider,对客户端有什么影响?

删除分组后,客户端填这个组 id 的请求会直接报错——删之前先把客户端的模型名改回 model-router 或其他分组。删除 Provider 是软删除,历史统计保留;它贡献给各分组的成员会自动消失。

❓ 本机能打开管理台,别的设备打不开?

管理台默认只监听本机 127.0.0.1,这是安全设计。远程服务器场景建议用 SSH 隧道访问,做法见 配置手册的远程访问章节。

7 附录:模型名速查表

客户端 model 字段可以填的所有名字,一张表看完(与管理台「快速开始」页的速查表一致):

模型名 路由 适用 开通
model-router text 池(发图自动升级 vision) 对话/补全/识图 默认可用
model-router-moa MoA 聚合池(多个 reference 并行 + 聚合合成) 多模型混合高质量回答 默认可用
model-router-max 默认分组(评分 ≥95 的顶级模型) 复杂推理/长文写作等硬任务 默认可用
model-router-pro 默认分组(评分 85–95(不含 95)的优质模型) 日常主力,稳定均衡 默认可用
model-router-image image 池 文生图 需开通 image
你自建的分组 id 自定义分组(成员按你的勾选) 按用途自由组合 创建即用
自定义渠道的裸模型 id 不参与路由 直接请求返回 400,需先建组

启用的自定义分组会动态出现在 /v1/models 返回中,客户端拉一次模型列表即可确认。