教程
OpenAI Decisions API 教程:你的第一次决策调用
本教程带你从零开始在本站 decisions-1 端点(可调用的 OpenAI Decisions API 替代方案)完成一次决策调用:获取密钥、一次 POST、读取响应中的概率、设定后续阈值。
更新于
第一步——获取密钥
打开试用台点击一次运行——访客会话、API 密钥和 2 个免费积分会自动为你创建。生产用途请登录并在控制台的 API keys 下创建命名密钥。密钥放在 Authorization Bearer 请求头里发送。
密钥只放在服务端。携带它的每个请求都会扣你的余额,切勿放进浏览器代码或公开仓库。
第二步——发送第一个请求
决策请求有三个字段:model(decisions-1 或 decisions-latest)、state(模型读取的上下文——字符串、JSON 对象或文本数组)和 questions(1 到 6 个问题 ID 的映射)。把真正的问题写进 instructions——ID 只是答案返回时使用的标签。
noul 问题是是非判断:答案字段 noul 是该陈述为真的概率。
cURL
curl https://decisions-api.net/api/v1/decisions \
-H "Authorization: Bearer $DECISIONS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "decisions-1",
"state": "I was charged twice for my subscription this morning.",
"questions": {
"refund": {
"type": "noul",
"instructions": "Is the customer asking for money back?"
}
}
}'第三步——加一个 choice 问题
choice 问题从你定义的列表中选一个标签。criteria 是 2 到 8 个选项 ID 的对象,每个带一句描述——模型读的就是描述,所以请把它写成路由规则。
score 问题类似,但 criteria 是 2 到 10 个等级描述的有序数组,从最低开始。三种类型可以混在一次调用里,最多六个问题。
JSON
{
"team": {
"type": "choice",
"instructions": "Which team should own this ticket?",
"criteria": {
"payments": "Checkout, billing, or payment processing.",
"frontend": "Rendering or browser behavior.",
"account": "Login, permissions, or profile."
}
}
}第四步——读取概率
成功响应包含 model、以你的问题 ID 为键的 answers、usage 和 credits_used。noul 答案就是一个概率。choice 答案包含胜出的 choice、每个选项的概率和置信度。
第二名和第一名同样重要。两个选项各约 0.5 和 0.9 对 0.1 是完全不同的情形——把接近的结果当复核对象,而不是自信结论。
响应
{
"model": "decisions-1",
"answers": {
"refund": { "type": "noul", "noul": 0.98 }
},
"credits_used": 1
}第五步——设阈值并处理错误
用你自己的流量定置信度阈值:高于它自动接受,其余转人工。从高值(0.7–0.8)开始,只在复核过未达标用例后才下调。
402 表示余额不足;429 或 502 表示稍后重试——失败的调用不计费。422 是请求体校验错误,报错信息会指明字段。
JavaScript
const res = await fetch('https://decisions-api.net/api/v1/decisions', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.DECISIONS_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
})
if (res.status === 402) { /* out of credits */ }
if (res.status === 429 || res.status === 502) { /* retry later */ }
const { answers } = await res.json()
const team = answers.team
if (team.type === 'choice' && team.confidence >= 0.7) {
routeTo(team.choice) // confident: auto-assign
} else {
queueForHuman(team) // low confidence or near-tie: review
}常见问题
这会调用 OpenAI 的 Decisions API 吗?
不是。本端点由本站运行的决策模型 decisions-1 提供服务。OpenAI 的 Decisions API 处于有限预览且尚无公开结构;这里的请求形式遵循相同的决策模式。
为什么返回的答案键和我发送的不一样?
是一样的——answers 以你在 questions 映射里发送的问题 ID 为键。若某个键缺失,说明该问题校验失败,调用会返回 422。
可以流式返回吗?
不可以。决策调用是单次往返,返回完整的 answers 对象,本端点不支持流式。
置信度对我的阈值意味着什么?
置信度概括了选项间的分离程度。用真实流量校准:记录几百个用例的概率,再把阈值设在自动接受不再犯你在意的错误的位置。
在试用台里跑一遍
在浏览器中运行这个请求——新访客 2 次免费调用,无需配置。