Jev 模型三原语:判断题、选择题、打分题

更新于 适用版本 Jev 1.13

Jev 模型的一切能力都可以归结为三种题型原语:判断、选择、打分。TypeSafe AI 围绕这三者设计了模型;一旦你掌握了”问题到原语”的映射,大部分接入决策就自己有了答案。这篇给出每种题型的请求写法和响应形态、边界条件和错误用法、怎么在三者之间做选择、成本与延迟的权衡,以及它们在真实管线里如何组合。所有示例都走 OpenRouter 的 OpenAI 兼容端点。

TL;DR: 判断题返回 yes/no/unclear;选择题返回你枚举的选项之一;打分题返回你定义量表上的数字。每个响应都带 confidence 和 rationale。选择标准就一条:答案空间和你的决策匹配的题型。工作流需要多个决策时,把原语串起来用。

三种题型对比

题型答案空间最适合答案示例(示例数据,example fixture)
判断题 judgmentyes / no / unclear闸口检查、标记、审批{"answer":"yes","confidence":0.97,"rationale":"..."}
选择题 choice列出的选项之一分流、分类、选优{"answer":"billing","confidence":0.94,"rationale":"..."}
打分题 scoring你定义量表上的数字排序、质量线、优先级{"answer":8,"scale":[1,10],"confidence":0.86,"rationale":"..."}

一条经验法则覆盖大多数情况:答案是是不是,用判断题;是哪一个,用选择题;是有多少,用打分题。

原语一:判断题

判断题是有边界的 yes/no,带一个逃生通道——当输入信息不足时,unclear 是正经答案。

# Confirm the exact model slug on the OpenRouter model page
curl https://openrouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "typesafe/jev-1.13",
    "messages": [
      {
        "role": "user",
        "content": "Judgment question: is this refund request covered by the 30-day policy? Request: \"...\""
      }
    ]
  }'

标准的 chat completions 请求;判断语义通过把 content 写成判断问句来传达。

响应——示例数据(example fixture),正式字段名以官方文档为准:

{
  "answer": "yes",
  "confidence": 0.97,
  "rationale": "The purchase date is within 30 days and the item is unopened."
}

判断题适合审核标记、政策检查、重复检测,以及一切”要么放行要么不放行”的闸口。

判断题的适用边界。 判断题在业务层面是真正二元时效果最好。如果你发现自己想区分三种状态——“是”、“否”和”升级人工”——通常应该改成三选项的选择题,而不是判断题。如果你需要的是真值的程度而不是二元闸口,打分题更合适。

生产环境中如何处理 unclear。 始终为 unclear 写明确的分支。常见错误是把 unclear 当 “no” 静默拒绝。更好的默认做法是把它加入人工审核队列,同时附上 rationale 字段内容。threshold 模式详见置信度与回退指南。

原语二:选择题

选择题要求你枚举选项。这个约束恰恰是特性:答案保证是选项之一,你的 switch 语句可以放心写。

import json, os, requests

prompt = (
    "Choice question: which team should own this email? "
    "Options: sales, billing, support. Email: \"...\""
)
resp = requests.post(
    "https://openrouter.ai/api/v1/chat/completions",
    headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
    json={
        # Confirm the exact model slug on the OpenRouter model page
        "model": "typesafe/jev-1.13",
        "messages": [{"role": "user", "content": prompt}],
    },
    timeout=30,
)
route = json.loads(resp.json()["choices"][0]["message"]["content"])

选项在问题文本里枚举;上线前到 OpenRouter 模型页确认确切的 model slug。

响应——示例数据(example fixture),正式字段名以官方文档为准:

{
  "answer": "billing",
  "confidence": 0.94,
  "rationale": "The email disputes a charge amount rather than asking about a product feature."
}

选择题适合工单分流、意图分类,以及一切”从这个列表里挑一个”的决策。三团队邮件分流的完整落地见 email routing case。

选项标签的设计很重要。 语义重叠的标签——例如”退货”和”退款”作为并列选项——会压低置信度,也让 rationale 难以操作。优先使用互斥且穷举的标签。如果无法保证互斥,加一个”其他”选项兜底,路由到人工处理。

选择题与判断题的区别。 判断题是两选项选择题的特殊形式,但 Jev API 对它们的处理不同:判断题始终提供 unclear 作为第三条路径;而两选项选择题在两个标签之间强制给出明确答案。需要”信息不足”逃生通道时用判断题;需要在两个明确标签之间必须选一个时用两选项选择题。

原语三:打分题

打分题返回你定义量表上的数字,并回带量表本身,避免任何歧义。

import json, os, requests

prompt = "Scoring question (1-10): how well does this FAQ entry answer the user question? Entry: \"...\""
resp = requests.post(
    "https://openrouter.ai/api/v1/chat/completions",
    headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
    json={
        # Confirm the exact model slug on the OpenRouter model page
        "model": "typesafe/jev-1.13",
        "messages": [{"role": "user", "content": prompt}],
    },
    timeout=30,
)
score = json.loads(resp.json()["choices"][0]["message"]["content"])

量表写在问题措辞里;多次调用保持量表一致,分数才有可比性。

响应——示例数据(example fixture),正式字段名以官方文档为准:

{
  "answer": 8,
  "scale": [1, 10],
  "confidence": 0.86,
  "rationale": "The entry answers the core question but skips the edge case mentioned in the question."
}

打分题适合质量线、候选重排和队列排序。

量表设计。 1–10 整数量表是最常见的选择,分辨率足够排序但不会造成虚假精度。量表范围不要超过 1–100:过宽的范围产生伪精确,rationale 也更难核实。如果需要跨管线阶段比较分数,把量表定义为共享常量,而不是每次调用都重新指定。

如何结合 confidence 使用分数。 confidence 字段表达的是模型对分数准确性的把握,而不是分数高低本身。一个 confidence 为 0.55 的 9 分,和 confidence 为 0.92 的 9 分需要区别对待。实践中,设置一个置信度下限(例如 0.75),低于此值就送人工审核,不论分数是多少。成本与延迟指南介绍了如何为这类审核队列做预算。

组合使用

真实工作流是把三原语串起来。一个客服管线可以:先判断”这条是不是机器人能处理的?“,再选择负责团队,最后在发送前给草稿回复打分。组合时的思路:

  1. 判断题当闸口。 先做便宜的 yes/no;unclear 或”否”提前退出转人工。
  2. 选择题当分叉。 过了闸口再路由给正确的负责人。
  3. 打分题当质量线。 在出口给结果打分,低于阈值就扣下。

每次调用只用一种原语——把选择题和打分混在一个问题里,会让答案空间变浑、confidence 也变难解释。题干措辞、选项枚举和 few-shot 示例的深入讨论见问题设计与状态管理指南。

边界条件与错误用法

了解每种原语在哪里会出问题,能省去大量生产环境调试时间。

判断题的边界情况。

选择题的边界情况。

打分题的边界情况。

Jev API 三原语的成本与延迟权衡

三种原语的成本不等。了解相对开销有助于构建在预算内运行的管线。成本与延迟指南给出绝对数字;下面的相对规律跨模型版本稳定成立。

原语相对延迟相对 token 成本说明
判断题最低最低二元输出,模型推理路径短
选择题中等中等随选项数量增长
打分题最高最高连续输出需要更多推理 token

对管线设计的实际影响。

把判断题放在管线最前面:它是过滤不需要进一步处理的条目最便宜的方式。把打分题留给最终质量检查,此时成本被高质量输出的价值摊薄。选择题居中——比判断题贵,但通常每条管线分支只需要调用一次。

对延迟敏感的场景(实时对话、亚秒级 SLA),优先使用判断题和选择题;把打分题推迟到不阻塞响应的异步质量监控任务里。编程智能体技能指南展示了代码审查管线中使用的异步打分模式。

如果不确定用哪种原语,先试判断题。管线稳定后,判断结果会告诉你哪些条目值得做更深的打分评估。

关于 Jev AI 三原语的常见误解

“打分题可以用来表达我对数据的置信度。” 不对——每个响应里已经有 confidence 字段来捕捉模型的确定性。打分题是用来评估条目本身在你定义的某个维度上的表现,而不是重新表达模型对自己答案的不确定性。

“选择题不过是一系列判断题的集合。” 选择题和判断题在 API 行为上不同。判断题始终有 unclear 作为第三条路径;选择题强制从你枚举的列表里选一个。三选项的选择题不等同于三次串行判断题——它是一次互斥的单一分类。

“confidence 越高,答案越正确。” Confidence 反映的是模型对其训练分布的校准程度,不是对事实的保证。对抗性输入或分布外输入下,0.99 的 confidence 仍然可能是错的。把 confidence 作为多个信号之一,对高风险决策配合人工审核队列使用。

“同一个打分问题可以复用在不同语义领域。” 客户邮件的质量 1–10 分和客服工单的紧急度 1–10 分,即使量表相同也是语义上不同的尺度。永远不要直接跨问题措辞比较原始分数。如果需要跨领域可比性,把每个分数转换为相对于该具体问题历史分布的百分位数。

“unclear 意味着模型失败了。” Unclear 是经过设计的一等公民答案。模型正确地识别出信号不足。从不返回 unclear 的管线,可能是在压制合理的不确定性而非呈现它。把 unclear 的比率作为健康指标监控:突然飙升通常意味着值得调查的输入分布偏移。更多关于模型设计理念的内容见什么是 Jev AI。

关于 Jev AI 三原语的常见问题

能用判断题来决定要不要调用开销更大的打分题吗? 可以,这也是推荐模式。在花 token 打分之前,先判断条目是否值得打分。闸门在前期过滤噪声,让每次管线运行的平均成本保持低位。

选择题选项里能有空格或特殊字符吗? 选项标签由模型在语义层面匹配,不是精确字符串比对。空格和常见标点没有问题。避免把长句子当标签——每个标签保持一到三个词,让 answer 字段能直接映射到下游变量名。

怎么对原语问题做版本管理? 把确切的问题模板作为常量存入代码库,与 model slug 一起版本化管理。修改问题措辞时,视作新版本:在小批量样本上重新做校准,再上线。环境隔离方法见获取 API Key 指南,可用于这类迁移的灰度发布。

能在 API 调用时强制设定最低 confidence 阈值吗? 不能直接设定——confidence 阈值在应用层执行。从响应里读取 confidence 字段,再按需分支。具体的 threshold 模式见置信度与回退指南,有可直接复用的代码片段。

Jev 和通用 LLM 做相同决策有什么区别? Jev 经过专门训练,输出带校准置信度的结构化决策,而不是自由文本。通用 LLM 被问判断题时,可能输出一段话;Jev 输出一行 JSON。详细权衡见 Jev 与 LLM 对比指南。

本文适用版本 Jev 1.13。

常见问题

+ Jev 的三原语是什么?

判断题(yes/no/unclear)、选择题(从你列出的选项中挑一个)、打分题(你定义的量表上的数字)。每次 Jev 调用都对应其中一种题型。

+ 分类任务该用哪种原语?

选择题。在问题里枚举候选选项,Jev 会返回其中之一,下游分支逻辑写起来非常稳。

+ 一个工作流里可以组合多种原语吗?

可以,而且这是常态:先判断条目是否可处理,再选择分类或负责人,最后给处理质量打分。

+ 判断题返回 unclear 是什么意思?怎么处理?

unclear 表示输入信息不足,模型无法做出有把握的 yes/no 判断。应视为第三条分支:转人工、请求补充信息,或带更多上下文重新调用。永远不要把 unclear 静默当成 no 处理。

+ 选择题最多可以给多少个选项?

没有硬性上限,但超过 8-10 个选项后置信度会下降、延迟会上升。选项很多时,推荐两阶段选择:先粗分,再从候选里精选。

+ 为什么打分题的 confidence 通常比判断题低?

打分题的自由度更大——模型内部的不确定性分布在更多分数位置上。打分题的 confidence 为 0.82 不是警告,而是对连续量表的诚实校准。

+ Jev 和通用 LLM 做同样决策有什么区别?

Jev 经过训练,专门输出带校准置信度的结构化决策,而不是自由文本。详见 Jev 与 LLM 对比指南。

继续阅读