Guides / 视频转图文攻略

Jev Model Router 实战:用 Jev 搭建带隐私门控的本地模型路由器

Sam Witteveen 用 19 分钟搭出一个本地模型路由器:一次 Jev 调用同时完成请求分类、难度评分与 PII 隐私门控,在本地 MiniCPM5-2B、OpenRouter 上的 DeepSeek V4.1 Flash 与本地 Qwen-Image-2.1 图像通道之间自动分流。

速览结论

模型路由器就是一个端点:每条进来的提示词都先让 Jev 回答三个问题——Choice 定车道(闲聊/代码/图像)、Score 评难度、Noul 做隐私门控——然后按答案分流:问候语留在本地 MiniCPM5-2B,代码发给 OpenRouter 上的 DeepSeek V4.1 Flash,画图走本地 Qwen-Image-2.1,而任何含 PII 的内容永远不离开本机。三个问题挂在同一个 state 上并行执行,路由成本约等于只问一次(每次决策约 120ms,换本地 Semif 判定只要 88ms)。演示里 53 条请求有 40 条(75%)完全本地作答,省下 $0.00813 云成本,实际只花 $0.00709——而且每条决策都落 SQLite,哪个模型答的、为什么答,全部可审计。

视频来源

Sam Witteveen

19:03ZR7anrL50xs

分步图文攻略

  1. 1

    先铺两条车道:一个本地干将,一个云端专家

    路由器起步只需要两个模型。本地跑一个小模型——Sam 用的是 MiniCPM5-2B,经 LM Studio 或 Ollama 起在 8000 端口——接住闲聊和轻任务;云端接一个 DeepSeek V4.1 Flash(OpenRouter),专管真正写代码的活。后续再加两条可选车道:本地 Qwen-Image-2.1 负责图像生成与编辑(录制前一天刚发布,许可证实际不可商用),以及 Claude Opus 5 作为研究级难题的升级车道。应用界面把每条车道做成开关,测试时可以把流量钉死在单一模型上。

    Jev 模型路由器幻灯片列出两条起始车道:MiniCPM5-2B 经 LM Studio 或 Ollama 跑在本地 8000 端口,DeepSeek 驻云负责复杂代码。
    起步两条车道:本地 MiniCPM5-2B,云端 DeepSeek。跳转至 1:10
  2. 2

    一次类型化调用,替换掉「解析-校验-重试」循环

    一次 jev.ask(state, questions) 之后,整个路由器就剩几条 if 语句:ans.task.choice 等于 "image" 就 return qwen_image(prompt);ans.hard.score 不低于 4 就 return deepseek(prompt);ans.pii.noul 高于 0.7 就钉在 local(prompt);否则落到 minicpm(prompt)。幻灯片特意标注了不再需要的东西:从自由文本里抠出 {"task": "code"} 字符串、校验它、解析失败再重试。Jev 直接返回带校准概率的类型化结果,路由逻辑读起来就是「一个听得懂人话的 if 语句」。

    路由器伪代码调用 jev.ask(state, questions) 后按 ans.task.choice 等于 image、ans.hard.score 大于等于 4、ans.pii.noul 大于 0.7 分流,旁边 NOT NEEDED 卡片划掉了 JSON 解析、校验与重试。
    一次类型化调用加四条 if——解析校验重试循环直接消失。跳转至 2:26
  3. 3

    Choice、Score、Noul 三问并行,一趟搞定

    路由器把三个问题挂在同一个 state 上:Choice 定任务车道,Score 评难度,Noul 标隐私。Jev 并行评估,问三个和问一个耗时几乎一样——幻灯片按每趟约 120ms 做预算,而一次响应同时带回三个答案:code 0.88、hard 8/10、pii 0.04。底部横幅同样关键:置信度低时不要猜——回退到安全默认车道。每个答案都带校准过的置信度,路由器才能在高置信时激进分流、在其余情况优雅降级。

    Jev 图解:choice、score、noul 三问挂在同一 state 上并行评估,一次响应带回 code 0.88、hard 8/10、pii 0.04,底部横幅写着置信度低就回退不要猜。
    三问一趟带回——置信度低就回退,绝不硬猜。跳转至 5:32
  4. 4

    写路由器之前,先写隐私门控

    最关键的问题不是「派哪个模型」,而是「这条内容不能去哪」。private Noul 问的是:这段对话是否包含不应离开本机的个人、机密、客户、财务、医疗或凭据数据——API key、密码、token、账号、真实姓名地址;true 代表真机密,false 代表泛化内容或显而易见的占位符。第二个 Noul 检查正确作答是否需要联网新数据,于是提示词命中隐私时网络车道直接禁用。Sam 把信任边界说得明白:云版 Jev 可以信任,前沿大模型厂商不行——视频后半段连判定器都换成了本地 OpenJev,连「该路由到哪」这个决策本身都不再外泄。

    发给判定器的 JSON 面板:private Noul 把个人、财务、医疗与凭据数据钉在本地,needs_web Noul 控制联网车道开关,右侧答案面板返回 code 作为任务选择。
    private 与 needs_web 两道 Noul 门——命中 PII 就锁死本地车道。跳转至 10:12
  5. 5

    发一句问候,看它留在本地

    路由器跑起来后,输入 "hey, how's it going",返回横幅:Chit-chat(100%),MiniCPM5-2B handles this locally——回复直接由本地模型流式吐出。Next.js 界面的模型面板把每条车道排成一行(MiniCPM5-2B 本地、OpenRouter 的 DeepSeek V4.1 Flash、本地 Qwen-Image-2.1、联网车道、攻坚用的 Claude Opus 5),totals 卡片实时统计请求数、本地消化占比、省下与花掉的成本、判定延迟中位数、回退次数与隐私请求数。换个「写段 Python」横幅立刻翻成 DeepSeek;粘一个假 API key,横幅马上弹回本地——隐私门控出手了。

    Jev Router 聊天应用回复 hey how is it going,带 MiniCPM5-2B 本地徽标与 chit-chat 100% 判定,右侧模型面板列出七条车道,totals 显示 41 条请求中 33 条本地作答。
    Chit-chat(100%):一句问候没出本机,MiniCPM5-2B 直接接住。跳转至 6:20
  6. 6

    读记分牌,然后把判定器也搬回本地

    53 条请求跑完:40 条(75%)完全本地作答,省下 $0.00813 云成本,实花 $0.00709,回退 6 次、隐私请求 12 条——省下的已经盖过判定开销。最后一步把判定器从云版 typesafe/jev-1.13 换成 Semif(跑在本地 Qwen3.5-4B 上的 OpenJev 克隆):判定结果一致,载荷格式略有差异,整条流水线连判定在内全部离线。Sam 的收尾数字:整期视频所有演示加起来花费不到 1 美分;Settings 里露出隐私滑杆和各车道阈值,调路由器本质上就是读自己那份 SQLite 决策日志。

    Jev Router totals 卡片:53 条请求 40 条本地作答占 75%,省下 $0.00813 对实花 $0.00709,Semif 判定中位 318ms,旁边是 DeepSeek 联网搜索并引用 npm 与 GitHub 来源的回答。
    75% 本地消化、省过实花——判定器 Semif 也已完全本地。跳转至 16:20

常见问题(FAQ)

Jev 模型路由器是什么?

一个在所有 LLM 之前先用 Jev 模型给每条请求分类的端点。一次调用同时问 Choice(走哪条车道:闲聊、代码、图像、推理)、Score(难度多高)和至多两个 Noul(是否含隐私、是否需要联网),然后在你代码里用确定性 if 语句把请求派给对应模型——问候语给本地小模型,代码给 DeepSeek,画图给图像模型,任何含 PII 的内容只进本地车道。

为什么要路由,而不是全程用一个大模型?

因为大部分流量根本不难。视频里 53 条请求有 40 条(75%)由本地 MiniCPM5-2B 作答,省下 $0.00813 云成本,而 Jev 判定加剩余云调用实花只有 $0.00709。路由还削低了简单轮次的延迟,并且让你按请求执行隐私策略,而不是把每条提示词都托付给每一个厂商。

路由器能完全离线运行吗?

可以。最终配置把判定器从云版 typesafe/jev-1.13 换成 Semif——跑在本地 Qwen3.5-4B 上、走 OpenAI 兼容端点的 OpenJev 模型。单次判定约 88ms,提示词、PII、连路由决策本身都不出本机。

路由器拿不准的时候会怎样?

回退,不硬猜。每个 Jev 答案都带校准置信度,路由器的实时规则会把低置信任务送去安全默认车道:任务置信度低于 0.6 升级到通用模型,隐私分超过滑杆阈值就锁死本地车道,预计输出超过 16,000 token 直接跳更大的云模型。UI 会统计每次回退,误路由都能在 SQLite 决策日志里追溯。