Jev:让 AI 直接参与程序判断

Revio ·

从一条工单出发,介绍 Jev 如何通过类型化输出、并行求值与 RLCD 训练参与程序判断,并给出接口示例和应用场景。

“团队无法导出报表,明天上午要交付客户。”收到这样一条反馈,客服系统需要做几个判断:它属于技术问题还是账单问题?是否有明确的截止时间?应该交给谁处理?

这些问题需要理解语义,单靠关键词很容易分错。Jev 就是为这类判断设计的模型:输入一段信息和几个问题,直接返回程序可以使用的选项、分数和概率。

TypeSafe AI 在 2026 年 9 月 15 日发布 Jev,将它称为 System One 模型。根据目前(2026 年 9 月 24 日)的信息,下面看看它的实现思路、接入方式,以及可能的应用场景。发布介绍

从一句话,到程序里的一个分支

对于上面的工单,我们可以先定义三个去向:技术团队、账单团队,以及需要人工判断的其他问题。Jev 读取消息后,从这三个选项中作出选择,并返回各选项的概率。程序拿到结果,就能决定下一步把工单放进哪个队列。

这是一种面向软件的接口。普通大模型也能通过结构化输出完成分类;Jev 则把这类小而频繁的判断作为主要任务,围绕输出形式、推理方式和训练目标做了专门设计。它理解自然语言,输出的是决策值,不生成回复正文或推理解释。System One 模型说明

Jev 如何完成判断

用类型定义答案

一次请求包含两部分:state 放待分析的信息,questions 定义要回答的问题。Jev 提供三种基础类型:

类型 工单中的例子 返回什么
Choice 交给技术、账单还是其他团队? 选中的类别、各选项概率、confidence
Score 按给定等级,问题有多严重? 分数、各等级概率、confidence
Noul 用户是否给出了明确截止时间? 0 到 1 的肯定概率 noul

Choice 的类别由开发者事先给出,模型不会临时编出一个不存在的团队。遇到描述不清或不属于现有分类的消息,可以通过 other 留出人工处理的入口。

Score 适合描述有次序的程度,例如“功能正常”“部分功能受影响”“核心功能无法使用”。它根据各等级的概率计算加权分数,因此也会返回小数。Score 文档

限定答案范围解决了输出格式的问题,选对答案仍取决于模型的判断。这也是理解 TypeSafe 所说“类型安全”时需要保留的区别。

一次请求,处理多个独立问题

分类、截止时间和严重程度,都可以根据同一条工单分别判断。Jev 会共享这份输入,在一次请求中并行求值。按照 TypeSafe 的介绍,它通过并行采样输出决策概率,省去了逐 token 生成整段答案的过程。实现介绍

这样,应用可以把几个原本分开调用的判断合并起来。若后续问题需要新的信息,例如先查订单才能判断退款条件,就在查完订单后再发起下一次请求。独立问题一起算,有依赖的步骤按顺序执行。

用 RLCD 训练可用于决策的概率

Jev 的训练方法叫 RLCD,完整名称是 Reinforcement Learning for Calibrated Decisions。它的目标是让模型给出的概率与实际结果相符:如果一组事件都被赋予约 80% 的概率,那么这组事件实际发生的比例也应接近 80%。这就是概率校准。训练思路

校准的意义在于,软件可以根据不确定程度分配工作。信息明确的工单直接分流,模糊的消息转给人工;需要深入分析的问题则交给推理模型。它衡量的是一组预测的表现,不保证某一次判断一定正确。

目前公开资料还不足以复现 Jev 的完整网络结构、参数规模、训练配方和奖励函数,更多细节有待披露。

用 confidence 决定是否继续处理

Choice 和 Score 除了返回概率分布,还会返回 confidence。它是从分布计算出的确定性指标:概率集中在一个答案上时更高,几个答案难分高下时更低。Noul 已经直接给出肯定概率,不另设这个字段。Confidence 文档

confidence = 0.9 不表示“正确率为 90%”。接入时,可以用一批已标注的工单试出合适的门槛,看看提高自动分流比例后,误分率会怎样变化。这样,门槛才对应实际的业务取舍。

一个工单分流示例

下面通过 HTTP API 提交两个问题:选择处理团队,以及判断消息中是否包含明确的交付时间。示例使用固定版本,密钥从服务端环境变量读取。

import json
import os
import urllib.request

payload = {
    "model": "jev-1.13.0",
    "state": {
        "message": "团队无法导出报表,明天上午要交付客户。",
        "product": "企业报表工具"
    },
    "questions": {
        "team": {
            "type": "choice",
            "instructions": "选择最适合处理此反馈的团队。",
            "criteria": {
                "engineering": "功能异常或软件缺陷",
                "billing": "付款、发票或订阅问题",
                "other": "信息不足或不属于上述团队"
            }
        },
        "deadline": {
            "type": "noul",
            "instructions": "用户是否给出了明确的交付时间?"
        }
    }
}
request = urllib.request.Request(
    "https://api.typesafe.ai/v1/systemone",
    data=json.dumps(payload).encode("utf-8"),
    headers={
        "Authorization": "Bearer " + os.environ["TYPESAFE_API_KEY"],
        "Content-Type": "application/json"
    },
    method="POST"
)
with urllib.request.urlopen(request, timeout=15) as response:
    result = json.load(response)

team = result["answers"]["team"]
# 演示门槛,实际数值根据工单样本调整。
queue = "manual_review"
if team["confidence"] >= 0.85:
    queue = {
        "engineering": "engineering_triage",
        "billing": "billing_triage"
    }.get(team["choice"], "manual_review")
print({"queue": queue, "model": result["model"]})

这里的 criteria 写清了每个团队的职责,最后几行代码负责把类别映射到队列。信息不足或 confidence 未达到门槛时,工单会保留在人工队列。另一个问题的结果可以从 result["answers"]["deadline"]["noul"] 读取,用于后续排序。

真正接入工单系统时,再补上超时重试、限流处理和操作去重。Jev 负责理解消息,账号权限、订单金额等有确定规则的部分,继续交给业务代码。

哪些地方适合用 Jev

工单分流只是一个起点。许多软件里都有类似的小判断:输入是自然语言,输出却只有有限的几种可能。

场景 可以交给 Jev 的判断 后续处理
客服系统 消息分类、紧急程度、资料完整度 分派工单或请用户补充信息
Agent 调度 请求适合哪种工具或模型 调用对应工具,复杂问题升级处理
搜索与知识库 候选段落与问题是否相关 重排结果,再生成回答
数据整理 两条记录是否指向同一对象 合并候选记录,人工处理歧义
游戏交互 当前状态下选择哪种策略 状态机执行移动、攻击或交互

其中,Agent 调度是很自然的尝试方向。大量请求可能只是查询记录或简单分类,少部分才需要长时间推理。先做一次轻量判断,有机会减少昂贵模型的调用。是否值得这样拆分,可以比较整个流程的延迟、费用和误路由率。

游戏中的用法则更接近策略选择。例如,把角色血量、附近目标和任务状态整理成文本,让 Jev 在几个动作中作出判断。由于当前只支持文本输入,而且需要云端调用,它更适合低频决策;逐帧移动和碰撞仍由本地逻辑处理。模型输入说明

速度和费用意味着什么

按 9 月 24 日的官方模型规格,jev-1.13.0 的输入价格为每百万 token 0.042 美元,输出免费。假设每次请求包含 1,000 个输入 token,调用 100 万次的模型输入费用约为 42 美元。

单次请求总共支持 64k token,其中 state 加上最长的一个问题不能超过 32k。把多个独立问题放进同一请求,可以共享状态,但仍需要留意这两个长度上限。

TypeSafe 公布的端到端响应时间为 70–500ms,实际延迟会受网络、输入长度和负载影响。官方测试说明。中文项目还需要留出样本验证:官方目前以英语训练为主,不同语言的效果会有差异。

对于已有系统,可以先从工单分类或模型路由这样的单个环节接入,观察它能替掉多少重复判断。Jev 的吸引力也在这里:把语义判断做成一个足够轻的函数,让开发者愿意在更多地方调用它。