MoA 多模型聚合 · 自定义 Provider · 自定义分组——假设你从未用过这三个功能,从零开始逐个讲清楚。
前两个功能是一条流水线:接入自己的渠道后,还差最后一步"把它变成可调用的模型名",这一步由自定义分组完成。
在「Providers」页接入自己的服务
在「分组」页把模型编组,组 id 就是模型名
model 填分组 id,组内失败自动切换成员
MoA 则是一个独立开关,它的自动挑选池同时覆盖免费模型和自定义模型——所以即使不手动指定参与者,接入的新模型也会被自动纳入。
自定义渠道的模型不能直接调用:它们没有能力评分,不会进入默认分组,客户端直接拿模型 id 当 model 请求会返回 400。正确做法是先到「分组」页把模型加入自定义分组,然后用分组 id 作为 model 请求(比如模型 deepseek-v4-flash → 建组 grp-ark → 请求 model=grp-ark)。这条规则在第三章还会提醒你。
安装时注册的系统服务会开机自启;如果是手动运行,保持服务进程在跑即可。
在浏览器地址栏输入:
http://127.0.0.1:5678/admin
本机(127.0.0.1)访问免密直达,不需要登录。如果服务部署在服务器上、你从别的设备访问,需要先设置管理员账号再登录(详见 配置手册的远程访问章节)。
| 页面 | 用途 |
|---|---|
| 快速开始 | 新手引导、接入示例和模型名速查表 |
| 概览 | 运行状态总览 |
| Providers | 模型渠道管理,自定义 Provider 在这里添加(第三章) |
| 分组 | 默认分组 + 自定义分组 + 默认路由路径,自定义分组在这里创建(第四章) |
| 权益中心 | 多 API Key、识图、文生图等权益的开通入口 |
| 设置 | MoA 配置、超时档位等全局设置,MoA 在这里配置(第五章) |
| 反馈 | 提交问题和建议 |
三个新功能的入口分别在 Providers、分组、设置 三个页面,下面逐个讲解。
FMR 默认聚合的是免费渠道。如果你手上有自己的 OpenAI 兼容服务——比如:
http://localhost:11434/v1)都可以通过自定义 Provider 接进来,让 FMR 把它们和免费渠道一起纳入路由、监控和管理。
自定义 provider 不受域名白名单保护,请确认 baseUrl 可信。另外 API Key 只保存在你本机的配置文件里,不会上传到任何服务器。
左侧导航进入「Providers」页,点击工具栏的「添加 Provider」按钮,会弹出「添加自定义 Provider」窗口。窗口分三步。
# 和空格;创建后锁定不可修改。建议用好记的名字,比如 my-ollama。/chat/completions 转发请求。只支持 http/https;如果漏写 /v1 版本段会自动补上。以本地 Ollama 为例填 http://localhost:11434/v1。至少填写一个。本地 Ollama 这类不需要鉴权的服务,随便填一个占位值即可。想给同一个渠道配多个 Key 轮换?需要先在「权益中心」开通 multi_apikey 权益(5 credit/30 天),未解锁时只有第一个 key 会生效。
每行填一个模型:模型 id、是否识图(vision)、上下文窗口、最大输出。两个快捷按钮可以省去手填:
/v1/models,把模型清单拉回来填充。勾选「识图」的模型会被标记为具备 vision 能力,可参与识图路由。
成功后提示:"自定义 provider 创建成功。模型需到「分组」页建组后才能被客户端路由"。渠道卡片会带一个「自定义」徽标,右上角菜单里有「全部模型 / 编辑 / 删除 / 停用 / 启用」。
再次强调第一章的规则:自定义模型没有能力评分,不会进入默认路由池。此时客户端直接请求 model=你的模型id 会返回 400(错误信息里也会附上"请到分组页建组"的指引)。请继续完成第四章,把模型加入分组后才能正常调用。
| 提示 | 原因与处理 |
|---|---|
| provider id "X" 已存在 | ID 重复,换一个即可 |
| baseUrl "X" 已被 provider "Y" 使用 | 一个服务地址只能属于一个 Provider;如果确实是同一个服务,去编辑已有的那个 |
| 至少填写一个 API Key | 第 2 步的 Key 编辑器是空的,至少填一行 |
| 连通性测试失败 | 检查服务是否启动、地址是否正确、本机网络能否到达该服务 |
喜欢直接改配置文件的用户:自定义 Provider 保存在 ~/.free-model-router/data/router-config.json 的 providers.<你的ID> 节点(带 custom: true 标记),改文件与管理台操作等效。
分组页导语原文:"把模型按用途编成组,客户端直接填写组名即可使用。每组失败自动切换下一个成员,不花一分钱也能稳定用上免费模型。"
说白了,分组就是给一批模型起一个共同的名字:客户端 model 填组 id,请求就只在组内成员之间路由,某个成员挂了自动换下一个。典型玩法:
「分组」页上方是默认分组:系统按模型能力评分自动分档,成员随模型库实时更新,无需手动维护(也不可手动编辑成员):
| 组 id | 定位 | 成员构成 |
|---|---|---|
model-router-max |
最强模型,攻坚难题 | 评分 ≥95 的顶级模型 |
model-router-pro |
日常好用,稳定均衡 | 评分 85–95(不含 95)的优质模型 |
两者各带启停开关,可点「查看成员」看当前入选的模型。
左侧导航进入「分组」页,在「我的分组」区域点击「+ 新建分组」。
客户端到时候填的就是它,起个好记的名字,比如 my-best-models。命名规则:
model-router、model-router-moa、model-router-max、model-router-pro、model-router-image、model-router-omni显示名只是给自己看的备注(比如"我的写作专用组")。分组类型二选一:
类型创建后不可修改,选之前想清楚。
成员列表按渠道分组展示,顶部有搜索框("搜索模型名或渠道..."),每个模型带评分、能力标签和上下文窗口。自定义 provider 的模型也会出现在列表里——第三章接入的 Ollama 模型就在这里。至少勾选 1 个成员。
成功提示:"分组「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)时的默认路由路径:按顺序逐级尝试,组内失败自动降级到下一组,最终回退到全部文本模型。
操作:点「添加组」把启用的对话组加进路径,用 ↑↓ 调整优先顺序,最后点「保存映射」。留空表示不启用映射(默认行为,走系统自动路由)。
单个免费模型偶尔会"翻车":推理不严谨、漏条件、答非所问。MoA(Mixture of Agents,多模型聚合)的思路是让多个模型先各自答一遍,再由一个聚合模型汇总出最终回复:
对外它就是一个普通模型名 model-router-moa——任何客户端把 model 填成它即可,用法和别的模型没有区别。注意额度:一次 MoA 请求约消耗 (N+1) 次上游调用(N 个参考 + 1 个聚合),比普通请求费额度,建议用在值得认真答的问题上。
model-router-moa 就能跑左侧导航进入「设置」页,找到「MoA 配置」区块。说明文字会提示额度规则,和上面一致。
勾选「启用 MoA(/v1/models 暴露 model-router-moa)」。勾上后 model-router-moa 才会出现在模型列表里;取消勾选则隐藏并拒绝相关请求。
拖动「Reference 数量」滑块,1–6 个,默认 3。每个 Reference 槽位是一个下拉框,两种选法:
注意:同一个模型不能同时固定为 Reference 和聚合模型,否则页面会红字提示"被重复固定",保存会被拒绝。
负责"读所有草稿、写最终答案"的模型,同样可「自动」或固定。聚合模型的能力直接影响最终质量,想稳定高质量可以固定成你最信任的模型。
档位决定参考模型的超时和输出上限,下拉三选一(默认均衡):
| 档位 | 参数 | 适合 |
|---|---|---|
| 速度优先(speed) | 超时 60s · 单份 reference 上限 1500 tokens · 流式心跳 关 | 要求响应快,接受略简短的聚合 |
| 均衡(balanced) | 超时 120s · 单份 reference 上限 2500 tokens · 流式心跳 关 | 日常使用,默认推荐 |
| 质量优先(quality) | 超时 240s · 单份 reference 上限 不限 · 流式心跳 开 | 难题攻坚,愿意多等 |
切换档位时下方会实时显示对应参数提示。
展开「高级选项」可设降级通知策略:loud(默认,失败/替补会告知聚合模型,让它心里有数)或 silent(静默忽略失败)。
点「保存 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 两种协议都支持,与普通模型名用法完全一致。
两个贴心机制:usage 统计是所有子调用之和(N 个参考 + 1 个聚合),账目清楚;长上下文自动升档——输入约 3.2 万 tokens 以上时,本次请求自动按质量优先档参数执行,只升不降,无需手动调档。
自定义渠道的模型不直接对外暴露,这是设计行为。请到「分组」页把模型加入自定义分组,然后用分组 id 作为 model 请求(见第四章)。返回 400 时错误信息里也附有这条指引。
不需要。分组、Provider、MoA 配置保存即生效,/v1/models 会立即反映最新状态。
说明此刻池内一个可用模型都没有。去「Providers」页检查渠道是否启用、健康状态是否正常;免费上游偶发波动时稍等重试即可。
一次 MoA 请求 = N 个参考模型 + 1 个聚合模型,共 (N+1) 次上游调用,usage 是它们之和。想省额度就把 Reference 数量调小,或普通问题直接用 model-router,难题再上 MoA。
需要先在「权益中心」开通 multi_apikey 权益(5 credit/30 天);未开通时多填的 key 不会生效,只有第一个在使用。
这 6 个名字是系统内置模型名,不能占用:model-router、model-router-moa、model-router-max、model-router-pro、model-router-image、model-router-omni。换个自己的名字即可。
删除分组后,客户端填这个组 id 的请求会直接报错——删之前先把客户端的模型名改回 model-router 或其他分组。删除 Provider 是软删除,历史统计保留;它贡献给各分组的成员会自动消失。
管理台默认只监听本机 127.0.0.1,这是安全设计。远程服务器场景建议用 SSH 隧道访问,做法见 配置手册的远程访问章节。
客户端 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 返回中,客户端拉一次模型列表即可确认。