튜토리얼

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회 무료, 설정 불필요.