Datawhale Jev Cookbook 202610 笔记1
Datawhale Jev Cookbook 202610 笔记1第一章笔记认识 Jev课程Datawhale《jev-cookbook》第一章「认识 Jev」作业学完要能说清「有限选项判断」和「自由写文字」的区别完成一次多问题调用并用代码分流会判断任务适不适合 Jev能写出不泄露答案的 state并把模型输出交给代码策略处理。打比方想象你的班里有两个同学小明聊天大模型 LLM作文写得特别好你问他什么他都回你一大段话。但你想要的是一句要或不要他却写了一篇小作文你还得自己从里面找答案找错了就出事。小裁Jev裁判模型他不写作文他只当裁判。你把案发现场材料给他再递上一张出好的题目卷选择题、打分题、判断题他秒回你答案而且每个答案后面还跟着一个有多大把握的数字概率。Jev 就是这个裁判。它叫System One系统 1名字来自一本书《思考快与慢》系统 1 就是那种不假思索、凭直觉快速判断的脑力——看到蛇马上跳开不需要写一篇《论蛇的危险性》。1. 作业①说清 Jev 和聊天大模型的区别对比聊天大模型小明Jev小裁训练目标学会把话说得讨人喜欢学会把概率报得和真实结果对得上输出一大段自由文字你问什么他答什么选项 概率会干什么写作文、写代码、解释问题只做判断不写文章、不解释谁来用他人读他的话程序直接拿数字去做决定为什么要这么设计程序读不懂我觉得可能大概需要转人工吧这种话但一眼就能读懂0.93。Jev 把判断直接变成数字程序拿来就能用不用再从一大段话里猜答案——又慢又容易坏的那一步就没啦。两个小边界要记住Jev 目前只吃文字图片、声音、视频都不行。他不取代大模型写作文、开放聊天还是找小明要快、准、带概率的判断才找小裁。一条工单的两种走法课程里的例子工单「充电器冒烟刚买两天」 小明路线工单 提示词 → 生成一段话这可能涉及安全问题建议转人工…… → 程序还要从这段话里解析出结论 → 才能做动作 小裁路线工单 选择题{安全问题, 退款, 普通咨询} → 概率{安全问题: 0.93, 退款: 0.05, 普通咨询: 0.02} → 代码看一眼 0.93 超过红线 → 立刻转人工注意这组数字是课程里举的示意例子不是每次真实调用都会得到一模一样的数。2. 作业②认识三种原语——裁判的三种题型Jev 的全部词汇就是三种题型课程里叫三种原语原语像哪种题例子答案长什么样Choice选择题从选项里选一个“用户的主要诉求是什么A 排修 B 退款 C 咨询”选中项 每个选项的概率Score打分题按程度打分“用户有多生气0 平静 → 1 不满 → 2 非常不满”一个分数如 1.4 各档概率Noul判断题这话是真的吗“这条消息紧急吗”01 之间的一个数如 0.94最爽的一点一次考试可以同时发三种题三个题互相独立、并行批改加题目几乎不拖时间。这就是课程说的一次调用三种原语。关键纪律原子问题一题只问一件事好的题目专家看几秒就能下结论的事才配单独成题。反面例子“这个工单严重吗你们能自动处理吗”——一题塞了两件事答案就串味了。复杂的判断要拆成多道题最后在代码里用自己的规则合起来算。3. 作业③发出第一次调用三分钟上手最快的玩法是去官方 Playground 网页上直接试。简化版state我连续三天连不上 Stripe一直在丢订单尽快处理questions{urgency:Noul(instructions这条消息紧急吗),# 判断题intent:Choice(instructions用户主要想要什么,# 选择题criteria{troubleshoot:修好它,refund:退款赔钱,inquiry:只是问问}),frustration:Score(instructions用户有多受挫,# 打分题criteria[平静,有些不满,强烈不满]),}respclient.system_one(state,questions)# 一次调用三份带概率的答案state 是什么就是把案发现场原样递给裁判的证据材料。用户的话、订单信息、聊天记录……都塞进去。裁判只根据证据答题所以材料要给够、要真实。重要规矩state 里不许提前泄露答案。如果你把这是一个愤怒客户的紧急投诉写进 state再问紧急吗——那裁判就不是在判题是在抄答案了概率也就没意义了。写 state 的口诀给证据不给结论。由于没有免费额度改为离线版。浏览器打开 Notebook从上往下 ShiftEnter 逐格运行。在这里插入图片描述进阶玩法把赛事指挥台那格的 0.7改成 0.1再重跑看看哪些消息会被转人工改成0.1后改之前阈值 0.7water_station → 补给组优先处理改之后阈值 0.1water_station → 补给组优先处理**转人工**← 多了这四个字补水站那条消息模型给的「需要人工」概率是 0.22旧规则 0.22 0.7 不转人工把代码里的阈值降到 0.1 后0.22 ≥ 0.1 就转了。模型一次都没重新调用决策行为却变了——因为规则在代码里改代码就行。 这就是「模型管语义代码管规则」的亲手体验。4. 作业④判断什么活儿适合交给 Jev场景地图五大类适合的活儿软件里的自动判断代码管流程Jev 出判断后台可以跑上百万次不用人盯。实时应用大约 0.15 秒出答案快到能进游戏和界面。海量批量判断同一个判断跑一百万次成本约是大模型调用的百分之一。万能校验员查大模型有没有胡说幻觉、引用能不能支撑结论、有没有违规话术。给大模型当管家决定哪条请求发给哪个模型拦住坏人捣乱。七种常见问法都能落到三种题型上是哪一类意图、主题、风险→ Choice有没有垃圾、欺诈、紧急、敏感→ Noul打几分严重度、相关性、质量→ Score该走哪条路派给谁、转不转人工→ Choice 代码分支找最相关的搜索排序→ 组合使用核对有没有错逐条校验→ Noul抽个特征回填表单→ Score / Choice不适合交给 Jev 的写作文、开放问答、创作——这些还是大模型的活儿。Jev 常在前面先把该走哪条路快速定下来。还有一条铁律法务、理赔、开除员工这种高风险终审最多让 Jev 当参谋拍板的必须是人“不确定就转人工”。一句话判断法答案是不是已经有一小盒选项了是 → 适合 Jev答案要现编一大段话 → 找大模型。5. 作业⑤概率为什么可信——天气预报的道理Jev 训练时走了一条特别的路课程叫 RLCD别的模型练习把话说好听它练习把概率报准。什么叫报准校准想天气预报预报80% 下雨的那些日子里长期看大约 80% 的日子真下了雨 → 这预报就校准。它不保证今天一定下雨单看某一天预报 80% 也可能放晴。课程用 20 条数据做了个小实验预测 0.2 那组实际发生了 10%预测 0.8 那组实际发生了 80%——两组整体都准但组里单独某一条仍然会错。所以正确的用法是用概率做一群东西的决定排序、分流、抽检看整体频率。单次高风险动作设阈值比如 ≥0.7 就转人工 人工复核。记住两句咒语校准好 ≠ 次次对置信度高 ≠ 一定对。顺便记个价格输入约 $0.042 / 百万 token输出免费一次判断几百毫秒——便宜到可以投机式多问拿不准用不用得上的问题也可以一并塞进同一次调用里问。6. 综合实验赛事指挥台把上面全部串起来一场夜跑比赛指挥台同时收到三条现场消息“2.4 公里处有跑者脚踝扭伤无法前进”受伤“7 号补水站纸杯用完了请补送两箱”补给“完赛 T 恤明天早上还能领吗”咨询做法每条消息发一次调用同时问三道题——哪类事件Choice医疗 / 补给 / 咨询多快处理Score可赛后 / 30 分钟内 / 10 分钟内 / 立即需要人工到场吗Noul然后 Python 代码按规则分流这就是代码策略tr.choices[incident_type].choice# 模型给的类型humanr.nouls[requires_human].noul0.7# 阈值是应用自己定的政策print(ROUTES[t],转人工ifhumanelse)结果受伤消息 → 医疗人员转人工缺纸杯 → 补给组T 恤问题 → 自动回 FAQ。这一实验最重要的一句话模型管语义代码管规则。≥0.7 转人工这条规则完全写在代码里——想改阈值改代码就行不用重问模型、不用改提示词。不可妥协的规则比如医疗类永远转人工更要写死在代码里。7. 本章自带的练习先自己做再看答案题目把该不该给这条工单升级到人工设计成一个合格的问题。该用哪种原语哪种写法违反了原子性参考思路课程给的升级到人工其实混了两个判断① 问题严不严重可以用 Score 或 Noul② 当前自动流程能不能处理另一个 Noul 或 Choice。合格写法是拆成两个独立问题最后让代码把它们组合起来。如果一个 Noul 同时问两件事任何一个因素变了都会污染概率答案就不可信了。8. 表格概念一句话小学生版System One / Jev状态 出好的题 → 带概率的答案不写作文三原语Choice 选一选、Score 打个分、Noul 判断真假原子问题一题只问一件事组合的事交给代码state给裁判看证据但不许把答案写进证据校准预报 80% 的日子里约 80% 真下雨但今天未必下雨分工模型管判断代码管规则高风险的事人拍板10. 动手作业课程强烈建议亲手改、亲手跑改着玩把工单从充电器冒烟改成想问发票怎么开看概率怎么挪。改动前修改如下EXP_STATE(用户想问一下发票怎么开)EXP_QUESTIONS{urgency:Noul(instructions这条消息是否表达了紧迫性),intent:Choice(instructions用户的主要诉求是什么,criteria{troubleshoot:希望排查或修复连接问题,refund:要求退款或赔偿,inquiry:只是咨询不要求立即处理}),frustration:Score(instructions用户的受挫程度如何,criteria[平静仅陈述事实,有些不满,强烈不满有流失风险]),}EXP_OFFLINE{urgency:_FakeAnswer(noul,noul0.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_ats.call(EXP_STATE,EXP_QUESTIONS,EXP_OFFLINE,实验A·三原语一次调用)show(resp_a)输出在离线模式下 概率数字是代码里写死的人工示例改什么文字它都不会动 —— intent 还是troubleshoot、概率还是 0.82一模一样。这不是改错了是离线模式的设计本意只演示代码路径不反映真模型反应。把urgency的问题措辞改三遍看答案稳不稳。方法将下面代码修改urgency:Noul(instructions这条消息是否表达了紧迫性),1这条消息紧急吗2用户是不是在催我们加急处理3这条消息是不是十万火急离线模式下你会看到 三遍全是 0.94纹丝不动 ——和上次一样因为答案是写死的假数据。所以「答案稳不稳」这个问题离线模式下测不出来它的「稳」是假稳。在指挥台实验里把 0.7 的阈值改成 0.5看哪些消息会被转人工。三次实验结果对比模型给的概率固定0.93 / 0.22 / 0.04消息需要人工的概率阈值 0.7原版阈值 0.5刚跑的阈值 0.1上次runner_injury 受伤0.93转人工转人工转人工water_station 缺纸杯0.22不转不转转人工shirt_pickup T恤咨询0.04不转不转不转读表判断规则就一条概率 ≥ 阈值 → 转人工。阈值是一道门槛0.5 和 0.7 结果相同——因为 0.5 和 0.7 都落在 0.22 到 0.93 这段「空档」里没有概率值恰好夹在中间所以转人工的人一样多0.1 独不一样——门槛降到 0.22 之下water_station0.22刚好迈过了门槛被拦去人工背后的工程含义阈值是「灵敏度旋钮」调低0.1→ 更多消息转人工 → 保守、稳妥但人工成本高调高0.9→ 更少转人工 → 激进、省钱但容易漏掉真问题而且改这个旋钮只需要改代码里的一个数字模型一次都不用重新调用、提示词一个字都不用动——这就是「模型管语义代码管规则」的全部含义。