Jev 能替代 ChatGPT 吗? 不能整体替代,只能替代其中“判断”那一步。如果你用 ChatGPT 加 JSON Schema 做分类或是非判断,这一步可以改用 Jev,直接拿到每个选项的概率。生成回复、解释原因、多步推理,仍然交给大模型。两者常常一起用。
一句话区别:生成文本 vs 回答类型化问题
ChatGPT 的接口是“提示词进,文本出”。即使你要求它输出 JSON,它也是一个 token 一个 token 生成出来的。
Jev 的接口是“state 加问题进,概率出”。你先写好问题和选项,Jev 只在这些选项里给出答案和概率。问题有三种:
- Choice:从选项里选一个,给出每个选项的概率。
- Score:按有序量表打分。
- Noul:返回“是”的概率。
本站的 System One 是一个开源 TypeScript SDK(@system-one-ai/core)加托管 API。想先了解这类模型,见 决策模型是什么?。
对照表:同一类工作,交给谁
这张表只比接口和机制,不比准确率、速度或价格高低。
| 对比项 | ChatGPT(OpenAI API + 结构化输出) | Jev(在 system-one.dev 上) |
|---|---|---|
| 输出形状 | 生成的文本;开启结构化输出时,是符合 JSON Schema 的文本来源: OpenAI 结构化输出文档 · 核验日期 2026-10-12 | 类型化答案加概率,不生成文本来源: Jev 文档 · 核验日期 2026-10-12 |
| 答案空间 | 开放;用 enum 等字段可以限制格式 | 只能在你预先给的选项或量表里作答来源: System One 决策原语 · 核验日期 2026-10-12 |
| 不确定性信号 | 结构化输出本身不返回每个选项的概率,需要自己设计 | Choice 返回每个选项的概率,Noul 返回“是”的概率来源: System One 决策原语 · 核验日期 2026-10-12 |
| 能否解释原因 | 能,可以让它写出理由 | 不能,不解释推理过程来源: System One 文档 · 核验日期 2026-10-12 |
| 输入类型 | 文本、图片等,见 OpenAI 官方文档来源: OpenAI 结构化输出文档 · 核验日期 2026-10-12 | 文本和 JSON,不读图片来源: Jev 文档 · 核验日期 2026-10-12 |
| 计费方式 | 按 token 计费,价格见 OpenAI 官方定价页来源: OpenAI API 定价 · 核验日期 2026-10-12 | 按问题和请求字节块计积分(见下文)来源: system-one.dev 定价 · 核验日期 2026-10-12 |
| 适合的任务 | 写回复、总结、抽取任意字段、多步推理 | 分类、路由、打分、是非检查 |
真正的对手:ChatGPT + JSON Schema
很多开发者早就不用聊天界面做判断了,而是用 OpenAI API 加 JSON Schema 或函数调用。所以真正该比的是这一套写法。
结构化输出解决了什么,没解决什么
OpenAI 文档说,结构化输出能确保模型总是生成符合你给的 JSON Schema 的回答,不会漏掉必填字段,也不会编出无效的 enum 值。这解决的是格式问题。
它没解决的是:
- 不确定性:你拿到一个 enum 值,但不知道模型有多确定。想要置信度,得自己设计。
- 边界情况:OpenAI 文档也写明,模型拒答或者达到 max tokens 上限时,回答可能不符合 schema,需要你单独处理。来源:OpenAI 结构化输出文档 · 2026-10-12
你原来的 schema,对应 Jev 的哪种问题
| 原来的 schema 字段 | 对应的 Jev 问题 |
|---|---|
enum(从几个类别里选一个) | Choice |
| 评分字段(比如 1–5 分) | Score |
boolean(是或否) | Noul |
同一个任务两种写法:客服工单分流
任务:读一条客服留言,判断该交给哪个团队,以及是否要求退款。
以下两段代码都是示意代码,用来对比写法,没有经过实际运行测试。写法一是伪代码;写法二沿用本站其他文章里
@system-one-ai/core的写法。代码里不放真实的返回数字。
写法一:ChatGPT + JSON Schema(伪代码)
ts// 示意伪代码,未经测试
const schema = {
type: 'object',
properties: {
team: { type: 'string', enum: ['billing', 'support', 'review'] },
refundRequested: { type: 'boolean' },
},
required: ['team', 'refundRequested'],
additionalProperties: false,
};
// 1. 把留言和 schema 发给模型,开启结构化输出
// 2. 检查是否拒答、是否因 max tokens 截断
// 3. 解析 JSON,拿到 team 和 refundRequested
// 4. 没有每个选项的概率:要置信度,得自己另想办法
写法二:Jev + @system-one-ai/core(示意)
ts// 示意代码,未经测试
import { choice, booleanQuestion } from '@system-one-ai/core';
import type { EvaluationClient } from '@system-one-ai/core';
const ticketQuestions = {
team: choice('Choose the team that should handle this message.', {
billing: 'Payments, invoices, and refunds',
support: 'Technical issues with the product',
review: 'Needs a person; the request is incomplete or consequential',
}),
refundRequested: booleanQuestion('Does the message ask for a refund?'),
};
export async function routeTicket(client: EvaluationClient, message: string) {
const result = await client.evaluate({ state: { message }, questions: ticketQuestions });
return {
team: result.answers.team.choice,
teamConfidence: result.answers.team.confidence,
refundProbability: result.answers.refundRequested.probability,
};
}
client 的创建方式见 决策模型是什么? 里的 createHostedClient(),模型 ID 从 GET /v1/models 取,不要手抄。
差别在于:写法二直接拿到概率,代码可以按阈值分支,比如置信度低就转人工。阈值要用你自己的标注样本来定。
什么时候还是用 ChatGPT
这些事交给大模型更合适:
- 写回复、写邮件、写代码。
- 总结长文、改写语气。
- 抽取事先列不出来的任意字段。
- 多步推理,或者需要写出理由。
- 输入里有图片等非文本内容(Jev 只读文本和 JSON)。
组合模式:大模型生成,Jev 把关
Jev 先分流,拿不准再交给大模型
先用 Jev 的 Choice 分类。置信度够高,直接走对应流程;不够高,再交给大模型处理。详见 模型路由。
大模型生成后,Jev 做是非检查
大模型写完回复,再用 Jev 的 Noul 检查,比如“这条回复是否承诺了退款”。概率高就拦下或转人工。详见 Agent 护栏。想用 Score 给生成结果打分,见 用 Score 替代 LLM 当裁判。
两种模式的阈值,都要用自己的标注样本定。
那 Claude 呢?
关系一样。Claude 也是生成式大模型,也提供结构化输出:Anthropic 文档说,它通过约束解码保证回答符合 schema。来源:Claude 结构化输出文档 · 2026-10-12 上面关于 ChatGPT + JSON Schema 的分析,同样适用于 Claude。本文不对 Claude 做单独评测。
计费与试用
在 system-one.dev 上调用 Jev,按积分计费:
每 4KB 算一块,不足 4KB 也按一块;费用 = 块数 × 问题数 × 模型单价
- Jev 单价:每个问题每块 1 积分。
- 字节数是整个请求的 UTF-8 字节数,不是字符数。一个汉字约 3 字节。
- 不足一块按 1 块算。
- 例:一个 9,000 字节、2 个问题的 Jev 请求 = 2 × 3 × 1 = 6 积分。
新账号注册即送 100 积分,积分不过期。模型用完整的模型 ID 选择,ID 从 GET /v1/models 取。详见 定价。
ChatGPT 按 token 计费,和本站的计费方式不同,不能直接比单价。请用自己的典型请求分别算。
想试一下?在线试用(需登录)。