판정 — /v1/decisions
질문에 답과 확률만 받는 판정. 글을 만들지 않아 입력 단가만 있습니다.
글을 길게 쓰게 하지 않고, 정해 둔 질문에 답과 확률만 받는 문이에요. 문의 분류 · 다음 처리 고르기 · 체크리스트 채점처럼 답이 보기 안에 있는 일에 써요. OpenAI Decisions API 와 같은 모양이라 openai SDK 의 decisions.create 를 그대로 쓰시면 돼요(openai 7.56 이상 · SDK 동작). 질문은 세 종류예요 — predicate(문장이 참일 확률), choice(보기 중 하나와 보기마다 확률), score(낮은 단계부터 적은 단계 위의 점수). 한 요청에 질문을 여러 개 넣어도 입력은 한 번만 세요.
curl https://oneport.kr/v1/decisions \
-H "Authorization: Bearer $ONEPORT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-luna",
"input": "지난주에 산 좌석 두 개 중 하나를 환불하고 싶어요",
"questions": [
{ "name": "refund", "type": "predicate", "instructions": "환불을 요청하는 글인가?" },
{ "name": "team", "type": "choice", "instructions": "어느 팀이 받을 글인가?",
"choices": [{ "value": "billing" }, { "value": "account" }, { "value": "tech" }] }
]
}'import os
from openai import OpenAI
client = OpenAI(base_url="https://oneport.kr/v1", api_key=os.environ["ONEPORT_API_KEY"])
text = "오늘 2교시 수업 자료가 안 열려요"
r = client.decisions.create(
model="gpt-6-luna",
input=text,
questions=[{"name": "urgent", "type": "predicate", "instructions": "오늘 안에 답해야 하는 글인가?"}],
)
answer = r.answers[0]
if answer.type == "predicate":
print("급함" if answer.probability >= 0.8 else "보통", round(answer.probability, 2))요청 파라미터#
요청 본문 (JSON)
| 파라미터 | 받는 값 | 저희가 하는 일 |
|---|---|---|
| model필수 | 판정 모델 id | 공식 SDK 예제 그대로 gpt-6-luna 로 보내셔도 되고, GET https://oneport.kr/v1/models 에서 kind 가 "decision" 인 줄의 id 로 보내셔도 같아요. 글로 답을 받으려면 /v1/chat/completions 예요. 문자열이 아니거나 비었으면 400(error.param model), 판정 모델이 아니면 404 model_not_found 예요. |
| input필수 | 문자열 또는 메시지 배열 | 판정할 글이에요. 메시지 배열(role · content)과 그림 조각(input_image · base64 data URL 또는 공개 https 주소)도 받아요(벤더 동작). 빈 문자열 · 빈 배열이면 400(error.param input)이에요. |
| questions필수 | 질문 1~400개 | 질문마다 type 과 instructions(무엇을 판정할지)가 있어요. choice 는 choices(보기 2~255개 · 보기마다 value, description 은 넣어도 되고 빼도 돼요), score 는 levels(낮은 단계부터 · 단계마다 label)가 있어야 해요. name 을 주면 답에 같은 name 이 와요. 401개 이상이거나 칸이 빠졌으면 저희가 보내기 전에 400 이고 error.param 이 그 칸(예: questions.3.choices)을 가리켜요 — 그 밖의 모양(이름 꼴 · 보기 값 중복 등)은 모델 회사가 보고, 받지 않으면 400 vendor_rejected 예요. 답은 보낸 순서대로 와요. |
| prompt_cache_key · prompt_cache_options · safety_identifier | 벤더 문서에 있는 값 | 저희가 거르지 않고 그대로 넘겨요. 같은 글에 질문만 바꿔 자주 부르면 앞부분이 캐시되어 그 몫은 캐시 단가로 세요(벤더 동작). |
응답과 값#
응답은 OpenAI 가 보낸 몸통 그대로예요 — answers[](보낸 순서 · 질문마다 type 과 name) · model · usage. predicate 는 probability, choice 는 choice · confidence · probabilities[](value · probability), score 는 score · confidence · probabilities[](label · value · probability)가 와요. 어떤 질문은 답 대신 type "refusal" 로 올 수 있고, 같은 요청의 다른 질문은 그대로 답해요(벤더 동작) — 코드에서 refusal 을 먼저 거르세요. 확률을 어디서 끊을지(예: 0.8)는 실제 글 몇 개로 재서 정하시고, 모델을 바꾸면 다시 재세요 — 모델마다 확률이 퍼지는 모양이 달라요.
값은 입력에만 붙어요 — usage.input_tokens 중 캐시 안 된 몫은 input 단가, usage.input_tokens_details.cached_tokens 는 캐시 단가로 세고(GET https://oneport.kr/v1/models 의 pricing), 출력은 0 이에요. 질문 4개와 한국어 한 줄이면 입력이 약 620토큰이라 한 번에 약 0.06 크레딧이에요(11월 실측) — 1,000번이면 약 57 크레딧이에요. 이 문 응답엔 글 문의 usage.cost_credits 가 없어요 — 벤더 몸통을 그대로 드려서요. 부르기 전에 (본문 바이트 ÷ 2 + 질문 수 × 200) 토큰어치(최소 1,000토큰)를 잡아 두고, 답을 보낸 직후 실제 usage 로 정산해요 — 잡아 두는 몫은 어림에 쓰지 마세요. 보낸 글은 저희 사용 기록에 남기지 않아요 — 모델 · 토큰 수 · 성공/실패 · 요청 ID 만 남기고, 글은 판정하러 OpenAI 로만 가요. 스페이스 키면 글 문과 같은 전송 정책이 질문 · 보기 글까지 걸려요 — 가림 규칙이 바꾼 낱말은 바뀐 채로 판정돼요.
실패하면 받은 것마다 이렇게 해요.
| 받은 것 | 할 일 |
|---|---|
| 400(reason 없음) · 401 · 403 · 404 | 멈추고 문장대로 고쳐요 — error.param 이 고칠 칸이에요. |
| 400 vendor_param_rejected | error.param 칸 값을 고쳐요(나눠도 같아요). |
| 400 vendor_rejected · 413(몸통이 글자) · 400 space_content_policy(code content_limit) · 504 | 질문이나 입력을 나눠 보내요. |
| 402 hold_exceeds_balance · 429 key_month_limit · hold_exceeds_key_limit · group_budget | 질문 수나 입력을 줄여요(작게 보내도 막히면 멈춰요). |
| 402 · 429 held_by_others | Retry-After(5초) 뒤 그대로 보내요. |
| 429 rate_limit_error | Retry-After(1~60초) 뒤 그대로 보내요. |
| 503 api_error | Retry-After(2초) 뒤 그대로 보내요. |
| 502 upstream_error · space_content_policy 503(code policy_unavailable) · 409(code policy_changed) | 몇 초 쉬고 그대로 보내요(Retry-After 없음). |
| 402 below_minimum_balance · 429 key_day_limit · group_closed · group_not_started · group_ended | 멈춰요 — 충전 · 한국 시간 내일 0시 · 스페이스 관리자. |
| 상태 코드 없음(연결 오류 · 시간 초과) | 이미 차감됐을 수 있어요 — 다시 보낼지 직접 정해요. |
이 문이 받는 모델#
판정
| 모델 | 입력100만 토큰당 크레딧 |
|---|---|
| gpt-6-luna-decisionsGPT-6 Luna Decisions입력 272K 토큰 이상이면 입력 184 · 출력 0 | 92 |