☰
Jev Cookbook 从0开始学Jev
2026/10/13 3:21:10 网站建设 项目流程

2026年10月,报名参加了Datawhale当月组队学习里的共学,从0开始入门、了解jev

【教程地址】https://github.com/datawhalechina/jev-cookbook

Day 1 环境配置以及快速上手

在第一章 认识Jev 中,我觉得解答了我之前对它的疑惑之处:当今llm大模型如此盛行,为什么 Jev 反而出现了,并且独树一帜?为什么它可行?

从前只是粗浅地阅读了几篇文章,知道它相比普通 llm ,输出的是结构化数值的概率来帮助进行判断,也全然不知它是如何运作,为什么许多人开始选择它。

这一章围绕这个问题对 Jev 展开介绍:当答案本来就在有限选项里时,是否有必要让模型先生成一段文字,再把文字解析回标签?

  1. Jev = System One 模型:输入是 state(证据/状态)+ 一组类型化问题,输出类型化答案 + 概率分布——没有文本生成,也没有解析这一步。模型负责读懂自然语言并给出那几个数,程序负责"拿数做决策"。
  2. 三种原语 choice、score、noul就是全部词汇:Choice 回答的是 哪一类? 输出选项 + 各选项概率;Score 回答 打几分 的问题,输出有序分值(概率的加权期望);Noul 回答 某个陈述有没有/是否为真, 输入 0~1 的概率。三种问题可在一次调用中并行混用,共享同一份 state,加问题几乎不增加延迟。
  3. 原子提问纪律:每个问题只问一件"专家几秒内能下结论"的事。复杂判断拆成多个独立问题,加权组合交给代码——业务规则变了只改代码系数,不用动提示词。
  4. 校准 ≠ 单次必对:Jev 用 RLCD(面向校准决策的强化学习)训练。给 0.8 概率的一组事件,长期发生频率应接近 80%,但组内单次仍可能错。因此概率适用于**群体决策**(路由、排序、抽检),高风险单点动作必须配阈值和人工兜底。
  5. 适用边界:适合有限答案空间的判断、分类、打分、路由、筛选、校验;不适合长篇写作、开放式问答与推理——这些仍应交给生成式模型;铁律:安全、授权类规则写在确定性代码里,模型给高概率也不能省掉人工的流程。

快速入门实验

环境:Python 3.10+,typesafe-sdk ,模型固定为 jev-1.13.0 ,key 通过环境变量TYPESAFE_API_KEY 注入(Notebook 支持 live / offline / auto 三种模式,没 key 时用离线替身跑通代码路径),我这里去注册了typesafe账号,用的自己的api_key

① 一次调用三种原语

EXP_STATE = ("用户:我连续三天没能把 Stripe 账户连上,集成一直失败," "每耽误一天都在丢订单,请尽快处理!") EXP_QUESTIONS = { "urgency": Noul(instructions="这条消息是否表达了紧迫性?"), "intent": Choice(instructions="用户的主要诉求是什么?", criteria={ "troubleshoot": "希望排查或修复连接问题", "refund": "要求退款或赔偿", "inquiry": "只是咨询,不要求立即处理"}), "frustration": Score(instructions="用户的受挫程度如何?", criteria=[ "平静,仅陈述事实", "有些不满", "强烈不满,有流失风险"]), } EXP_OFFLINE = { "urgency": _FakeAnswer("noul", noul=0.94), "intent": fake_choice({"troubleshoot": 0.82, "refund": 0.03, "inquiry": 0.15}, 0.8), "frustration": fake_score({0: 0.05, 1: 0.35, 2: 0.6}, ["平静", "有些不满", "强烈不满"], 0.87), } resp_a = ts.call(EXP_STATE, EXP_QUESTIONS, EXP_OFFLINE, "实验A·三原语一次调用") show(resp_a)

这是书中的一个实验,用离线模型模拟一条客服工单处理,当用户提出要求state:"连续三天连不上 Stripe,每天在丢订单……",在工程师这边会将同一次请求里捆绑三个问题——是否紧急(Noul)、主要诉求(Choice)、受挫程度(Score)。对此,实验模拟了真实返回:

urgency: noul = 0.98
intent: choice = "troubleshoot", p = 1.0
frustration: score = 1.99(0=平静,2=强烈不满)

返回的意思就就是,98%是紧急的,用户诉求希望排查或修复问题,几乎强烈不满。之后就可以对这份结果进行分类以及后续处理,比如if noul > 0.7 ,转人工~ 上述调用中,一次网络往返,耗时 0.28s ,输入 478 / 输出 78 token;三份答案相互独立。


② 20 条数据理解"校准"

RLHF把模型变成聊天机器人;RLVR造出会推理但更慢更贵的模型;RLCD(面向校准决策的强化学习)是 Jev 走的第三条路——训练模型返回决策和校准概率,而不是文本。用 RLCD训练的目标是让概率对齐真实频率:预测概率 0.2 的 10 条 → 实际发生 20%,组内仍有 8 次没发生;预测概率 0.8 的 10 条 → 实际发生 80%,组内仍有 2 次没发生。

校准的含义:按一组预测衡量。给 0.8 概率的事件,长期发生频率应接近 80%;校准是群体性质,它不保证任何单次预测正确。所以概率适合路由、排序、抽检这类群体决策,高风险单点必须配阈值 + 人工兜底。

③ 综合实验:赛事指挥台

在这里,书中模拟了三条夜跑赛事现场消息(跑者扭伤 / 补水站缺杯 / T 恤领取咨询),并且每条问三个捆绑问题:事件类型(Choice)、处理时效(Score)、是否需要人工到场(Noul)。由 Python 逐条调用并按阈值分流得到了以下结果。

  • runner_injury → 现场负责人 / 医疗人员(转人工)
  • water_station → 补给组(优先处理)(转人工)
  • shirt_pickup → 自动回复赛事 FAQ

三次调用耗时 0.28 / 0.26 / 0.34s。模型只用回答几个数,而后续的规则 "noul ≥ 0.7 就转人工"这条规则完全写在代码里,改阈值不用重跑模型、不用改提示词;像医疗类永远转人工这种不可妥协的规则,也必须留在确定性代码中。

所以回到我的疑问,为什么会有许多人选择 Jev 呢?

Jev 在有限选项的判断类任务上,它把答案做成了程序原生的契约化概率,是更适配代码的工程化选择:将规则留在代码里(易于维护),直接输出是字段与具体数字(免解析、省 token、低延迟),还自带可用于路由和抽检的不确定性度量。至于判断准不准,仍需在自己的业务数据上评测,更适配不同场景下的不同问题——它是工程师手里更趁手的"判断零件",与 llm 分工与使用范围并不相同。

总的来说,Jev 把 LLM 的语义理解能力压缩成了程序可直接消费的"概率化判断接口":模型管判断,代码管策略;问得原子、用得克制、高风险有兜底,是用好它的三个前提。

后续 Day 笔记直接在本贴持续更新~ 多多期待,感谢支持!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询