最后更新:2026-11-02 · 编辑撰写

Jev 与 Function Calling:决策层选型对比

Function Calling 已经能给你结构化输出了——为什么还要一个专用决策模型?诚实的回答:对大多数有界决策,Function Calling 能用;Jev 只是把同样的活干得便宜 20–400 倍、快 20–200 倍,而且带可执行的校准置信度。这是否重要,完全取决于你的量。

30 秒回顾

Function Calling(FC):描述一个工具 schema,对话式 LLM 决定是否「调用」及参数。结构化输出,但由一个为生成文本而训练的模型逐 token 产生。Jev:发送 State 和类型化问题,用 RLCD 训练的模型一次返回你的选项之一、量表位置或真/假概率——带置信度估计。永远不生成文本。

对比表

JevFunction Calling(中档 LLM)
单次决策成本~$0.0001(仅输入)$0.001–0.01+(输入+输出)
延迟70–500 ms典型 2–8 s
无效输出率0%(架构级 schema)实测约 0.6–45%,靠重试缓解
校准置信度原生(RLCD 训练)无——最好有 logprobs,最差凭感觉
还能生成文本永远不能能——同一调用可以解释
复杂嵌套 schema有界(choice/score/noul)任意 JSON
大上下文判断64K State128K–1M+

费率来自渠道商列表(2026,见价格追踪);延迟与错误率为厂商自报或社区实测,均已标注。

真正重要的差异:校准

两层都能返回 {"category": "billing"}。差距在它周围的东西。FC 给你一个解析结果;置信度要靠 logprobs 或模型自报,两者都没经过「必须有意义」的训练。Jev 的置信度就是训练目标——这正是阈值策略(0.75 以上自动路由,以下升级)能成为可靠工程而非玄学的原因。如果你的工作流需要阈值,这就是全部论据。

Function Calling 仍然赢的场景

Jev 直接赢的场景

一个生产可用的混合方案

# Jev 给昂贵调用当门卫
verdict = jev(state, questions={
    "needs_llm": {"type": "noul",
                  "statement": "This request needs generated text or open reasoning."},
    "topic":     {"type": "choice", "options": ["faq", "account", "bug", "other"]},
})

if verdict["needs_llm"]["confidence"] < 0.6 or verdict["needs_llm"]["value"]:
    reply = llm_with_function_calling(state)   # 2–8 秒,$$$——只在必要时
else:
    reply = deterministic_handler[verdict["topic"]["value"]]

大多数请求永远到不了 LLM;到达的那些已被预分类。这与 LangChain 官方指南的定位一致:互补,不是替代。

把分类器从 FC 迁到 Jev

  1. 映射枚举:FC 的工具名/选项原样变成 Jev 的 choice options。
  2. 回放 100–500 个标注案例跑两层,对比准确率和校准度(Jev 概率 vs 你的 FC 置信代理)。
  3. 移植阈值:按你接受错误率调 Jev 的置信截断——见检查清单。
  4. 长尾留给 FC:Jev 低置信的请求落回现有路径。第一天不需要拆任何东西。

一句话结论:FC 是能干的全才;Jev 是在「做决定」这一件事上更便宜、更快、带校准的专家。用成本计算器按你的量算一下,再到场景手册找回本最快的第一个工作流。