AI

JEV 结构化判断 API

使用 TypeSafe 的 System One 模型 JEV 分类消息、判断条件是否成立、评价内容。提供上下文和问题,同步获得应用可以直接使用的 JSON 答案。

分类消息

向 POST /v1/systemone 发送消息和分类选项。以下示例使用 jev-latest,为一条客户咨询选择处理团队。

cURL
curl https://api.sukidata.com/v1/systemone \
  -H "Authorization: Bearer $SUKIDATA_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: decision-example-1' \
  --data '{
  "model": "jev-latest",
  "state": "We plan to integrate your API next month, with around 100,000 requests per month. Which plan would fit our team?",
  "questions": {
    "team": {
      "type": "choice",
      "instructions": "Which team should handle this message?",
      "criteria": {
        "billing": "Payments and invoices",
        "support": "Technical issues",
        "sales": "Pricing and purchasing"
      }
    }
  }
}'
响应示例
{
  "id": "dec_example",
  "model": "jev-1.13.0",
  "answers": {
    "team": {
      "type": "choice",
      "choice": "sales",
      "confidence": 0.9,
      "probabilities": {
        "billing": 0.01,
        "support": 0.02,
        "sales": 0.97
      }
    }
  },
  "usage": {
    "input_tokens": 400,
    "output_tokens": 40,
    "cost": 0.0000168
  }
}

从 answers.team.choice 获取分类结果,示例中的 sales 表示销售团队。答案随请求同步返回。

调用需要 API Key 和足够的 AI 余额。每次新判断使用新的 Idempotency-Key,重试时复用原键。

理解结果

answers 中的名称与请求里的问题名称对应,例如 team。Choice 的答案包括所选类别和概率分布:

  • probabilities 包含各选项的概率,choice 为概率最高的选项。
  • confidence 概括概率分布的集中程度,不等于选中项的概率,也不保证答案正确。
  • model 是实际使用的模型版本,id 标识本次请求,usage 提供 token 用量和美元费用。

选择问题类型

choice选择一个类别,例如处理团队或商品类型。在 criteria 对象中定义 1–255 个选项,答案返回选中的键名。
noul判断一个是非条件,例如消息是否在咨询方案。返回条件成立的概率;可用 criteria 分别说明 true 和 false 的含义。
score评价一个维度,例如紧急程度或相关性。在 criteria 数组中按从低到高的顺序定义 2–10 个等级,答案返回在此量表上的位置。

在同一次请求中增加判断

如需同时识别购买意向和紧急程度,在 questions 中追加以下两项。三个问题共同使用 state 中的客户消息。

JSON · questions
{
  "plan_inquiry": {
    "type": "noul",
    "instructions": "Is this customer evaluating a plan for their team?"
  },
  "urgency": {
    "type": "score",
    "instructions": "How urgent is this message?",
    "criteria": [
      "Routine request with no time pressure or blocked work",
      "An active issue needs attention, but work can continue",
      "Critical work is blocked and needs immediate attention"
    ]
  }
}

answers 中新增的两项可能如下:

JSON · answers
{
  "plan_inquiry": {
    "type": "noul",
    "noul": 0.99
  },
  "urgency": {
    "type": "score",
    "score": 0.2,
    "confidence": 0.7,
    "legend": {
      "0": "Routine request with no time pressure or blocked work",
      "1": "An active issue needs attention, but work can continue",
      "2": "Critical work is blocked and needs immediate attention"
    },
    "probabilities": {
      "0": 0.85,
      "1": 0.1,
      "2": 0.05
    }
  }
}
  • noul: 0.99 表示条件很可能成立,接近 0 表示否,接近 0.5 表示不确定。它表示概率而非强弱程度,没有独立的 confidence 字段。
  • score 使用从 0 开始的等级索引,因此三个等级的范围是 0–2,而非固定的 0–1。得分是按概率加权的均值:0 × 0.85 + 1 × 0.1 + 2 × 0.05 = 0.2。legend 将索引对应到你的标准。
  • Score 也会返回 confidence。低分可以很确定,高分也可以不确定,决定后续操作时要同时考虑两者。

如果一条内容可以同时具备多个独立标签,为每个标签分别使用 noul;需要从类别中选出一个时,再使用 choice。

写清判断标准

  • 提供所需事实。 在 state 中放入待判断的消息,以及必要的产品背景或文档内容。可使用文本、JSON 对象或数组。
  • 每次只问一件事。 把实际问题写在 instructions 中,问题名称只用于对应答案。主题、购买意向和紧急程度分别评价,再由代码组合。
  • 说明类别和等级的边界。 Choice 的类别需要各有明确含义,必要时加入“其他”;score 的等级要描述可观察的差异,而不只是“低”“中”“高”。

同一请求中的每个问题独立读取相同上下文。如果后一个问题需要前一个答案作为输入,请将答案放入后续请求的上下文,再次调用。

一个请求最多包含 1,024 个问题,UTF-8 JSON 请求体不超过 1 MiB。instructions 也支持文本、对象或数组,完整字段约束见 API 参考。

使用答案

将成功响应保存为 result,根据分类结果分派消息,不确定时交给人工复核:

JavaScript
const { team } = result.answers;
const route = team.confidence >= 0.8
  ? team.choice
  : 'manual_review';

console.log({ route });

0.8 只是示例阈值。使用自己业务中已标注的案例验证判断标准和阈值,覆盖常见与模糊情况。不确定时补充上下文或人工复核;影响较大的操作应保留确认步骤。

可以先在 Playground 中测试代表性案例,查看概率并导出请求。智能体可通过 MCP 调用 evaluate_decision。

更多模型用法参阅 TypeSafe 的 choice、noul、score 和 confidence 指南。

模型与计费

JEV 是目前可用的 System One 模型。在 model 字段中,可以使用跟随更新的别名,也可以固定版本。

模型 ID适用方式
jev-latest跟随当前正式版本,上面的示例默认使用此名称。
jev-preview体验预览版本,可能先于 jev-latest 更新。
jev-1.13.0固定版本,适合需要稳定复测、调整判断标准的应用。

目前两个别名都指向 jev-1.13.0,并非三款不同模型。响应中的 model 会返回实际使用的版本。可通过 GET /v1/models 发现模型 ID;固定版本也可能可调用,而目录只列出别名。

输入价格为 $0.042 / 百万 token,输出免费。通过 usage.input_tokens 查看输入用量,usage.cost 查看美元费用,计费规则见计费说明。

重试与错误

超时不代表请求失败。使用相同的 Idempotency-Key、API Key 和输入重试。成功的请求返回原结果,不重复执行或扣费;换键会创建新请求。

400 / 413检查模型、问题定义和请求大小,修正输入后再发起新判断。
401 / 403检查 API Key 是否有效。
402充值 AI 余额,再使用新键发起判断。
409 request_in_progress原判断仍在处理中。等待后使用原键和原输入重试。
409 idempotency_conflict该键已对应其他输入或 API Key。重试时恢复原值;如果确实要发起新的判断,则使用新键。
502 provider_error本次判断失败。如需重新执行,使用新键创建新请求。
503 / 无响应结果尚未确认。等待后保持原键和原输入重试,不要自动换键。

限制重试次数,并逐步增加等待间隔。如果问题持续,保留错误响应和 X-Sukidata-Request-ID(如有),联系 support@sukidata.com。