← 返回博客
成本模型路由Agent教程架构

LLM 模型路由实战:用 Jev 和 jev-router 砍掉大模型账单

·约 5 分钟

LLM 模型路由实战:用 Jev 和 jev-router 砍掉大模型账单

把每一次用户请求都丢给旗舰大模型,是大多数团队 API 账单失控的起点。社区反复验证过的解法是模型路由:先便宜地判断这条请求的难度和类型,简单请求走轻量模型,只有真正需要的请求才升级到旗舰。路由这一步省下的钱,通常占整条链路优化收益的大头。

路由其实分两种,Jev 两种都能做,而且官方给了两条现成的路:

  1. 业务路由——"这条请求该走哪个流程 / 哪个队列 / Agent 下一步做什么"。用 Jev 的 Decisions API,state + questions 自己拿结果。
  2. 模型路由——"这条请求该用哪个模型、多大的推理力度"。官方把这套逻辑直接封装成了 typesafe/jev-router,把 model 字段换掉就能用。

一句话总结:要确定性的业务分支(可审计、可设阈值),自己调 Jev 写路由;只想给现有应用省账单、一行代码不改业务逻辑,换 typesafe/jev-router。


模式一:自己写路由逻辑(Decisions API)

思路:在昂贵调用之前插一个轻量决策调用,让 Jev 回答一个你定义的问题,代码按结果分支。

比如一个客服 Agent,先判断请求复杂度:

curl https://openrouter.ai/api/alpha/decisions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "typesafe/jev-1.13",
    "state": "用户消息:我改了密码还是登录不上,已经试了三台设备。附截图:错误码 ERR_921。",
    "questions": [
      {
        "type": "score",
        "question": "这条请求需要多强的推理能力?",
        "levels": ["简单", "常规", "复杂", "疑难"]
      },
      {
        "type": "choice",
        "question": "应该派给哪个处理方?",
        "options": ["轻量模型", "旗舰模型", "人工客服"]
      }
    ]
  }'

返回里拿 selected + confidence + 每个选项的概率分布,然后:

  • 「常规」以下 → 轻量模型(比如某个便宜的小模型);
  • 「复杂」→ 旗舰模型;
  • 「疑难」或 confidence 低于阈值(比如 0.7)→ 人工,不要硬猜。

这就是社区里热议的置信度分级路由(confidence-based routing):低置信度自动升级,而不是全量堆大模型。它成立的前提是决策层本身便宜且快——这正是 Jev 的定位(按输入计费、输出免费,70–500ms 量级返回)。

同样的模式也适用于 Agent 的动作路由:把 DOM 快照或工具调用结果作为 state,问「下一步该调用哪个工具」,替代「每个动作都让 GPT 想一遍」。

模式二:官方路由 typesafe/jev-router

如果场景是「我不想自己设计问题,就想让每条请求自动用上够用的最便宜模型」,OpenRouter 把这套东西做成了现成路由:typesafe/jev-router。

原理:Jev 读对话内容,判断任务类型、难度、强模型能带来多少收益,然后从你指定的候选池里挑满足要求的最低配模型;特别难的请求还会配一个「专家顾问」模型兜底。它走标准 Chat Completions 接口,兼容流式:

curl https://openrouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-OpenRouter-Metadata: enabled" \
  -d '{
    "model": "typesafe/jev-router",
    "messages": [
      { "role": "user", "content": "帮我把这段日志里的报错归类" }
    ]
  }'

响应的 model 字段会告诉你实际由哪个模型服务。带上 X-OpenRouter-Metadata: enabled 还能看到 resolved_models、list_fallback 等路由细节,方便排查。

控制候选池(可选的 jev-router 插件字段):

字段 作用
models / allowed_models 白名单,只有列表内的模型会被选中
excluded_models 黑名单,永远不会被选中,即使同时出现在白名单

三个工程语义要注意:

  • 白名单支持精确 slug、日期版本、anthropic/* 通配和 ~author/family-latest 别名,各列表上限 1024 条;
  • 白名单匹配不到任何模型时不会报错,路由器回退到默认池(metadata 里报 list_fallback: "models_ignored");
  • 黑名单永远生效——如果把池子全排除,请求直接 404。

两种模式怎么选

自己调 Jev 写路由 typesafe/jev-router
回答的问题 业务问题:进哪个队列、走哪个流程、下一步做什么 模型问题:这条请求用哪个模型
接入成本 要定义 state 和 questions,自己写分支 改一个 model 字符串,业务代码不动
控制粒度 完全自定义选项、阈值、兜底逻辑 白名单/黑名单 + 官方选型策略
典型场景 工单分流、意图识别、Agent 动作决策 给现有聊天应用、Agent 框架降本

两者可以叠加:业务层用 Decisions API 做确定性分流,模型层再交给 jev-router 自动降本。

算一笔账

以下全部是示意数字(实时价格以 OpenRouter 模型页为准),但算法是通用的。假设:旗舰模型 $3 / 1M 输入 token,轻量模型 $0.1 / 1M,Jev $0.042 / 1M;每条请求 500 token,每条路由决策 300 token,量 100 万条/月。

  • 全走旗舰:100 万 × 500 ÷ 1M × $3 = $1,500
  • jev-router 分流(70% 轻量 / 30% 旗舰):350M token × $0.1 + 150M × $3 = $35 + $450 = $485,再加 Jev 的路由判断 300M × $0.042 ≈ $12.6 → 约 $498
  • 降幅约 67%,而且这还没算输出 token 的差价——Jev 输出免费,大模型输出按 token 计费。

你的实际收益取决于「可被降级请求」的占比。客服、打标、格式化、简单问答类流量通常占比很高;而本身就难的任务(复杂推理、长文写作)路由层帮不了你——这正是要设置信度阈值的原因。

工程注意事项

  • 上下文上限 32k token(state + questions 合计)。超长对话先做摘要或截断再路由。
  • Jev 不解释答案。需要「为什么」的场景,让代码拿着结构化结果去调一个聊天模型补解释,或把低置信度样本转人工。
  • 版本策略:生产建议固定 typesafe/jev-1.13 保证行为可复现;想自动跟进新版本用 ~typesafe/jev-latest 别名。
  • 路由层也是故障点:给 Jev/jev-router 调用设超时与降级路径(超时 → 默认走你信任的模型),别让省钱层变成故障层。

延伸阅读