AnyJev是诺基亚应用研究团队开源的Python库,无需微调即可将任意开源LLM用于固定选项的决策任务(如分类、排序),基于概率校准提升决策可靠性,Apache-2.0协议,可直接从PyPI安装。
Nokia 的应用研究团队开源了 AnyJev,这是一个 Python 库,可以在无需训练的情况下将任意开源 LLM 转化为决策模型。它瞄准的是一类常见的产品场景:从固定选项中挑选一个答案,而不是生成一段话。
它可以部署吗?可以,从 PyPI 安装,基于 Apache-2.0 开源,提供 transformers 和 vLLM 后端,支持共享前缀打分。
AnyJev 的接口设计借鉴了 Jev。Jev 是 TypeSafe AI 于 2026 年 9 月推出的 System One 决策模型(我们的报道)。向 AnyJev 传入一个带类型的提问,会返回一个附带了概率的决策结果,概率可以设阈值。这个概率直接取自模型的下一个 token 分布。不生成内容、不解析文本、不做任何训练。
该库支持 3 种提问类型:
Choice question:从 K 个选项中选出一个。
Noul question:二选一(是/否)。
Score question:将答案归入若干有序区间之一。
许多开源项目已经在用这种方式:把选项标签限制为下一个 token,然后读取分数。Nokia 研究团队指出了这一捷径的两个缺陷。其一,选项顺序变化时,答案可能改变。其二,概率没有经过校准。
levels 文档指出了两个成因:
第一个是先验偏差:模型天然偏好某些标签,例如无论输入如何都更倾向"Yes"而非"No"。
第二个是位置偏差:模型天然偏好选项列表中的某些槽位。
每个决策都带有一个 level 字段。
L0(零标签,默认开启) 应用了两项修复:
循环移位。对于有 K 个选项的提问,列表会以 K 种轮转方式各展示一次,这样每个选项都会出现在每个位置上一次。结果在 log 空间以几何平均数合并。如果位置偏差在 logit 空间是加性的,这可以将它精确消除。
先验修正。默认情况下,AnyJev 使用批量校准。它在真实输入上维护一个预测分布的滑动均值,然后在强度 0.75 下将其除掉。修正从第 8 个样本开始生效。
L0 每个决策需要 K 次 prefill,通过共享前缀批量化。在单卡 H100、batch=32、K=20 的条件下,每次决策约耗时 0.25 秒。
L1(每个问题 100 到 500 个标签) 在 L0 基础上增加了温度缩放。拟合值保存为一个小 JSON 产物。L1 改变置信度的形态,但不会改变答案的排序。
在 Qwen3-8B 配合 BANKING77(20 选一、300 条测试样本)上,数字如下:
| Metric | Raw logits | AnyJev L0 | AnyJev L1 |
|---|---|---|---|
| Labels required | 0 | 0 | 100 to 500 |
| Flip rate when options reversed | 0.230 | 0.073 | 0.077 |
| Accuracy | 0.747 | 0.803 | 0.807 |
| Calibration error (ECE) | 0.240 | 0.184 | 0.095 |
| Auto-decidable at 5% error | 7.7% | 46.3% | 52.0% |
仓库中还有几个其他结果:
L0 在全部 9 个模型和任务组合的测试中,都降低了顺序翻转率。
在一个 typed-decisions 数据集上,Qwen3-32B 配合 L1 达到了 0.036 的 ECE,而 Jev 公布的数字是 0.144。在准确率上,微调后的 Laya 仍然领先。
完整的消融实验表覆盖了 Qwen、OLMo、Granite、Phi 和 Mistral 模型。
Wu 表示,团队在一个内部 Nokia 路由问题上试用了 AnyJev,看到了不错的结果。
# pip install "anyjev[hf]"
from anyjev import Decider, Question
from anyjev.backends.hf import HFBackend
d = Decider(HFBackend("Qwen/Qwen3-8B"))
route = Question.choice("Which team should handle this?",
["billing", "technical", "sales", "other"], name="route")
r = d.decide({"conversation": [...]}, [route])
r["route"].distribution # probabilities per option
在服务侧,用 prefix caching 启动 vLLM,然后将 VLLMBackend 指向它即可。
AnyJev 将开源 LLM 转化为 Jev 风格的带类型决策模型,无需任何训练。
L0 使用循环移位和批量先验消除位置偏差和标签偏差。
在 Qwen3-8B BANKING77 上,选项翻转率从 0.230 降至 0.073。
L1 在 5% 误差下可自动决策的流量从 7.7% 提升至 52.0%。
已在 PyPI 上以 Apache-2.0 开源,提供 Hugging Face 和 vLLM 后端。