跳至主要内容
返回博客

决策模型是什么?System One 模型、Jev 与 OpenAI Decisions API 对比

查看示例

system-one.dev 提供什么

system-one.dev 提供一个开源 TypeScript SDK(npm 包 @system-one-ai/core)和一个托管的 AI 决策 API。SDK 可以连接 System One API,也可以直接配置其他支持的模型服务。system-one.dev 提供的模型服务包括 Jev、Clef Flash 和 Clef。

决策模型和大模型有什么不同

按 TypeSafe 文档的说法,决策模型评估一段状态,返回类型化的答案和概率。它能像 LLM 一样读懂自然语言,但输出是决策和概率,不是生成的文本。它不写回复,不写代码,也不解释自己的推理过程。

这个名字来自丹尼尔·卡尼曼在《思考,快与慢》里推广的概念:System 1 快而直觉,System 2 慢而审慎。放到 Agent 里,就是一种分工:

  • 大模型(System 2):生成、总结、改写、解释,以及答案空间无法预先列出的开放式推理。
  • 决策模型(System 1):答案空间可以预先列出的判断,比如选哪个、打几分、是不是。

Microsoft 的 Microsoft-Decision-1 文档也是这样划分的:需要创作、总结、改写或解释内容时用生成式 LLM;也可以组合使用,先用决策模型做路由或门禁,再把通过的请求交给生成式模型。按难度把请求分给小模型或大模型的做法,本文不展开。

三种决策原语:Choice、Score、Noul

system-one.dev 提供 Choice / Score / Noul 三种原语:

  • Choice(选哪一个?):从你给的选项里选一个,并给出每个选项的概率。Agent 场景:工具与任务路由,即从预设选项中选择工具或处理路径。
  • Score(打几分?):按有序量表加权得出的分数,可以落在两档之间。Agent 场景:排序与优先级,即评价相关性、紧急程度或内容质量。
  • Noul(是不是?):“是”的概率 P(true),取值 0 到 1。Agent 场景:条件与结果检查,即判断意图、规则条件是否满足、任务是否完成。

站内对应入口:用 TypeScript 实现工具路由、选择合适的评分标准、理解是非问题的概率。

OpenAI 的叫法略有不同:是非判断叫 predicate,另外两种叫 choice 和 score,思路相同。

在线试一下:钓鱼邮件判断(示例结果,登录后可跑真实数据)

Jev 与 OpenAI Decisions API 各是什么

Jev(TypeSafe):TypeSafe 的旗舰模型。通过 POST /v1/systemone 调用,支持 Choice、Score、Noul。按官方文档,Jev 目前只接受文本输入(字符串、JSON 对象、文本数组),不支持图片、音频或视频。文档还提到:英语是主要训练语言,准确率也最好;包括中日韩文字在内的其他语言可以处理,但效果不一定一样好,建议先用自己的内容测试。这一点对中文开发者很重要。

OpenAI Decisions API:OpenAI 于 2026 年 10 月 6 日在开发者社区宣布向所有开发者开放公测。官方文档写明它目前处于公测阶段,预计未来几周内正式发布(GA);目前只支持 gpt-6-luna 一个模型,使用专门的 POST /v1/decisions 端点;可以评估文本、图片或两者组合(图片必须是内联 base64)。OpenAI 称它返回类型化答案的速度“约为 Responses API 的 10 倍”,这是厂商宣称,本文没有实测。

同类产品:Microsoft-Decision-1 可以在 Microsoft Foundry 中部署,同样接受文本或 JSON 状态,并支持 noul / choice / score 三种问题。RouterPlus 是一个模型网关,自己提供 Decider 2B 和 Kev 4B 两个决策模型,问题格式与 Jev 相同。

五者的逐项对比见文末对比表,每一格都标注了来源和核验日期。

System One 在其中的位置

System One 不和上面这些模型比快慢、比价格。它解决的是另一个问题:把问题定义留在你自己的代码里。

  • 用 SDK 定义问题、处理类型明确的结果;连接 System One API 使用托管服务,也可以直接配置支持的模型服务。后续流程由你的代码控制。
  • 托管 API 按积分计费:按所选模型、问题数量与字节计费块扣积分。推理前预留积分,记录为失败的推理会返还;相同 Idempotency-Key 和相同请求正文的成功重放不会再次扣费。
  • 请求限制(引自 /docs):最多 32 个问题、255 个 Choice 选项、10 个 Score 层级,嵌套深度不超过 32;纯文本请求上限 65536 字节;所选模型的限制可能更严格,以 GET /v1/models 为准。
  • 托管模型:system-one.dev 提供的模型服务:Jev(typesafe/jev)、Clef Flash(cloudflare/clef-flash)和 Clef(cloudflare/clef)。 以上据 System One API 页面的“决策模型对比”(2026-10-11);实际可用模型、价格与限制以 GET /v1/models 为准。

什么时候该用决策模型,什么时候不该用

适合用:

  • 答案空间可以预先列出:工具清单、队列、评分档位、是或否。
  • 调用频繁,对延迟或成本敏感。
  • 需要按阈值分流:高置信时自动执行,低置信时交给人工或推理模型。

不适合用:

  • 开放式生成,比如写回复、写代码、写总结。
  • 需要模型给出推理过程或解释。
  • 答案空间本身不确定。

System One 文档的建议是:先定义允许的答案空间,业务动作留在应用代码里;不确定的决策交给人工或推理模型;依赖阈值之前,先用有代表性的输入验证效果。

概率能信吗?和 logprobs 有什么区别

常见的质疑是:“这不就是 logprobs 吗?置信度从哪来?”从官方文档能确认的是以下几点:

  • TypeSafe 说 System One 模型以校准决策为训练目标,概率针对结果做了优化,用来反映不确定性。但校准是对一组预测而言的,不保证单个答案正确。
  • TypeSafe 的 confidence 是从概率分布推导出来的统计量,不是“答对的概率”。Choice 用最高概率相对于平均分布的距离来算;Score 还会考虑概率离最可能档位有多远;Noul 不单独返回 confidence。
  • 不同模型的 confidence 算法不一定相同,所以在 Jev 上调好的阈值不能直接搬到别的模型上用。OpenAI 和 Microsoft 的文档都建议用你自己应用里带标注的样例来设定阈值,并按误报和漏报的代价来取舍。

概率和 logprobs 的严格对比,本文不展开,也不作结论。

TypeScript 快速上手

下面这段代码来自开发团队提供的示例(examples/decision-articles/01-what-is-a-decision-model.ts)。它用 @system-one-ai/core 同时提出一个 Choice、一个 Score 和一个 Noul(booleanQuestion),对一条客服消息做分类和打分。分配工作仍由应用代码负责。

ts/**
 * Article 1 — What is a decision model?
 *
 * A decision model here is application-owned: shared `state` plus named
 * questions built with the published SDK. System One returns a choice, a
 * score on your rubric, and P(true). It does not classify tickets, assign
 * owners, or call tools.
 *
 * Packages used: @system-one-ai/core, adapter-system-one, transport-fetch.
 * Hosted endpoint: POST /v1/systemone (SDK path `{baseURL}/systemone`).
 * There is no separate "classify" or "score" URL.
 */
import { createSystemOne, choice, score, booleanQuestion } from '@system-one-ai/core';
import type { EvaluationClient } from '@system-one-ai/core';
import { systemOneAdapter } from '@system-one-ai/adapter-system-one';
import { createFetchTransport } from '@system-one-ai/transport-fetch';

export const classifyAndScoreQuestions = {
  team: choice('Choose the team that should review this message.', {
    billing: 'Payments, invoices, and refunds',
    support: 'Technical issues with the product',
    review: 'Needs a person; the request is incomplete or consequential',
  }),
  urgency: score('Rate urgency using this ordered rubric.', [
    'Routine review',
    'Timely response',
    'Immediate human attention',
  ]),
  refundRequested: booleanQuestion('Does the message report a request for a refund?'),
};

export function createHostedClient() {
  const apiKey = process.env.SYSTEM_ONE_API_KEY;
  const baseURL = process.env.SYSTEM_ONE_BASE_URL;
  const model = process.env.SYSTEM_ONE_MODEL;
  if (!apiKey || !baseURL || !model) {
    throw new Error('Set SYSTEM_ONE_API_KEY, SYSTEM_ONE_BASE_URL (…/v1), and SYSTEM_ONE_MODEL from GET /v1/models.');
  }
  return createSystemOne({
    apiKey,
    baseURL,
    model,
    adapter: systemOneAdapter,
    transport: createFetchTransport(),
    timeoutMs: 30_000,
    maxRetries: 0,
  });
}

/** Classify a support message and score urgency. Application code still assigns work. */
export async function classifyAndScore(client: EvaluationClient, message: string) {
  const result = await client.evaluate({
    state: { message },
    questions: classifyAndScoreQuestions,
  });
  return {
    team: result.answers.team.choice,
    urgency: result.answers.urgency.score,
    refundRequested: result.answers.refundRequested.probability,
    model: result.model,
    requestId: result.response.requestId,
  };
}

async function main() {
  const message = process.env.EXAMPLE_MESSAGE ?? 'I was charged twice. Please refund the duplicate.';
  const decision = await classifyAndScore(createHostedClient(), message);
  console.log(JSON.stringify(decision, null, 2));
}

if (process.argv[1] && import.meta.url.endsWith(process.argv[1].split(/[\\/]/).pop() ?? '')) {
  main().catch((error: unknown) => {
    console.error(error instanceof Error ? error.message : error);
    process.exitCode = 1;
  });
}

运行方式(同样来自示例 README;实际调用会产生费用,需要已有密钥和目录中的模型):

bashexport SYSTEM_ONE_API_KEY=...
export SYSTEM_ONE_BASE_URL=https://system-one.dev/v1
export SYSTEM_ONE_MODEL=...   # exact ID from GET /v1/models
node --experimental-strip-types examples/decision-articles/01-what-is-a-decision-model.ts

几点说明:

  • 托管端只有一个评估端点,POST /v1/systemone,没有单独的 classify 或 score URL。
  • 模型 ID 请从 GET /v1/models 获取,不要自己编别名。system-one.dev 提供的模型服务:Jev(typesafe/jev)、Clef Flash(cloudflare/clef-flash)和 Clef(cloudflare/clef)。
  • 没有配置凭据时,示例会直接抛出配置错误(fail closed)。

下一步:开发文档、TypeScript SDK、API 参考、定价、npm @system-one-ai/core。

表中不收录延迟数字。各家的速度说法(例如 OpenAI 称“约为 Responses API 的 10 倍”)都是厂商宣称,本文没有实测。

决策模型对比(核验日期 2026-10-11)

维度System OneJev(TypeSafe)OpenAI Decisions APIMicrosoft-Decision-1RouterPlus
形态开源 TypeScript SDK(@system-one-ai/core)+ 托管 AI 决策 API来源: System One 首页 · 核验日期 2026-10-11TypeSafe 的旗舰模型来源: TypeSafe: System One · 核验日期 2026-10-11OpenAI 的专用决策接口,模型为 gpt-6-luna来源: OpenAI: Decisions · 核验日期 2026-10-11Microsoft 的决策模型,在 Microsoft Foundry 中部署来源: Microsoft Learn · 核验日期 2026-10-11模型网关;自有决策模型 Decider 2B、Kev 4B,也转发 Jev、GPT-6 Luna Decisions 等来源: RouterPlus: POST /v1/decisions · 核验日期 2026-10-11
托管模型可用性system-one.dev 提供的模型服务:Jev(typesafe/jev)、Clef Flash(cloudflare/clef-flash)、Clef(cloudflare/clef)来源: System One API 页 · 核验日期 2026-10-11当前模型 Jev 1.13(jev-1.13.0),别名 jev-latest来源: TypeSafe: Models · 核验日期 2026-10-11公测中,目前只提供 gpt-6-luna;预计未来几周 GA来源: OpenAI: Decisions · 核验日期 2026-10-11版本 1;部署类型 GlobalStandard,部分区域支持 DataZoneStandard来源: Microsoft Learn · 核验日期 2026-10-11Decider 2B、Kev 4B 运行在 RouterPlus 自有的美国 GPU 上来源: RouterPlus: POST /v1/decisions · 核验日期 2026-10-11
输入类型文本、JSON、图片能力由实时目录逐模型声明来源: System One 开发文档 · 核验日期 2026-10-11仅文本:字符串、JSON 对象、文本数组;不支持图片、音视频来源: TypeSafe: Models · 核验日期 2026-10-11文本、图片或两者组合;图片须为内联 base64来源: OpenAI: Decisions · 核验日期 2026-10-11文本或 JSON 状态来源: Microsoft Learn · 核验日期 2026-10-11字符串或 JSON 对象、数组来源: RouterPlus: POST /v1/decisions · 核验日期 2026-10-11
问题类型Choice / Score / Noul来源: System One 首页 · 核验日期 2026-10-11Choice / Score / Noul来源: TypeSafe: System One · 核验日期 2026-10-11predicate / choice / score来源: OpenAI: Decisions · 核验日期 2026-10-11noul / choice / score来源: Microsoft Learn · 核验日期 2026-10-11choice / score / noul(与 Jev 格式相同)来源: RouterPlus: POST /v1/decisions · 核验日期 2026-10-11
是否返回概率返回 choice、score 和 noul(P(true))。原生 HTTP 中 Choice/Score 含 probabilities 与 confidence,Noul 无独立 confidence 字段来源: System One 决策原语 · 核验日期 2026-10-11是:Choice、Score 返回 probabilities 和 confidence;Noul 返回“是”的概率来源: TypeSafe: Confidence · 核验日期 2026-10-11是:predicate 返回 probability;choice、score 返回 probabilities 和 confidence来源: OpenAI: Decisions · 核验日期 2026-10-11是:noul 返回概率;choice 返回每个选项的概率;score 返回每档概率来源: Microsoft Learn · 核验日期 2026-10-11是:choice、score 返回 probabilities 和 confidence;noul 返回概率来源: RouterPlus: POST /v1/decisions · 核验日期 2026-10-11
接口POST /v1/systemone;模型目录 GET /v1/models来源: System One API 页 · 核验日期 2026-10-11POST /v1/systemone来源: TypeSafe: Models · 核验日期 2026-10-11POST /v1/decisions来源: OpenAI: Decisions · 核验日期 2026-10-11{Foundry 资源端点}/providers/microsoft/v1/systemone;model 字段填部署名来源: Microsoft Learn · 核验日期 2026-10-11POST /v1/decisions来源: RouterPlus: POST /v1/decisions · 核验日期 2026-10-11
价格积分计费:问题数 × 计费块数 × 所选模型单价;当前价格见定价页与模型目录来源: System One 积分与计费 · 核验日期 2026-10-11每百万输入 token $0.042,输出免费(jev-1.13.0)来源: TypeSafe: Models · 核验日期 2026-10-11每百万输入 token $0.10,无输出费用;区域处理与长上下文另有加价来源: OpenAI: Decisions · 核验日期 2026-10-11每百万输入 token $0.042,输出免费来源: Microsoft 发布博客 · 核验日期 2026-10-11Decider 2B、Kev 4B:输入、输出均为 $0(需组织账户有余额)来源: RouterPlus: POST /v1/decisions · 核验日期 2026-10-11
自托管 / 微调SDK 可直接配置其他支持的模型服务;自托管模型:未公布来源: System One 首页 · 核验日期 2026-10-11不用客户数据做微调或 LoRA,所有账户共用同一套权重;自托管:未公布来源: TypeSafe: Models · 核验日期 2026-10-11未公布来源: OpenAI: Decisions · 核验日期 2026-10-11在你自己的 Foundry 资源中部署;微调:未公布来源: Microsoft Learn · 核验日期 2026-10-11未公布来源: RouterPlus: POST /v1/decisions · 核验日期 2026-10-11

常见问题

决策模型会取代大模型吗?
不会。决策模型只回答答案空间有限的问题,不生成文本,也不解释推理。常见做法是两者配合:用决策模型做路由、门禁和排序,把需要生成或深度推理的请求交给大模型。
决策模型支持图片吗?
要看具体模型。按官方文档,Jev 目前只接受文本;OpenAI Decisions API 支持内联 base64 图片;Microsoft-Decision-1 的文档写的是文本或 JSON 状态。System One 托管端的输入能力由实时模型目录逐模型声明,请以 `GET /v1/models` 为准(API 页面写明 Clef/Clef Flash 支持文本、JSON 与图片,Jev 仅支持文本与 JSON)。
返回的概率能直接当作“答对的概率”吗?
不能。TypeSafe 文档写明,校准是对一组预测而言的,不保证单个答案正确;confidence 也不是答对的概率。上线前请用你自己的人工标注样本核对阈值,并按误报和漏报的代价来设定。
能自托管吗?
本站 SDK 是开源的,可以直接配置支持的模型服务。TypeSafe 文档说明 Jev 不做客户数据微调;Microsoft-Decision-1 部署在你自己的 Foundry 资源中。各家是否提供可自托管的模型权重,所核来源均未公布。
System One 怎么收费?
System One 托管 API 按积分计费,按所选模型、问题数量和字节计费块扣除;记录为失败的推理会返还预留积分。具体价格以 https://system-one.dev/zh-CN/pricing 为准。如果通过 SDK 直接连接第三方服务,由该服务按自己的账户计费,不消耗 System One 积分。