튜토리얼
OpenAI Decisions API 튜토리얼: 첫 의사결정 호출
이 튜토리얼은 빈 계정에서 이 사이트의 decisions-1 엔드포인트(호출 가능한 OpenAI Decisions API 대안)로 실제 의사결정 호출까지 안내합니다: 키 발급, POST 한 번, 응답의 확률, 그리고 다음 동작을 위한 임계값.
업데이트
1단계 — 키 발급
플레이그라운드를 열고 Run을 한 번 누르세요 — 게스트 세션, API 키, 무료 크레딧 2개가 자동으로 만들어집니다. 프로덕션에서는 로그인 후 대시보드의 API keys에서 이름 있는 키를 만드세요. 키는 Authorization Bearer 헤더로 보냅니다.
키는 서버 측에 두세요. 이 키를 쓰는 모든 요청은 잔액에서 청구되므로 브라우저 코드나 공개 저장소에 넣지 마세요.
2단계 — 첫 요청 보내기
의사결정 요청에는 세 필드가 있습니다: 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?"
}
}
}'3단계 — choice 질문 추가
choice 질문은 정의한 목록에서 라벨 하나를 고릅니다. criteria는 2~8개 옵션 ID의 객체이며 각각 짧은 설명을 가집니다 — 모델이 읽는 것은 설명이므로 라우팅 규칙처럼 작성하세요.
score 질문도 비슷하지만 criteria는 2~10개 수준 설명의 정렬된 배열로, 낮은 순서입니다. 세 타입을 한 호출에 섞을 수 있고 총 6개 질문까지 가능합니다.
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."
}
}
}4단계 — 확률 읽기
성공 응답에는 model, 질문 ID를 키로 하는 answers, usage, credits_used가 있습니다. noul 답변은 확률 하나입니다. choice 답변에는 이긴 choice, 모든 옵션의 확률, confidence가 있습니다.
2위는 1위만큼 중요합니다. 두 옵션이 각각 0.5 근처인 것과 0.9 대 0.1은 다른 상황입니다 — 근접한 케이스는 확신이 아니라 검토 대상으로 다루세요.
응답
{
"model": "decisions-1",
"answers": {
"refund": { "type": "noul", "noul": 0.98 }
},
"credits_used": 1
}5단계 — 임계값 정하고 오류 처리하기
자체 트래픽에서 신뢰도 임계값을 정하세요: 그 이상은 수락, 나머지는 사람에게. 높게(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 객체를 반환합니다. 이 엔드포인트에는 스트리밍 모드가 없습니다.
신뢰도는 내 임계값에 어떤 의미인가요?
confidence는 옵션 간 분리도를 요약합니다. 실제 트래픽으로 보정하세요 — 수백 건의 확률을 기록하고 자동 수락이 중요한 실수를 멈추는 지점에 컷오프를 두세요.
플레이그라운드에서 시도
브라우저에서 이 요청을 실행해 보세요 — 신규 방문자 2회 무료, 설정 불필요.