缓存时间:
2026/10/06 23:54
# Decisions | OpenAI API
来源:https://developers.openai.com/api/docs/guides/decisions
Decisions API 会对文本、图片或二者进行评估,并返回有类型的答案,速度比 Responses API 快约 10 倍。获取某个条件为真的概率、从固定选项集合中做出选择,或根据评分标准进行打分。利用这些答案,在你的应用中实现内容分类、请求路由和任务优先级排序。
在 Playground(https://platform.openai.com/decisions)中体验 Decisions API,在编写代码之前先试验问题和输入。
Decisions API 目前处于公开测试阶段,预计将在未来几周内正式发布(GA)。目前唯一可用的模型是 `gpt-6-luna`。请使用专用的 `POST /v1/decisions` 端点。
一个请求包含三个部分:
字段 | 用途
--- | ---
`model` | 用于评估请求的模型。目前仅支持 `gpt-6-luna`。
`input` | 所有问题的共享证据:一个文本字符串,或包含文本和图片的用户消息。
`questions` | 要评估的内容,包括每个问题的类型、指令,以及允许的选项或评分等级。
响应中包含一个 `answers` 数组。为每个问题指定一个唯一的 `name`,用于识别其答案;API 会在响应中回显该名称。
### 选择问题类型
类型 | 用途 | 主要结果
--- | --- | ---
`predicate` | 检查某个条件,例如是否存在可见损坏或某段内容是否相关。 | `probability`:该条件为真的估计值,范围从 0 到 1。
`choice` | 从选项中选择一个,例如某个部门或内容类别。 | `choice`:你提供的某个值。
`score` | 根据有序的等级对输入进行评分,例如问题严重程度。 | `score`:各等级索引的概率加权平均值。
`choice` 和 `score` 都会返回离散选项上的概率分布。对于没有顺序的类别(例如部门),请使用 `choice`。对于有序的等级(例如严重程度),请使用 `score`;它会对各等级的数字索引求概率加权平均,从而产生一个可能落在等级之间的分数。
当你的应用需要上述某类答案时,请使用 Decisions。当你需要使用 Responses API 生成符合你自己 JSON schema 的对象(例如提取出的字段或书面解释)时,请使用 Structured Outputs(https://developers.openai.com/api/docs/guides/structured-outputs);当需要模型以带参数的方式发起工具调用时,请使用 function calling(https://developers.openai.com/api/docs/guides/function-calling)。
使用 `predicate` 问题来检查产品照片中是否存在可见损坏。此请求将图片与"检查裂纹、撕裂或凹痕"的指令结合在一起。
```
IMAGE_BASE64="$(base64 < product.png | tr -d '\r\n')"
curl https://api.openai.com/v1/decisions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<JSON
{
"model": "gpt-6-luna",
"input": [{
"role": "user",
"content": [
{"type": "input_text", "text": "Inspect the product in this photo."},
{"type": "input_image", "image_url": "data:image/png;base64,$IMAGE_BASE64"}
]
}],
"questions": [{
"type": "predicate",
"name": "visible_damage",
"instructions": "Does the product have visible damage, such as a crack, tear, or dent? Ignore shadows and damage to the packaging."
}]
}
JSON
```
响应示例节选:
```
{
"answers": [
{
"type": "predicate",
"name": "visible_damage",
"probability": 0.92
}
]
}
```
`probability` 是模型对该条件为真的估计值。你可以基于自己设定的阈值,用它来标记需要审核的照片。
图片必须以内联 base64 数据 URL 的形式提供。此端点不支持托管的 HTTP 或 HTTPS 图片 URL,也不支持 `file_id` 输入。请在用户消息中组合 `input_text` 和 `input_image` 部分,以便将图片与指令或其他上下文一起评估。
`choice` 问题会从你提供的选项中选择一个值。请使用互不重复的值,并为每个选项提供说明其适用场景的描述。
此请求用于路由客户投诉:
```
curl https://api.openai.com/v1/decisions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-luna",
"input": "I was charged twice for my order.",
"questions": [{
"type": "choice",
"name": "department",
"instructions": "Which department should handle this complaint?",
"choices": [
{"value": "billing", "description": "Payments, invoices, and refunds."},
{"value": "technical", "description": "Problems using the product."},
{"value": "shipping", "description": "Delivery and tracking."},
{"value": "other", "description": "Requests outside these categories."}
]
}]
}'
```
响应示例节选:
```
{
"answers": [
{
"type": "choice",
"name": "department",
"choice": "billing",
"probabilities": [
{ "value": "billing", "probability": 0.95 },
{ "value": "technical", "probability": 0.02 },
{ "value": "shipping", "probability": 0.01 },
{ "value": "other", "probability": 0.02 }
],
"confidence": 0.93
}
]
}
```
答案的 `choice` 字段包含你提供的某个值,这里即 `"billing"`。响应中还包含各选项的 `probabilities` 数组以及 `confidence` 字段。关于如何设置阈值,请参阅解读答案(https://developers.openai.com/api/docs/guides/decisions#interpret-the-answers)。
当你的类别无法覆盖所有可能的输入时,请包含一个回退选项,例如 `"other"`。你的应用可以将该结果发送到通用审核队列。
`score` 问题会根据有序的 `levels` 对输入进行评估。请为每个等级定义标准,并按从低到高的顺序排列。
```
curl https://api.openai.com/v1/decisions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-luna",
"input": "Export fails in Safari but works in Chrome.",
"questions": [{
"type": "score",
"name": "severity",
"instructions": "How severe is this issue?",
"levels": [
{"label": "Cosmetic", "description": "Appearance only; no lost functionality."},
{"label": "Workaround available", "description": "A task fails, but another way works."},
{"label": "Fully blocked", "description": "A task fails with no workaround."}
]
}]
}'
```
响应示例节选:
```
{
"answers": [
{
"type": "score",
"name": "severity",
"score": 1.1,
"probabilities": [
{ "value": 0, "label": "Cosmetic", "probability": 0.1 },
{ "value": 1, "label": "Workaround available", "probability": 0.7 },
{ "value": 2, "label": "Fully blocked", "probability": 0.2 }
],
"confidence": 0.55
}
]
}
```
等级索引从 0 开始。这里,0 表示外观层面的问题,1 表示存在可用的替代方案,2 表示完全受阻。返回的 `score` 是概率加权平均值,因此可能落在等级之间。在本示例中,0.1、0.7 和 0.2 的概率产生了 1.1 的分数。
答案中还包含 `confidence` 以及各等级的 `probabilities`。该分数概括了各等级上的概率分布。如需选择单一类别,请使用 `choice`。
将相互独立的问题放在同一个 `questions` 数组中,即可对共享的输入进行评估。对于一张产品照片,你可以在一个请求中同时检查损坏情况并对产品进行分类。每个问题可以使用不同的类型。
对于依赖前一个答案的决策,请发送单独的请求。例如,先检查是否存在损坏,再根据结果决定是否请求一个维修类别。
请围绕可观察的标准来编写问题。将不同的关注点拆分为不同的问题,为各个选项赋予不同的含义,并确保相邻的评分等级具有明确的标准。
Predicate 返回条件为真的估计概率。Choice 和 score 答案返回概率分布以及单独的 `confidence` 字段。
使用应用中标注好的示例来为路由、过滤或审核设置阈值。请根据假阳性和假阴性的代价来选择阈值。
使用 `gpt-6-luna` 时,输入成本为 **每 100 万 token $0.10**。你只需为输入 token 付费:不收取缓存读取、缓存写入或输出 token 的费用。
区域处理附加费和长上下文输入定价倍数同样适用。这些费率适用于 `/v1/decisions`;其他使用 `gpt-6-luna` 的请求则遵循相应的模型和处理层级定价(https://developers.openai.com/api/docs/pricing)。
Decisions API 支持零数据保留(ZDR)和 HIPAA 用例(面向符合条件的客户)。在美国和欧洲(欧洲经济区 + 瑞士)支持数据驻留和区域处理。有关资格要求、所需协议和限制,请参阅数据控制(https://developers.openai.com/api/docs/guides/your-data)。
使用与 Live API 的客户端委派(https://developers.openai.com/api/docs/guides/decisions-voice),从语音请求中选择操作并向用户报告其结果。