JEV - 是非、单选、档位,够不够当一门语言
Noul、Choice、Score 是一门给代码用的语言。这篇用报销单说明三种题怎么拆开,以及什么时候这门语言不够用。
联合作者:folkbench.com (Folkbench 是面向 AI API、模型服务及相关站点的可复核评测与选择平台,依据已发布的服务资料、价格、可用性、延迟与证据窗口,帮助用户比较并选择使用路径。)
这一组共十篇:
- JEV - 关节不需要大脑
- JEV - 不会聊天的 Jev,为什么反而适合 Agent
- JEV - “不能幻觉”说到哪一层
- JEV - 是非、单选、档位,够不够当一门语言
- JEV - 大厂做得出,为什么未必会做
- JEV - 我跑的两个 demo
- JEV - 人从环的中间退到边缘
- JEV - 过了那条线,我已经分不出谁更聪明
- JEV - 有些话不该问它
- JEV - 大道至简、套件,还有一个不说话的
这门语言够不够,就看你要它说什么。封闭的三种题,换来速度,也换来可组合。代价是需要展开的话,它说不了。这是一门给代码用的语言。不是给人读的。
文档和评测站的分法一样,都是 Noul、Choice、Score 这三种。页面上没有第四种。
文档里的三种
Noul 只问是或否。返回概率。文档里这个数从 0 到 1。这个概率靠近 1,就是很有把握的肯定,靠近 0,就是很有把握的否定。它要是停在 0.5 附近,只说明两边一样可能,不是“程度中等”。文档里写过这个坑:拿它去问一个人 Python 强不强,0.5 不是水平中等。你真要量水平,就得换 Score,把每一档写成什么样。Noul 也不另给置信度。概率本身就是信号。
Choice 从定好的集合里选一个。回来的是选中项,另外带上整份分布和一个置信度。置信度看的是分布尖不尖。概率要是摊开,置信度就低,代码就知道这一题不稳。Jev 这道题的基数上限是 255。基数再高,Jev 就走两段式。两段式是先独立打分,再做一次显式选择。有时会慢一下。慢,是因为多了一步,不是同一道窄题忽然变贵。
Score 是尺度上的档位。使用上就是 2 到 10 档的有序刻度。文档写的是至少两档,接口最多接受十档。档要写成能对上的情形。只写“偏高”或者“还行”,模型没有东西可对。分数可以落在两档中间。这个数是各档位置乘上概率之后加总。两档之间的小数很正常,不是算坏了。返回分数,同时给出档位上的分布和置信度。同一个分数,可能是全押在中间档,也可能是两头对半。只看分数,你会看成同一回事。分布和置信度要一起读。
三种答案都出不了你事先给的格子。同一份材料上的题彼此独立。加一道或者拿掉一道,其他题的结果都不变。判断要是靠好几件事合起来,你就拆开问,权重留在代码里。以后你要调政策,改的是这些数,不是重写一整段 prompt。
报销单被拆开的样子
官方评测页拿报销单举过一个玩具。左边是人写的一段话,就是团队会记下来的那种政策。每张单都得带收据。收据读不了,就让员工再交一张。然后看这笔是餐、差旅还是设备。餐费超过 75 美元,而且描述对不上收据,要主管签。其余的单子按通过处理。
右边是同一段话拆成的流程。每一句政策,一道题,或者一条代码规则。收据读不读得了是一道是非。读不了的话,代码就去要一张新的,这一步不再问模型。类别那边用单选,选项就是餐、差旅或者设备。金额过不过 75 美元,由代码自己比。只有描述对不上收据的那半句,才需要再问模型一次。它和金额合在一起,决定主管签不签。用不着主管签的那些,代码就按通过处理。模型不在这儿写批语。
评测页上的方向就一句:结构总是比一个大 prompt 好。四条示例流程平均下来,每个模型走 workflow,准确率比整段政策更高,花费和耗时则更低。prompt 那一头,是把整段政策交出去,让模型在一条回答里把逻辑走完。workflow 这一头,能写成规则的交给代码,只把窄的判断留成题。
最稳的真实流程通常不是一道大题。它是很多互相独立的窄问题。行为取决于概率,而不只是一个离散标签。类别看上去已经定了,别的选项却还占着一块概率。代码按你写的阈值再走一条就行,不必把分布扔掉。流程走到外面,仍是一个分支。中间那一层是领域工程。哪道题这次用不上,哪个数算过线,都得按这个业务写下来,而且每次都按同一套跑。窄问题的答案进了代码,权重和阈值才在这一层定下来。
不生成字符串之后
Jev 放弃字符串生成,换的是并行采样。一次请求里的题会一起算。所有输出一次出来。不逐 token。聊天模型要一个 token 接一个 token 往下长,后一个看着前一个。这边没有这个逐字的步骤。普通的窄题再加几道,时间几乎不跟着涨。多出来的开销主要是问题本身那点 token。
官方定价跟聊天接口不是一回事。输入是 $0.042 / 百万 token。输出是 FREE。没有一长串按 token 生成的字,输出就不计费。延迟落在 70–500 毫秒。这个区间是给调用链用的,不是给对话框里的等待用的。
返回值直接给代码用。Noul 的概率可以直接进 if。路由用 Choice 的标签,打分阈值用 Score 的位置。不用先解析。聊天模型要是交回一篇 Markdown,你得先把字拆开,多出来的一句还可能把格式带歪,后面就接不上。三种题不交回那段文字,因为 Jev 不生成它。
解释为什么拒掉这张单,三种题装不下,道歉和谈判也一样。写一段给人看的理由,返回值里也没有那段话。那些交给会说话的模型去写。Jev 停在判断上。
不够用的时候也很具体。选项要是开放世界里的名字,公司名和商品名都会不断冒出来,集合事先定不住。255 只是基数上限,不是无限名单。理由必须引用原文句子的时候,这边没有那句话可交。用户在等一句人话的时候,界面要的是能读的字。这时候硬用 Jev,是把关节当成了嘴。
政策能收成是非、单选和档位的时候,后头就是分支,判断再拼回同一段代码。你要的如果是速度,还有这种可组合,它够用。需要展开的话,它说不了。速度和可组合,就是用这件事换来的。
参考资料
- https://typesafe.ai/blog/introducing-system-one-models-and-jev
- https://evals.typesafe.ai/
- https://docs.typesafe.ai/primitives
系列
- 上一篇:JEV - “不能幻觉”说到哪一层
- 下一篇:JEV - 大厂做得出,为什么未必会做