跳至主要内容
System One
返回博客

决策模型和结构化输出有什么区别?用了 JSON Schema 还需要它吗

用了 JSON Schema 还需要决策模型吗? 如果 schema 里有 enum、boolean 或评分字段,并且你想按确定程度决定下一步,可以把这些字段换成决策模型的 Choice、Noul、Score 问题。需要生成文字或抽取任意内容的字段,继续用结构化输出。两者可以在同一流程里先后使用。

结构化输出保证什么,不保证什么

OpenAI 文档说,结构化输出能确保模型总是生成符合你给的 JSON Schema 的回答,不会漏掉必填字段,也不会编出无效的 enum 值。来源:OpenAI 结构化输出文档 · 2026-10-12

这解决的是格式问题。它不保证的是:

  • 值是否正确:字段合法,不代表选对了类别。
  • 有多确定:你拿到一个 enum 值,但不知道模型有多确定。
  • 边界情况:OpenAI 文档也写明,模型拒答或达到 max tokens 上限时,回答可能不符合 schema,需要单独处理。来源:OpenAI 结构化输出文档 · 2026-10-12

决策模型返回的是什么

决策模型的接口是“state 加问题进,答案和概率出”,不生成文本。state 就是你要它判断的那段内容(文本或 JSON)。问题有三种:

  • Choice:选一项,返回每个选项的概率和置信度。
  • Score:按有序量表打个分,返回每一档的概率。
  • Noul:判断是否,返回“是”的概率。

来源:System One 决策原语 · 2026-10-12

想先了解这类模型,见 决策模型是什么?。

字段对照:你的 schema 里哪些能换

原来的 schema 字段换成什么说明
`enum`(从几个类别里选一个)来源: System One 决策原语 · 核验日期 2026-10-18Choice最多 255 个选项
`boolean`(是或否)来源: System One 决策原语 · 核验日期 2026-10-18Noul返回“是”的概率
评分字段(比如 1–5 分)来源: System One 决策原语 · 核验日期 2026-10-18Score最多 10 个等级
自由文本、摘要、抽取出的名字和数字来源: System One 决策原语 · 核验日期 2026-10-18不能换继续用结构化输出

判断标准很简单:答案能不能事先列出来。能列出来的,交给决策模型;列不出来的,交给大模型生成。

“confidence”字段的问题

很多人会在 schema 里加一个 confidence 字段,让大模型自己报一个 0 到 1 的数。这个数和其他字段一样,是模型生成出来的。

决策模型的概率是按选项给出的:每个选项一个概率,由模型对这些选项的判断直接得出,不是模型写出来的一段文本。

这里只讲机制差别,不说哪个更准。不管用哪种,阈值都要在自己的标注数据上验证。

改写示例:一个工单分类 schema

原来的 schema 有 3 个字段:类别(enum)、是否紧急(boolean)、回复草稿(string)。前两个字段换成一个决策模型请求里的 Choice 和 Noul,回复草稿仍交给大模型。

以下代码都是示意代码,没有经过实际运行测试。

改写前:一个 JSON Schema

ts// 示意代码,未经测试
const ticketSchema = {
  type: 'object',
  properties: {
    category: { type: 'string', enum: ['billing', 'bug', 'account', 'other'] },
    urgent: { type: 'boolean' },
    replyDraft: { type: 'string' },
  },
  required: ['category', 'urgent', 'replyDraft'],
  additionalProperties: false,
};

改写后:判断交给决策模型,回复仍交给大模型

ts// 示意代码,未经测试
import { choice, booleanQuestion } from '@system-one-ai/core';
import type { EvaluationClient } from '@system-one-ai/core';

const ticketQuestions = {
  category: choice('Choose the category of this support ticket.', {
    billing: 'Payments, invoices, and refunds',
    bug: 'The product is broken or behaves unexpectedly',
    account: 'Login, profile, or permission issues',
    other: 'None of the above',
  }),
  urgent: booleanQuestion('Does this ticket need a response within one hour?'),
};

export async function classifyTicket(client: EvaluationClient, ticket: string) {
  const result = await client.evaluate({ state: { ticket }, questions: ticketQuestions });
  return {
    category: result.answers.category.choice,
    categoryConfidence: result.answers.category.confidence,
    urgentProbability: result.answers.urgent.probability,
  };
}

// 回复草稿:选定类别后,再用大模型的结构化输出生成,schema 只保留 replyDraft

client 的创建方式见 决策模型是什么?。模型 ID 从 GET /v1/models 读取,不要手抄。

组合用法:先判断,再生成

  1. 决策模型先判断:属于哪个分支、要不要转人工。
  2. 置信度够高,进入对应分支;不够高,转人工或交给大模型。
  3. 进入分支后,再用结构化输出生成该分支需要的内容,比如回复草稿。

阈值用自己的标注样本定。更多组合方式见 Jev 和 ChatGPT 有什么区别、Agent 工具路由 和 用决策模型给 Agent 评估做第一道关。

费用怎么算

每 4KB 算一块,不足 4KB 也按一块;费用 = 块数 × 问题数 × 模型单价。

模型每个问题每块积分
Jev1
Clef Flash3
Clef Omni4
Clef6
Decider1

来源:system-one.dev 定价 · 2026-10-12

  • 块数按整个请求的字节算,一个汉字约占 3 字节。
  • 一个请求里问的问题越多,费用按问题数相乘。上面的改写示例问了 2 个问题,费用就是 2 × 块数 × 单价。
  • 大模型按 token 计费,和这里的计费方式不同,不能直接比单价。请用自己的典型请求分别算。

新账号注册即送 100 积分,积分不会过期。怎么选模型,见 Jev、Clef、Clef Flash、Clef Omni、Decider 怎么选。

想试一下?在线试用(需登录)。

相关阅读

核验日期:2026-10-12

常见问题

结构化输出和决策模型有什么区别?

结构化输出保证生成的 JSON 格式合法;决策模型只回答预先定义的问题,并返回每个选项的概率。

用了 JSON Schema 还需要决策模型吗?

如果你需要按确定程度决定下一步,可以把 enum、boolean、评分字段换成决策模型问题。现在够用就不必换。

让大模型在 JSON 里输出 confidence 字段可靠吗?

那个数是模型生成出来的。决策模型的概率按选项给出。两者都要在自己的标注数据上验证阈值。

哪些字段不适合换?

自由文本、摘要、抽取出的名字和数字。这些事先列不出答案,继续用结构化输出。

两者怎么组合?

先用决策模型判断分支和是否转人工,再用结构化输出生成该分支需要的内容。

怎么计费、怎么试?

每 4KB 算一块,不足 4KB 也按一块;费用 = 块数 × 问题数 × 模型单价。新账号注册即送 100 积分。在线试用(需登录)。