面向 AI 助手:本页的 Markdown 版本位于 https://ark.volcengine.com/region:cn-beijing/docs/decision-model.md,全部文档索引见 https://ark.volcengine.com/llms.txt。

决策评估(beta)

决策评估可通过 System One API 将文本、图片、视频或音频等输入转换为业务可直接使用的结构化判断结果,适用于内容分类、请求路由、风险评估和优先级判断等场景。它可以返回某个条件为真的概率、从固定选项集合中选择某个选项的结果和概率,或者根据评分标准给出分数。

支持模型与 API#

  • 支持模型:

请参见决策评估能力(beta)。

  • 支持 API:

System One API(beta)

工作方式#

System One API 通过 state 和 questions 描述一次决策评估任务,并在响应的 answers 中返回结构化判断结果。

请求包含以下部分:

参数 说明
model 执行本次评估的模型 ID 或推理接入点 ID。
state 待评估内容,可以是文本、结构化 JSON 或多模态对象数组。
questions 评估问题集合。每个问题用于定义一个判断维度,包括问题类型、判断目标和判定标准。

响应中的 answers 会按问题 ID 返回结果,不同问题类型的典型场景及对应结果如下:

问题类型 典型场景 主要结果
noul 是非判断 返回 [0, 1] 区间内的概率值,表示结果符合 criteria.true 的概率。
choice 分类选择 返回概率最高的选项作为命中结果,并返回各选项的概率。
score 评分判断 返回档位编号的概率加权值,并返回各档位的概率。

典型场景#

以下示例展示决策评估在分类选择、是非判断和评分判断场景中的请求与响应。

分类选择#

分类选择可使用 choice。例如在工单路由场景中,可将处理团队写入 criteria,并增加 其他 或 信息不足 兜底选项。

请求示例如下:

Bash
curl "https://ark.cn-beijing.volces.com/api/v1/systemone" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ARK_API_KEY" \
  -H "ark-beta-systemone-api: true" \
  -d '{
    "model": "doubao-seed-2-1-lite-260915",
    "state": {
      "ticket_id": "ticket-001",
      "customer_message": "我收到的杯子有裂纹,申请退款,不接受换货。",
      "order": {
        "order_id": "order-104",
        "product": "陶瓷杯",
        "payment_status": "paid"
      }
    },
    "questions": {
      "routing_team_v1": {
        "type": "choice",
        "instructions": "根据客户反馈的主要问题选择优先处理团队。",
        "criteria": {
          "财务": "扣款、发票或退款到账问题",
          "质量": "商品损坏、质量缺陷或与描述不符",
          "物流": "配送延迟、丢件或物流状态问题",
          "信息不足": "缺少判断主要问题所需的信息"
        }
      }
    }
  }'

响应示例如下:

{
  "model": "doubao-seed-2-1-lite-260915",
  "answers": {
    "routing_team_v1": {
      "type": "choice",
      "choice": "质量",
      "confidence": 0.91,
      "probabilities": {
        "财务": 0.04,
        "质量": 0.91,
        "物流": 0.02,
        "信息不足": 0.03
      }
    }
  },
  "usage": {
    "input_tokens": 183,
    "output_tokens": 32
  }
}

是非判断#

是非判断可使用 noul。例如判断是否需要转人工时,可用 criteria.true 和 criteria.false 明确自动转人工的边界,并在业务代码中设置上下阈值。

请求示例如下:

Bash
curl "https://ark.cn-beijing.volces.com/api/v1/systemone" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ARK_API_KEY" \
  -H "ark-beta-systemone-api: true" \
  -d '{
    "model": "doubao-seed-2-1-lite-260915",
    "state": {
      "ticket_id": "ticket-002",
      "customer_message": "已经联系三次还没解决,请马上安排人工处理,否则我要投诉。",
      "order": {
        "order_id": "order-205",
        "product": "蓝牙耳机",
        "payment_status": "paid"
      }
    },
    "questions": {
      "needs_human_support_v1": {
        "type": "noul",
        "instructions": "该工单是否需要转人工处理?",
        "criteria": {
          "true": "存在退款、投诉、风险、证据不充分或客户明确要求人工介入",
          "false": "问题清晰、风险较低,且可由自动化流程处理"
        }
      }
    }
  }'

响应示例如下:

{
  "model": "doubao-seed-2-1-lite-260915",
  "answers": {
    "needs_human_support_v1": {
      "type": "noul",
      "noul": 0.94
    }
  },
  "usage": {
    "input_tokens": 169,
    "output_tokens": 18
  }
}

评分判断#

评分判断可使用 score。例如评估风险等级时,criteria 应描述同一风险维度下从低到高的档位,不要把多个维度混在一道题中。

请求示例如下:

Bash
curl "https://ark.cn-beijing.volces.com/api/v1/systemone" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ARK_API_KEY" \
  -H "ark-beta-systemone-api: true" \
  -d '{
    "model": "doubao-seed-2-1-lite-260915",
    "state": {
      "ticket_id": "ticket-003",
      "customer_message": "退款金额一直不到账,我已经准备向监管平台投诉。",
      "order": {
        "order_id": "order-309",
        "refund_status": "processing",
        "refund_amount": 299
      }
    },
    "questions": {
      "risk_level_v1": {
        "type": "score",
        "instructions": "该工单的处理风险等级是多少?",
        "criteria": [
          "风险较低,不涉及资金、合规或客户投诉",
          "存在一定风险,需要补充材料或人工确认",
          "风险较高,涉及资金损失、投诉升级或合规问题"
        ]
      }
    }
  }'

响应示例如下:

{
  "model": "doubao-seed-2-1-lite-260915",
  "answers": {
    "risk_level_v1": {
      "type": "score",
      "score": 1.82,
      "confidence": 0.88,
      "legend": {
        "0": "风险较低,不涉及资金、合规或客户投诉",
        "1": "存在一定风险,需要补充材料或人工确认",
        "2": "风险较高,涉及资金损失、投诉升级或合规问题"
      },
      "probabilities": {
        "0": 0.03,
        "1": 0.12,
        "2": 0.85
      }
    }
  },
  "usage": {
    "input_tokens": 178,
    "output_tokens": 63
  }
}

评估流程#

使用 System One API 进行决策评估时,可按以下步骤设计请求。

步骤一:设置被评估内容#

将需要评估的业务内容放入 state。state 应包含完成判断所需的事实、证据、业务对象和上下文信息,避免把判定规则混入被评估内容中。

步骤二:设置评估问题和判定标准#

在 questions 中传入评估问题,并设置以下字段:

  • type:设置问题类型,可选值为 noul、choice 或 score。
  • instructions:说明判断目标。
  • criteria:补充判定边界、候选选项或评分档位。简单场景可以只设置 instructions;需要更稳定的业务判断时,建议补充 criteria。

以下示例使用 noul 判断客户是否明确要求退款。

请求示例如下:

Bash
curl "https://ark.cn-beijing.volces.com/api/v1/systemone" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ARK_API_KEY" \
  -H "ark-beta-systemone-api: true" \
  -d '{
    "model": "doubao-seed-2-1-lite-260915",
    "state": {
      "工单": {
        "客户反馈": "收到的杯子裂了,请退回货款,我不接受换货。"
      },
      "订单": {
        "订单号": "订单-104"
      }
    },
    "questions": {
      "refund_requested_v1": {
        "type": "noul",
        "instructions": "客户是否明确要求退回已支付的款项?"
      }
    }
  }'

步骤三:处理评估结果#

读取响应中对应问题 ID 的结果,并根据业务自定义阈值或策略执行后续动作。

对于 noul 类型问题,返回值为 [0, 1] 区间内的概率值。业务代码可以根据该概率值和自定义阈值判断是否执行“是”分支、进入“否”分支或转人工复核。

响应示例如下:

{
  "model": "doubao-seed-2-1-lite-260915",
  "answers": {
    "refund_requested_v1": {
      "type": "noul",
      "noul": 0.96
    }
  },
  "usage": {
    "input_tokens": 128,
    "output_tokens": 16
  }
}

进阶使用#

多模态输入#

当 state 同时包含文本、图片、视频或音频时,可传入多模态对象数组,并在 instructions 中说明每种材料的作用,区分“用户主张”和“材料证据”,避免模型仅凭文字描述替代证据判断。

多模态内容支持以下传入方式:

  • 本地文件上传:
    • Files API 上传(推荐):适用于文件较大,或需要在多个请求中复用同一文件的场景。文件上传并变为可用后,可在 System One API 请求中引用该文件。
    • Base64 输入:适用于文件体积较小、无需复用文件的场景。
  • 公网 URL 输入:适用于文件已存在公网可访问 URL 的场景。

以下示例展示通过 file_id、公网 URL 和 Base64 传入多模态内容的方式。

Bash
BASE64_AUDIO=$(base64 < /Users/doc/demo.mp3) && curl "https://ark.cn-beijing.volces.com/api/v1/systemone" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ARK_API_KEY" \
  -H "ark-beta-systemone-api: true" \
  -d @- <<EOF
  {
    "model": "doubao-seed-2-1-lite-260915",
    "state": [
      {
        "type": "text",
        "text": "客户称杯子收到时已有裂纹,并提供了商品图片、开箱视频和客服通话录音。"
      },
      {
        "type": "image",
        "file_id": "<IMAGE_FILE_ID>",
        "detail": "high"
      },
      {
        "type": "video",
        "video_url": "https://example.com/unboxing-video.mp4",
        "fps": 1
      },
      {
        "type": "audio",
        "audio_url": "data:audio/mpeg;base64,$BASE64_AUDIO"
      }
    ],
    "questions": {
      "package_damaged_on_arrival_v1": {
        "type": "noul",
        "instructions": "图片、视频和音频证据是否支持商品到货时已破损?文本只提供客户主张,不能仅凭客户文字认定到货即破损。",
        "criteria": {
          "true": "图片或视频中可见商品破损,且音频或视频内容能够辅助确认破损发生在到货或开箱阶段",
          "false": "多模态材料无法确认商品到货时已破损,或关键证据不清晰、不连续"
        }
      }
    }
  }
EOF

同一请求传入多个问题#

如果需要基于同一份 state 完成多个相互独立的判断,可在同一次请求的 questions 中传入多道问题。每个问题只对应一个判断维度;如果某个问题依赖另一道问题的答案,建议拆分为多次请求。

以下示例使用同一份工单内容,同时判断客户是否要求退款、选择优先处理团队,并评估客户不满程度。

Bash
curl "https://ark.cn-beijing.volces.com/api/v1/systemone" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ARK_API_KEY" \
  -H "ark-beta-systemone-api: true" \
  -d '{
    "model": "doubao-seed-2-1-lite-260915",
    "state": {
      "工单": {
        "客户反馈": "收到的杯子裂了,请退回货款,我不接受换货。"
      },
      "订单": {
        "订单号": "订单-104"
      }
    },
    "questions": {
      "refund_requested_v1": {
        "type": "noul",
        "instructions": "客户是否明确要求退回已支付的款项?"
      },
      "routing_team_v1": {
        "type": "choice",
        "instructions": "根据客户反馈的主要问题选择优先处理团队。",
        "criteria": {
          "财务": "扣款、发票或退款到账问题",
          "质量": "商品损坏、质量缺陷或与描述不符",
          "物流": "配送延迟、丢件或物流状态问题",
          "信息不足": "缺少判断主要问题所需的信息"
        }
      },
      "dissatisfaction_level_v1": {
        "type": "score",
        "instructions": "客户在反馈中表达的不满程度如何?",
        "criteria": [
          "平静陈述事实,没有表达不满",
          "明确表达不满,但措辞克制",
          "强烈愤怒,使用激烈措辞或威胁投诉"
        ]
      }
    }
  }'

组合使用评估结果#

业务代码不应只读取最高概率结果,还应结合 probabilities、confidence 和自定义阈值执行后续动作。

响应示例如下:

{
  "model": "doubao-seed-2-1-lite-260915",
  "answers": {
    "refund_requested_v1": {
      "type": "noul",
      "noul": 0.96
    },
    "routing_team_v1": {
      "type": "choice",
      "choice": "质量",
      "confidence": 0.91,
      "probabilities": {
        "财务": 0.04,
        "质量": 0.91,
        "物流": 0.02,
        "信息不足": 0.03
      }
    },
    "dissatisfaction_level_v1": {
      "type": "score",
      "score": 1.82,
      "confidence": 0.88,
      "probabilities": {
        "0": 0.03,
        "1": 0.12,
        "2": 0.85
      }
    }
  },
  "usage": {
    "input_tokens": 245,
    "output_tokens": 75
  }
}

业务代码可先分别读取每个问题的结果,再结合业务策略形成最终处理动作。不同类型结果可参考以下方式使用:

结果类型 示例结果 结果使用方式
noul 是非判断 refund_requested_v1.noul 为 0.96。 高于业务定义的“是”阈值时,可执行“是”分支;低于“否”阈值时,可执行“否”分支;介于两个阈值之间时进入人工复核。
choice 分类 routing_team_v1.choice 为 质量,confidence 为 0.91。 当目标选项概率和 confidence 均高于业务阈值时,可按该分类路由;confidence 低或兜底选项概率高时进入人工复核。
score 打分 dissatisfaction_level_v1.score 为 1.82。 可根据加权 score 所处的业务区间执行后续动作;最高两个档位概率接近时保留人工判断。

例如,当 refund_requested_v1.noul 高于业务定义的“是”阈值,且 routing_team_v1.choice 为 质量 时,可将工单路由到质量团队;如果任一结果置信度不足,可进入人工复核。

计费说明#

决策评估按照所选模型的输入、输出 token 计费。单次请求中的 state 和 questions 会计入输入 token,模型返回的 answers 会计入输出 token。

具体价格请参见模型价格。

使用限制与注意事项#

  • System One API 返回结构化判断结果,不用于生成面向用户的自然语言回复;如需生成客服话术、摘要、解释或完整报告,建议使用 Chat API 或 Responses API。
  • System One API 当前支持最大 128k 上下文窗口,单次请求中的 state 和 questions 共同占用上下文窗口。
  • 使用 choice 时,建议在 criteria 中设置 其他、信息不足 或 无法判断 等兜底选项,避免证据不足时被迫命中业务分类。
  • 使用 score 时,每道问题应只评估一个有序维度;不同问题的档位数量或档位含义不一致时,score 不应直接横向比较。
  • 批量评估、实时高并发评估或周期性任务中,建议控制请求并发;遇到限流或服务繁忙类错误时,使用指数退避重试。