结论先放前面:我用一个发布才 8 天、不会生成任何文字的模型,替掉了量化管线里的 新闻情绪打分。13,657 条新闻标题同题对打,和 MiniMax-M3 的 Pearson 相关 0.92, 日截面 rankIC 持平略优,全轮账单 $0.0705(188 万 input tokens)。原来这活儿 能把 MiniMax 的 5 小时配额窗口打满,现在配额全还给视觉链。
这篇记录完整的决策过程、A/B 方法论和工程细节,给同样在管线里塞了 LLM 的人一个参考。
Jev 是什么:不写小作文的”系统一”模型
Jev 是 TypeSafe AI 在 2026-09-15 发布的模型,创始人 Diogo Almeida 是 OpenAI InstructGPT/RLHF 的作者之一。名字取自经济学家 Jevons—— 杰文斯悖论:决策成本每降一个数量级,需求就爆炸。
它和 LLM 的根本区别在输出。LLM 逐 token 生成一段话,你再解析 JSON、防幻觉、 防跑题;Jev 没有自由文本输出——你给它一个状态(state,文本或 JSON)+ 一组 类型化问题,它返回带校准概率的类型化答案:
| 原语 | 问题形态 | 返回 |
|---|---|---|
| choice | 从 ≤255 个选项里选 1 | 选中项 + 全选项概率分布 + 置信度 |
| score | 按 2~10 级文字量表打分 | 概率加权分(可落档间,如 1.4) |
| noul | 是非题 | P(yes) ∈ [0,1] |
官方数字:延迟 70500ms,输入 $0.042/M tokens、输出免费,比前沿 LLM 快
20200 倍、便宜 40~400 倍。格式错误”构造上为零”——没有文本,就没有解析失败。
置信度用 RLCD 训练校准:说 70% 把握时,大约真有 70% 正确率。
直觉上它是卡尼曼意义上的”系统一”:快、直觉、只做判断不解释。LLM 是”系统二”。
我的场景:新闻情绪因子的配额之痛
我的 A 股量化管线里有一个社交媒体因子层,每天对几十个标的的新闻标题做情绪打分,
score ∈ [-1,1],聚合成逐标的的日频因子。这个活一直是 MiniMax-M3 干的——用
tool-call 强约束吐结构化 JSON,批量 15 条一次,sqlite 缓存按
hash(title+date) 去重。
痛点很具体:打分是判别式任务,却租了一个生成式模型来干。MiniMax 的 5 小时 滚动配额窗口,被每日打分吃得七七八八,有一天打满 100%,sentiment 因子被迫降级成 零 LLM 重建。配额还得留给视觉多智能体链(看 K 线图做决策)——那才是真正需要 生成式模型的地方。
看到 Jev 的三个原语,score 简直就是给这个场景定制的。
先花一分钟做个便宜探针
接 API 之前,先拿 5 条手工构造的中文财经标题试试方向感:
| 标题 | score(0~4) | 置信 | 预期 |
|---|---|---|---|
| 半年报净利 +18% 超预期 | 3.5 | 0.58 | 偏多 ✓ |
| 涉嫌信披违规被立案调查 | 0.0 | 0.98 | 利空 ✓ |
| 央行降准 0.5pct | 3.9 | 0.87 | 偏多 ✓ |
| 业绩预告全年亏损扩大 | 0.1 | 0.96 | 偏空 ✓ |
| 召开临时股东大会通知 | 2.0 | 0.99 | 中性 ✓ |
5/5 方向全对。更值得注意的是置信度:清晰的立案调查给 0.98,温和的”超预期”只有 0.58,中性公告精确落在 2.0 不乱动——校准是真能感觉到的东西,不是营销话术。 这才敢进正经 A/B。
正经 A/B:一致性只是入场券,IC 才是裁判
方法:把 MiniMax 历史真实打过的 13,657 条标题(88 个标的,2026-02 以来, 手机端每日续打的缓存)原样喂给 Jev,同一条标题、同一个哈希键,两模型逐条对齐。
两个层面的指标:
条目级(两模型说的是不是一回事):方向一致率 88.8%(±0.15 死区口径), Pearson 0.923,Spearman 0.896,平均绝对差 0.156。分布几乎同形 (+0.28±0.50 vs +0.30±0.56)。
因子级(谁有预测力)——把两边各自聚合成和生产线完全同口径的日频因子 (置信度加权 + 次交易日对齐 + 5 日平滑,严格遵守”T 日收盘后产生、T+1 可用”), 然后算逐日截面 Spearman rankIC(因子值 vs 次日收盘收益,≥8 标的/日):
| 后端 | IC 均值 | ICIR | t 值 |
|---|---|---|---|
| MiniMax-M3 | +0.0218 | +0.121 | +1.36 |
| Jev | +0.0272 | +0.148 | +1.67 |
127 个交易日,两因子逐日 IC 相关 0.945——信息高度同源。
诚实地说:t 值 1.4~1.7 都不显著,这是”平替成立”,不是”发现新 alpha”。单靠 新闻情绪因子本来也别指望扛起组合。决策逻辑是:信号没丢(0.92 相关)、成本降两个 数量级(这轮全量重打 908 批请求,实际账单 $0.0705 / 188 万 input tokens, 每千条新闻约半美分)、还解放了配额——三项全占,切。
工程细节:三个可复用的点
1. 批量技巧:一个 state + N 个并行问题。 Jev 每个请求的所有问题共享同一个 state、彼此独立并行求值。这刚好匹配”一批标题 各打各的分”的形态——把 15 条标题编上号塞进 state,一次问 15 个 score 问题:
state = "以下是一批A股相关新闻标题, 按序号排列:\n" + \
"\n".join(f"{j}. {t}" for j, t in enumerate(titles))
questions = {
f"s{j}": q_score(f"第 {j} 条标题对相关股票的情绪倾向",
["明显利空", "偏空", "中性", "偏多", "明显利好"])
for j in range(len(titles))
}
answers = ask(state, questions) # 一次 HTTP, 15 个分并行返回
量表 5 级线性映射到 -1,1,概率加权后是连续值,和 MiniMax 的 连续分同域。13,657 条 ÷ 15 = 908 次请求,十几分钟跑完。
2. 缓存按 (hash, provider) 复合主键存,是多模型并存的关键。
打分缓存的设计里,同一个标题在不同 provider 下各存一份。这意味着 A/B 时 Jev 的分
写进同一张表( provider='jev'),和历史 MiniMax 的分并存、互不污染;A/B 通过后
切换后端零回填——13,657 条 jev 打分已经在缓存里了,生产直接开始命中。
如果当初缓存是单主键,今天就得再想别的办法。
3. 切换前看清 provider 参数管着几条链路。
我的同步脚本里 --provider 一个参数同时控制事件标注和情绪打分的读取口径
(按 provider 过滤防多后端双计)。如果无脑 --provider jev,事件因子会去读
provider='jev' 的标注缓存——里面是空的,事件因子会静默清零。正确做法是拆出
--sentiment-provider:打分切 jev,事件标注继续读 minimax 的存量,各走各的缓存。
一个参数管多条链路时,“切换”永远要先画数据流。
什么活适合交给它
适合:判别式、高频、答案集合已知的活——打分、分类、路由、守门、是非判断。 这类任务用 LLM 干,本质上是为了一个标签生成几百个 token 的推理和解释,纯浪费。
不适合:任何需要生成的活。Jev 纯文本输入(看不了图,视觉链没法用)、没有 世界知识(只认识你喂给它的 state,A 股代码、板块常识都得自己拼进上下文)、 不解释推理过程。开放推理、写作、规划仍然是系统二的地盘。
两个保留意见:一是厂商基准(快 200 倍、便宜 400 倍)没有第三方复现,按官方口径 打七折听;二是模型发布才一周多,还在 early access,长期质量、价格、服务稳定性 都是未知数——这也是我把缓存和切换成本压到接近零的原因:后端随时可以切回去。
尾声
切换后第一晚自动运行顺利。MiniMax 的配额从此只养视觉链和事件标注,情绪因子 可以从二十几个标的扩到全池——几千条新闻一天也就几分钱。下一个候选是把 RSS 事件标注(重要性打分 + 板块归类 + 是非判断,三原语全家桶)也做一轮同样的 A/B。
Jev 官方管自己叫”smart if-statement”。用下来我觉得这个定位是准的:它不替你思考,
但软件里那些本该是 if 的判断,终于不用再租一个会写作文的模型来当了。