Decision API
Models that answer typed questions with probabilities instead of chatting or writing. Use them for classification, routing, guardrails, scoring and re-ranking. They share the LLM API key and credits, but the request shape is not chat and differs per model.
Model details
GPT-6 Luna Decisions
OpenAI
OpenAI's Decisions API on GPT-6 Luna, through the gateway. Not chat: send an input (text, or user messages with text and base64 images) plus typed questions - predicate (probability a condition is true), choice (one of your options with per-option probabilities) or score (a position on your ordered levels) - and get one typed answer per question with confidence. Roughly 10x faster than a Responses call and billed on input tokens only.
Jev 1.13
TypeSafe
TypeSafe's System One model over the direct TypeSafe API. Jev does not chat or generate text: you send a state (text, object or array) plus a set of typed questions and get a structured answer for each - a yes/no probability (noul), a choice with per-option probabilities, or a score on a rubric you define - with calibrated confidence. Built for classification, routing, scoring, guardrails and re-ranking at low cost; billed on input tokens only.
판정 API (Decision) — TypeSafe Jev · OpenAI Decisions POST /llm/typesafe/v1/systemone
Jev는 TypeSafe의 System One 모델로, 대화하거나 텍스트를 생성하지 않습니다. 판정할 내용(state)과 타입이 정해진 질문 묶음(questions)을 한 번에 보내면 질문마다 확률이 붙은 구조화 답이 돌아옵니다 — 코드가 바로 비교·임계값 판단·분기할 수 있는 값이라 분류, 라우팅, 가드레일, 리랭킹, 점수화에 맞습니다. 요청 1회에 질문을 여러 개 넣어도 병렬로 평가되어 지연이 거의 늘지 않고, 입력 토큰에만 과금됩니다(출력 토큰 무료). OpenAI/Anthropic SDK나 콘솔 채팅은 쓸 수 없고 자체 JSON 스키마로 호출합니다.
질문 타입 3종
| type | 묻는 것 | criteria | 답 (answers[id]) |
|---|---|---|---|
| noul | 참인가? (예/아니오) | 선택 — {"true": "yes의 의미", "false": "no의 의미"} | {"noul": 0.95} — yes일 확률 0~1 |
| choice | 어느 선택지인가? (순서 없는 집합, 최대 255개) | 필수 — {"billing": "설명", "other": null} | {"choice", "probabilities", "confidence"} |
| score | 어느 단계인가? (순서 있는 스펙트럼, 2~10단계) | 필수 — ["Calm", "Frustrated", "Very angry"] (낮은 단계부터) | {"score", "legend", "probabilities", "confidence"} |
질문 id(예: is_urgent)는 코드용 키일 뿐 모델에 전달되지 않습니다 — instructions에 질문을 완전한 문장으로 쓰세요. state가 JSON 객체면 질문에서 `ticket.messages[0].text`처럼 백틱 경로로 특정 필드를 가리킬 수 있습니다.
요청 — 질문 3개를 한 번에
curl -X POST "https://api.core.today/llm/typesafe/v1/systemone" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer cdt_your_api_key" \
-d '{
"model": "jev-latest",
"state": "Help! My payouts have been failing for 3 days.",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Does this message convey urgency?"
},
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments, invoicing, refunds",
"technical": "Bugs, outages, integrations",
"sales": "Pricing, upgrades, new accounts"
}
},
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["Calm", "Frustrated", "Very angry"]
}
}
}'응답
{
"model": "jev-1.13.0",
"answers": {
"is_urgent": { "type": "noul", "noul": 0.95 },
"department": {
"type": "choice",
"choice": "billing",
"probabilities": { "billing": 0.84, "technical": 0.16, "sales": 0.0 },
"confidence": 0.68
},
"frustration": {
"type": "score",
"score": 1.05,
"legend": { "0": "Calm", "1": "Frustrated", "2": "Very angry" },
"probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
"confidence": 0.92
}
},
"usage": { "input_tokens": 340, "output_tokens": 51 }
}- noul: yes일 확률. 1에 가까우면 강한 yes, 0에 가까우면 강한 no, 0.5 근처는 "중간"이 아니라 불확실하다는 뜻입니다. 정도를 재려면 score를 쓰세요.
- choice:
choice는 최고 확률 선택지,probabilities는 합이 1인 분포. 답은 항상 내가 준 선택지 안에서만 나옵니다. - score:
score는 확률 가중 위치(단계 사이 값 가능), 키는 단계 번호 문자열("0"…). 임계값 판정에는 좋지만 두 단계 사이를 보간해 정밀한 수치를 복원하진 마세요. - confidence(choice·score, 0~1): 분포가 얼마나 한쪽으로 몰렸는지를 요약한 값. 높으면 자동 처리, 낮으면 큰 LLM이나 사람에게 넘기는 confidence 게이트가 기본 패턴입니다. 질문마다 답은 서로 독립이고, 응답
model에는 실제로 답한 버전 id가 옵니다.
잘 쓰는 법
- 질문 하나 = 1초짜리 판단 하나. "분석해서 최선의 조치를 정하라" 같은 추론 과제는 작은 질문 여러 개로 쪼개고 코드에서 조합합니다(가중치는 코드 상수로 두면 프롬프트를 고치지 않고 튜닝됩니다 — composite scoring).
- 같은 state에 대한 질문은 전부 한 요청에. 병렬로 평가되어 지연이 거의 같고, 과금은 질문 토큰만 추가됩니다. 쓸지 안 쓸지 모르는 질문도 미리 물어 두세요 (speculative fan-out). 앞 답에 따라 state나 선택지가 달라질 때만 2차 요청을 합니다.
- choice에는 목록 밖 입력을 받을
other옵션을 넣고, 경계 사례는criteria설명에 적습니다.instructions와criteria는 문자열뿐 아니라 JSON 객체/배열도 받습니다(질문 한 필드 + 참조 데이터 필드). - confidence 임계값을 맞췄다면 별칭 대신
jev-1.13.0으로 고정하세요. 게이트웨이는jev-latest·jev-preview를 현재 빌드로 고정해 보내므로 새 빌드는 별도 행으로 추가됩니다.
한계와 주의 (jev-1.13)
| 약점 | 대신 이렇게 |
|---|---|
| 쓴 대로만 읽음 (의도 추론 약함) | 조건을 문장으로 정확히 쓰고 경계 사례를 criteria에 |
| 세기·산수·수치 비교·날짜 계산 | 코드에서 계산. 모델에는 추출·의미 판단만 |
| 다단계 간접 추론·이중 부정 | 질문을 직접적으로, 참조 필드를 백틱 경로로 지정 |
| 무관한 내용이 많은 큰 state | 코드에서 먼저 필터링. 필요한 필드만 전송 |
| 선택지 순서에 따른 흔들림 | 순서를 바꿔 보고 일관성 확인 |
| 텍스트 생성 | 생성형 모델(채팅 API)과 짝지어 사용 |
| 언어 | 영어가 가장 정확. 한국어 등 CJK도 처리하지만 더 약함 — 자체 데이터로 검증 |
| 한도 | 요청당 64K 토큰, state + 가장 긴 질문 32K. 텍스트 입력만 |
| 오류 | 422 검증 실패(필드 누락·형식), 429/529는 지수 백오프로 재시도 |
OpenAI Decisions API POST /llm/openai/v1/decisions
콘솔에서 실행 →OpenAI 도 같은 종류의 판정 API 를 냈습니다(2026-10-22 GA, 모델 gpt-6-luna 전용). 개념은 Jev 와 같고 스키마만 다릅니다: 판정 대상은 input(텍스트, 또는 input_text·input_image 파트를 가진 user 메시지 — 이미지 입력 가능, base64 data URL 만), 질문은 questions[] 배열이고 각 질문에 name 을 붙입니다.같은 gpt-6-luna 라도 채팅과 가격이 다릅니다 — 입력 $0.10/M, 캐시 읽기 $0.01/M·쓰기 $0.125/M, 출력 무과금. 그래서 게이트웨이는 이 경로를 별도 행 gpt-6-luna-decisions로 정산합니다 (model 에 어느 id 를 써도 됨; OpenAI SDK 는 base_url 을 https://api.core.today/llm/openai/v1로 바꾸고 client.decisions.create를 그대로 호출).
| TypeSafe Jev (systemone) | OpenAI Decisions | |
|---|---|---|
| 판정 대상 | state (string | object | array) | input (string | user message[] with input_text / input_image) |
| 질문 묶음 | questions: {id: {...}} 맵 | questions: [{name, ...}] 배열 |
| 예/아니오 | type: "noul" → {noul: 0~1} | type: "predicate" → {probability: 0~1} |
| 선택 | criteria: {option: 설명|null} → {choice, probabilities{}, confidence} | choices: [{value, description}] → {choice, probabilities[], confidence} |
| 단계 | criteria: ["L0", "L1", …] → {score, legend{}, probabilities{}, confidence} | levels: [{label, description}] → {score, probabilities[{value,label,probability}], confidence} |
| 거부 | — | type: "refusal" (다른 답은 정상) |
| usage | input_tokens / output_tokens | input_tokens / input_tokens_details / output_tokens / … |
| 과금 | 입력 $0.042/M, 출력 무료 | 입력 $0.10/M, 캐시 읽기 $0.01/M·쓰기 $0.125/M, 출력 무료 (>272K 입력 2x) |
curl -X POST "https://api.core.today/llm/openai/v1/decisions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer cdt_your_api_key" \
-d '{
"model": "gpt-6-luna-decisions",
"input": "I was charged twice for my order.",
"questions": [
{"type": "predicate", "name": "is_urgent", "instructions": "Does this convey urgency?"},
{"type": "choice", "name": "department", "instructions": "Which department should handle this?",
"choices": [{"value": "billing", "description": "Payments, invoices, refunds"},
{"value": "technical", "description": "Problems using the product"},
{"value": "other", "description": "Anything else"}]},
{"type": "score", "name": "severity", "instructions": "How severe is this issue?",
"levels": [{"label": "Cosmetic"}, {"label": "Workaround available"}, {"label": "Fully blocked"}]}
]
}'{
"model": "gpt-6-luna",
"answers": [
{"type": "predicate", "name": "is_urgent", "probability": 0.92},
{"type": "choice", "name": "department", "choice": "billing",
"probabilities": [{"value": "billing", "probability": 0.95}, {"value": "technical", "probability": 0.02}, {"value": "other", "probability": 0.03}],
"confidence": 0.93},
{"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}
],
"usage": {"input_tokens": 142, "input_tokens_details": {"cached_tokens": 0, "cache_write_tokens": 0}, "output_tokens": 31, "total_tokens": 173}
}게이트웨이 제약: stream: true·GET 은 400, 채팅 경로(/v1/chat/completions등)에 gpt-6-luna-decisions 를 쓰면 400 decisions_model_path. 모델 상세: GPT-6 Luna Decisions. 원문: OpenAI Decisions guide.
| 모델 | 입력 (크레딧/1M 토큰) | 출력 (크레딧/1M 토큰) | 캐시 읽기 | 캐시 쓰기 |
|---|---|---|---|---|
usage.input_tokens× 단가로 이뤄집니다. 모델 상세·파라미터: Jev 1.13. 원문 가이드: Primitives, Confidence, Patterns, Cookbooks, API reference.