OWL Compose

打开完整作品

OWL Compose 官方作品 · v10 ·

Jev 是什么?从一条退款消息看起

Jev 是 TypeSafe 开发的 AI 模型。你把资料和一个具体问题交给它,它会返回选择、评分或概率,供程序使用。

开始创作

通过订阅创建、发布和更新你自己的文档。

作品摘要与数据

JEV / TYPESAFE AI / 入门解释

Jev 是什么?从一条退款消息看起

Jev 是 TypeSafe 开发的 AI 模型。你把资料和一个具体问题交给它,它会返回选择、评分或概率,供程序使用。

比如,客服系统可以用它判断一条消息该交给哪个团队。下面用一条退款消息,看看要给它什么、会得到什么,以及程序怎样使用结果。

官方定义 ↗

从客户消息到账单队列

教学示意,并非实际 API 调用结果。

Jev 判断消息的类别。核对支付记录、处理退款由应用程序完成。

发给它客户的消息

“同一笔订单扣了两次钱,请把多扣的退回来。”通过 API 发给它这条消息和相关订单资料。文档把这些输入叫作 state,也就是供模型判断的材料。

写明问题和选项

问它:“这条消息该由哪个团队处理?”给出四个选项:账单、技术支持、账号支持、其他,并说明各自负责什么。

拿到分类结果

这个例子预期选中“账单”。Choice 的返回值还包括所有选项的概率,以及 confidence,程序可以据此判断某一类是否明显胜出。

分派消息,再核对扣款

把消息送到财务队列。接下来的财务流程查询支付记录、核对重复扣款、计算退款金额。类别不明确的消息可以交给人工处理。

三种问题类型 ↗

官方路由模式 ↗

和已有办法有什么区别?

规则

条件可以精确描述时,直接写规则。例如,订单是否有两笔已完成的扣款,可以查询支付记录。理解客户的话,是另一个问题。

文本分类器

文本分类器已经能把消息分到不同类别。Jev 允许在每次请求中描述类别,适合候选项随页面、任务或用户变化的情况。

LLM 结构化输出

支持结构化输出的大语言模型也能返回符合 JSON 格式的类别,同一流程还需要生成文字时尤其方便。Jev 直接返回选项、分数和概率,供程序判断下一步怎么走。

Jev 适合放在哪里

使用 Jev 时,你提供材料、问题和选项,拿回可供代码使用的值及概率分布。如果应用频繁进行这类小范围判断,就值得拿真实样本试一试。

LLM 结构化输出:Claude 官方文档示例 ↗

三种返回值怎么用

Choice · 选哪一个

“这张工单该进哪个队列?”

写出一组互斥选项,返回一个选项和完整概率分布。保留“其他/不明确”,给候选之外的情况留出口。

Score · 处在哪一级

“这个故障影响多大?”

用具体描述定义有序等级,如外观瑕疵、可绕过的故障、完全阻断。分数是等级索引的概率加权平均,可落在两级之间。

Noul · 是否成立

“消息明确要求退款吗?”

返回 0 到 1 的“是”概率,没有单独的 confidence。接近 0.5 表示两种答案接近;它不代表“退款诉求中等”。

问法决定了要判断什么

“穿着不太合适,有什么处理办法?”表达了不满意,但还没有选定处理方式。“客户是否不满意”和“客户是否明确要求退款”是两个问题。把这个区别写进问题里,模型才知道你要判断什么。TypeSafe 在 Jev 1.13 的说明中也用了这类例子。

Choice 接口 ↗ Score 接口 ↗ Noul 接口 ↗

TypeSafe 的问法示例 ↗

检索时,多问一句“有答案吗”

程序先为原文段落编号。Choice 从候选中找最相关的一段;同时用 Noul 判断材料里是否真的有答案。代码组合两项结果,决定显示原文还是提示补资料。

这个附加判断很关键:即使所有段落都不相关,Choice 的分布里也会有第一名。排名靠前只能说明相对关系。

如结果含糊,可补充检索再判断;无需强行从现有候选中给用户一个答案。

官方逐行检索示例 ↗

浏览器 Agent 从当前页面生成选项

做什么,操作哪个元素?

browser-use/jev-ultrafast 把当前页面整理成一组可选动作。代码读取页面元素,列出此刻能做的操作和对应目标。页面变化,候选项也跟着变化。

把条件问题一起问

同一次请求既问选哪种操作,也分别问每种操作应该选哪个目标:如果点击,点哪里;如果输入,填哪里。代码取出被选中的操作及其对应目标,其余目标答案不执行。

执行后,再看下一步

浏览器执行动作,再读取页面的新状态。需要填写新文字时,由一个小语言模型生成内容。页面提供可操作目标,Jev 从中选择,浏览器执行;这几个部分由代码串起来。

查看浏览器 Agent 的选择逻辑 ↗

把有用的历史记录留下来

选择哪些记录进入下一轮

Tamara Tran 的 fast-jev-compaction 换了一个角度处理过长的 Agent 对话:让模型判断旧的工具调用和结果中,哪些对当前任务还有用,然后筛选保留。

每次工具调用,问两个问题

要不要保留这次调用?要不要保留它的结果?代码根据两个概率决定:完整保留调用和结果、保留调用并截短结果,或删除这一对记录。最近的调用由代码固定保留,留下来的文字沿用原文。

先给筛选器一份精简视图

筛选器看到对话文字和工具输入,旧工具输出先变成简短状态说明,整体输入还会按预算截取。被删掉的细节不再进入下一轮上下文。这个项目的启发在于,把“写一份摘要”变成了“挑出还需要的记录”。

查看 fast-jev-compaction ↗

用同一个问题检查 Agent 的执行记录

一个重复评估实验

在 LangChain 发布的一项实验中,Daniel Shea 和 Sean Roche 选了五份固定的天气 Agent 执行记录,每个评审模型对每份记录重复评估 100 次。Jev 的 500 次通过/不通过判断均与人工标签一致,质量分数在重复评估中的波动也很小。固定输入、反复评估,可以看出评审模型是否稳定地应用同一套标准。

实验与评估设置 ↗

这些做法背后的原理

多个问题共享材料,分别计算;有依赖的后续问题需要由代码另行组织。

先把答案空间定义好

浏览器例子中,代码已经列出了可用操作和页面元素。Jev 在给定的答案空间里计算概率。TypeSafe 把这种直接输出判断和概率的模型称为 System One。应用拿到的值可以直接用于后续逻辑。

TypeSafe 介绍了一种并行采样方式,直接产生这些输出,省去逐个 token 生成长篇文字的过程。同一请求里的问题共享输入状态、独立求值。浏览器 Agent 正是利用这一点,同时问“如果点击,点哪里”和“如果输入,填哪里”,再由代码选取对应答案。

“概率校准”是什么意思

它的训练方法叫 RLCD,即面向概率校准决策的强化学习。校准让概率有了实际含义:许多被赋予 0.8 概率的预测中,约八成应该成真。程序可以据此决定立即处理、补充信息,还是转交人工。

也看看概率如何分布

Choice 和 Score 还返回 confidence,用来描述概率分布有多集中。“财务”远高于其他选项,与“财务”和“账号支持”几乎打平,给程序的是两种不同信号。概率分布把这种区别保留下来,再用已有正确答案的样例确定分流阈值。

TypeSafe 对 System One 与并行采样的介绍 ↗

RLCD 与校准解释 ↗

官方 confidence 定义 ↗