AB
AiBoss
チュートリアル

Jev

チュートリアル

Jev 判断型模型集成指南:路由、置信度门控与复合评分

Jev 是 TypeSafe AI 推出的判断专用模型,不生成自由文本,而是按预定义格式返回分类、评分与概率判断。本文介绍如何把它嵌入既有系统:用 Choice 做意图路由、用 confidence 做人工兜底、用一次请求批量执行多个判断、用 Composite Scoring 把复杂评价拆成小判断再由代码加权,并给出完整的 cURL 请求示例与落地注意事项。

Jev 是 TypeSafe AI 推出的判断型模型,它的定位不是替代 ChatGPT 或 Claude 这类生成模型,而是在既有程序与 LLM 之间充当一个「只负责判断」的环节。它不输出自由文本,而是按预先定义好的结构返回判断结果,因此更适合被当作一个函数来调用:给它一段输入,它告诉你这段输入属于哪一类、该打几分、某个命题成立的概率是多少。本文面向需要在业务系统或 AI Agent 中嵌入判断能力的开发者,介绍 Jev 的三种判断类型、四种常见集成模式、一个可直接改造的完整请求示例,以及落地时必须注意的限制。如果你只是想找一个能写文章的模型,这篇内容并不适合你;如果你手上有一堆「分类、打分、是否」的小判断散落在代码和 LLM 提示词里,Jev 值得纳入评估范围。站内也有对应的工具页可供参考:Jev。

准备工作

在动手写代码之前,需要先确认几件事。Jev 通过 API 调用,官方同时提供 Python SDK,但理解 API 结构对排查问题更有帮助,因此下面的示例以 cURL 为主。

账号与密钥

你需要一个 TypeSafe 账号,并在控制台生成 API 密钥。调用时通过 HTTP 头传递:

Authorization: Bearer $TYPESAFE_API_KEY
Content-Type: application/json

建议把密钥放在环境变量里,不要硬编码进源码。示例中统一使用 $TYPESAFE_API_KEY 这个变量名。

请求体的三个核心字段

一次 Jev 请求至少包含以下内容:

  • model:要使用的模型标识,例如 jev-latest。具体可用的模型名与版本请以官网当前信息为准。
  • state:被判断的对象,也就是输入数据本身。它可以是一段用户消息、一份文档片段、一条待匹配的记录。
  • questions:一个对象,里面每个键是一个问题名,值是问题的定义(类型、指令、判定标准)。

questions 是 Jev 与普通生成模型差别最大的地方。你不是在写提示词求它输出一段话,而是在声明一个结构化的判断任务。

三种判断类型

类型作用典型用途
Choice从多个候选中选出一个工单分类、意图识别
Score按定义好的档位打分重要度、紧急度、情绪强度
Noul返回命题为真的概率「这段话是不是投诉」这类二值判断

Choice 与 Score 除了给出结果,还会返回 probabilities 与 confidence。Noul 返回的是 0 到 1 之间的「是」的概率,它没有独立的 confidence 字段。这一点在做阈值判断时容易踩坑:不要试图从 Noul 的结果里再取一个 confidence。

另一个关键能力是:一次请求可以包含多个问题。同一段 state 可以同时被分类、打分、判定,不需要发多次请求。

操作步骤

第一步:判断哪些逻辑该交给 Jev

在写任何请求之前,先做一次职责划分。Jev 擅长的是自然语言层面的模糊判断,不擅长精确计算。可以按下面的方式分流:

处理内容合适的承担者
数值计算、计数代码
日期比较代码
字符串完全匹配代码
自然语言分类Jev
从模糊候选中做选择Jev
长文本生成、复杂规划生成式 LLM

TypeSafe 自身也把数值计算、计数、日期比较列为 Jev 的弱项。把能精确计算的事情交给代码,是后面所有模式的前提。

第二步:用 Choice 做意图路由

最常见的用法是把 Jev 放在流程前端,只负责决定「这件事该交给谁处理」。以客服系统为例,用户来信可能涉及订单查询、商品咨询、退换货、投诉等。Jev 只输出分类,后续动作由代码、专用 LLM 或人工完成。

设计 Choice 时有一个必须处理的细节:选项要覆盖所有可能的输入。如果候选类别无法穷尽,应显式加入 other 或 none of the above 这样的兜底选项,并在代码里把落到该选项的请求转给人工确认。这不是为了消除误分类,而是为了让「无法归类」有一个明确的去处,而不是被硬塞进某个不合适的类别。

路由的典型分工如下:

  • 订单状态查询 → 普通程序直接查数据库
  • 商品咨询 → 商品知识库方向的 LLM
  • 退换货 → 专用处理流程
  • 复杂投诉 → 人工坐席
  • other → 人工确认

第三步:用 confidence 做人工兜底

Choice 和 Score 会返回 confidence,可以据此决定哪些结果自动执行、哪些转人工。做法是给每类操作设一个阈值,高于阈值自动处理,低于阈值进入人工队列。

这里有两个容易误解的地方。第一,confidence 不是准确率,它来自回答候选上的概率分布,confidence 高仍然可能判错。第二,合适的阈值取决于用途和误判的代价,不存在一个通用数值。官方文档在举例时提到,像余额查询和转账授权这类风险不同的操作,应当使用不同的阈值。

一个实用的分层思路是:

  • 误判后容易重做的处理,可以放宽自动化范围
  • 涉及重要数据变更的处理,要求额外确认
  • 对外发送、删除等高风险操作,不应仅凭模型判断就执行

第四步:用一次请求批量执行多个判断

同一段输入往往需要多个独立判断。例如一条 bug 报告,你可能想知道:它属于哪类问题、严重程度如何、是否包含复现步骤、是否夹带退款诉求、用户情绪有多强烈。逐个提问意味着多次 API 往返,而 Jev 允许把这些放进同一个 questions 对象。

需要注意,多个问题是各自独立评估同一个 state 的。也就是说,「这是不是 bug 报告」的答案不会自动成为「严重程度」这个问题的上下文。即使输入不是 bug 报告,严重程度那个问题照样会被执行,需要由程序侧忽略无意义的结果。

关于性能,公开的实测数据可以作为参考:有团队在 2026 年 9 月 20 日对 jev-1.13.0 做过测量,单问题约 400 token 时响应在 358 至 611 毫秒之间,七个问题约 711 token 时响应在 377 至 544 毫秒之间。这组数字来自特定团队的测试环境,不能直接外推到其他系统。实际是否缩短总耗时,还取决于输入规模、问题数量、网络状况和后续处理。批量提问能确定减少的是 API 往返次数。

第五步:用 Composite Scoring 拆分复杂评价

当你要的是一个综合结论时,不要直接问「这个人优秀吗」。正确做法是把评价拆成若干独立维度,让 Jev 逐项打分,再由代码加权汇总。

以工程师候选人评估为例,可以拆成 Python 技术深度、团队领导经验、系统设计能力、通用型能力等维度,各自用 Score 评估,然后在代码里计算:

final_score = (
    python_depth * 0.40
    + leadership * 0.10
    + system_design * 0.40
    + generalist * 0.10
)

各项先归一化到 0 到 1 再代入。权重取值来自官方示例,实际项目应按自己的用人标准调整。

这种拆法的价值在于把「判断」和「计算」分开:Jev 负责每个维度的语义判断,代码负责最终算术。想调整结果时,你可以检查单项判断,也可以只改权重。如果让 Jev 一次性给出总评,就很难说清是哪个因素影响了结论。TypeSafe 也不建议把精确计算交给 Jev。

第六步:在 AI Agent 内部承担小判断

Jev 也可以嵌进 Agent 的内部流程,而不是替换整个 Agent。一个公开的落地案例来自 Construct:他们把 Jev 用在 Agent 记忆系统的实体匹配上。

场景是这样的:Agent 从对话中抽取人物、公司、项目等信息存入记忆。当新出现一个「Dr. Priya Shah」时,需要判断它是否就是已存的「Priya Shah」。名字完全一致不代表是同一实体,纯字符串比较解决不了这类问题。

他们的分工是:先用代码检索候选,完全匹配或可唯一确定的名字由代码处理,只有模糊候选才交给 Jev 判断是否为同一实体,判断结果再回到代码执行合并或新建。据其报告,原本最多需要调用三次生成模型做判断的流程,被替换成一次 Jev 调用,同时保留了 Jev 调用失败时回退到原判断逻辑的兜底路径。

可以交给 Jev 的 Agent 内部判断包括:用户意图分类、工具选择、检索结果相关性判断、新旧信息是否指向同一对象。长文本生成和复杂规划仍应由生成式 LLM 承担。

第七步:作为 LLM 输出的检查环节

Jev 也可用于对生成模型的输入输出做校验,例如判断回答是否回应了用户问题、是否满足指定条件、是否需要额外确认。用 Noul 判定「该回答是否回应了用户问题」,再根据结果决定直接展示还是转人工或重新处理。

但必须清楚:Jev 的检查结果本身也可能出错。官方文档提到,对抗性输入可能影响 Jev 的判断。因此安全敏感或高风险操作的判定,不能把 Jev 当作唯一防线。

一个完整示例

下面这个请求把分类、评分、概率判断放在一次调用里。输入是一段用户抱怨 Stripe 集成失败的英文消息,需要同时判断该由哪个团队处理、客户情绪有多强烈、是否紧急。

curl -X POST \
  -H "Authorization: Bearer $TYPESAFE_API_KEY" \
  -H "Content-Type: application/json" \
  -d @- << 'EOF'
{
  "model": "jev-latest",
  "state": "Hi, I've been trying to connect my Stripe account for 3 days and the integration keeps failing. I'm losing sales. Please help ASAP.",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Which team should handle this?",
      "criteria": {
        "billing": "Payment or subscription issues",
        "technical": "Bugs or integration problems",
        "sales": "Pricing or account questions",
        "other": "Requests that do not fit any of the above categories"
      }
    },
    "frustration": {
      "type": "score",
      "instructions": "How frustrated does the customer appear?",
      "criteria": [
        "Calm, just stating facts",
        "Frustrated but civil",
        "Very angry, strong language"
      ]
    },
    "is_urgent": {
      "type": "noul",
      "instructions": "The message conveys urgency or time-sensitivity"
    }
  }
}
EOF

这个结构里,department 是 Choice,候选里显式加了 other;frustration 是 Score,档位从平静到强烈不满;is_urgent 是 Noul,只判断一个命题。

响应中,各问题的结果会出现在 answers 里。后续程序可以这样分流:

  • department = technical → 转技术支持
  • department = billing → 转账单团队
  • department = sales → 转销售
  • department = other → 转人工确认

如果 department 的 confidence 偏低,就不要自动定路由,直接进人工队列。需要强调的是,即使加了 other,也不能保证 Jev 每次都能正确选中它;这个选项的作用是提高类别覆盖度,而不是消除误分类。

上面的命令是结构示例,未在真实环境执行过,因此不提供实际响应内容和耗时数据。请以自己环境中的返回为准。

注意事项

只传判断需要的信息

Jev 基于传入的 state 做判断。如果 state 里塞了大量与问题无关的内容,判断精度可能下降。更稳妥的做法是先用代码或检索把相关信息抽出来,再交给 Jev。Construct 的实体匹配案例就是这个思路:先由代码检索候选,再把模糊候选交给 Jev。

阈值要用真实数据定

不要把返回的概率或 confidence 当成通用标准。Construct 是基于自家测试数据来设定实体匹配阈值的。此外,2026 年 9 月 29 日公开的一项独立评估在部分二值分类任务上发现,把 0.5 作为固定判定阈值会导致性能偏低。正确做法是用自己的数据跑一遍,看误判率,再决定阈值。

提前设计失败路径

API 不可用或结果不可采用时要有兜底。可以按三种情况分别处理:判断可采纳则走正常流程;判断不确定则转人工复核;API 报错则走回退逻辑。Construct 的实现中,Jev 若在 2 秒内没有响应,就会回退到原有的判断方式。

输出格式受约束不等于判断正确

Jev 的输出格式是受限的,不会像生成模型那样自由发挥出定义之外的值。但格式正确和内容正确是两回事。jev-1.13 的已知限制包括数值处理、日期比较、复杂间接推理、对抗性输入,以及 Choice 选项顺序带来的影响。不要因为输出结构稳定就认为判断一定可靠。

价格与配额以官网为准

Jev 的计费方式、模型版本、可用区域和调用配额都可能调整,本文不给出具体数字。在正式接入前,请查阅官网当前公布的定价与限制信息,并据此估算成本。