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 倍”)都是厂商宣称,本文没有实测。