OpenAI Decisions API 사용법: 이미지 입력·음성 연동·운영 조건

OpenAI Decisions API 베타의 요청 방식과 predicate·choice·score, 이미지 입력, GPT-Live 음성 연동을 살펴봅니다. 가격과 ZDR·HIPAA·지역 처리 조건도 정리합니다.

Huuush발행 2026.10.07 · 7분 read에디터: Jay Kim

3줄 요약

  1. Decisions API는 /v1/decisions에서 predicate·choice·score 질문을 입력 순서대로 평가합니다.
  2. 입력은 텍스트와 인라인 이미지(data URL)를 지원하며 요청당 이미지 최대 128개입니다.
  3. GPT-Live 음성 대화와 연결할 때 Decisions는 앱이 전달한 transcript·상태를 평가하고 실제 동작은 앱이 검증·실행합니다.
세 가지 선택 토큰과 이미지 입력을 상징하는 구성

분류, 간단한 선택, 정해진 기준에 따른 점수 매기기를 매번 긴 모델 응답으로 처리하고 계신가요? OpenAI Decisions API는 이런 제한된 판단을 질문 유형으로 선언하고, 입력에 대한 답을 구조화해 돌려주는 베타 API입니다. 2026년 10월 6일 공개된 문서에서는 실제 요청 형식과 이미지 입력, 음성 앱 연결 방법까지 확인할 수 있습니다.

이 글은 새 API를 직접 호출하고 운영 조건을 살펴보는 데 초점을 맞춥니다. DevDay 최초 발표와 속도 비교, Jev 이야기는 기존 Decisions API 소개 글에서 이어 볼 수 있습니다.

Decisions API는 어떤 일을 하나요?

일반적인 생성 API가 폭넓은 답변을 만드는 데 쓰인다면, Decisions API는 입력에 대해 미리 정한 형태의 질문을 평가합니다. 요청은 model, 공통 input, 순서가 있는 questions로 이뤄지며, 현재 문서는 gpt-6-luna 모델을 예시로 듭니다. 정식 경로는 POST /v1/decisions입니다. 아래 세 유형을 한 요청에 함께 넣으면 입력을 공유하면서 각각 다른 결과를 받을 수 있죠.

  • predicate: 입력에 대한 명제가 참일 가능성을 숫자로 반환합니다.
  • choice: 개발자가 정한 값 중 하나를 고르고 후보별 확률과 confidence를 제공합니다.
  • score: 순서가 있는 등급을 기준으로 정수 점수와 단계별 확률을 돌려줍니다.

질문 순서가 답변 순서에 반영되므로 애플리케이션에서 대응시키기 쉽습니다. 다만 각 답은 거부(refusal)로 돌아올 수 있어, 성공한 값만 온다고 가정하지 말고 응답 유형도 확인해야 합니다.

DECISIONS · INTERACTIVE EXAMPLES

질문 유형을 눌러 결과 형태를 살펴보세요

예제 미리보기

같은 입력도 질문을 어떻게 정의하느냐에 따라 확률, 선택값, 점수로 달라집니다. 항목을 펼쳐 요청의 핵심과 응답 모양을 비교해 보세요.

01predicate 조건이 참일 가능성

입력 예

제품 사진을 살펴보고 찍힘·균열·찢김이 보이는지 확인합니다. 그림자와 포장 손상은 제외합니다.

응답 예 · 문서 발췌

{ "type": "predicate", "name": "visible_damage", "probability": 0.92 }

문서 예시 확률 92% · 임계값에 따라 검수 대상으로 분류

같은 predicate 형식은 구독 취소 의도나 답변의 관련성처럼 텍스트 조건을 판별하는 데도 쓸 수 있습니다. 이 두 예제는 공식 가이드에서 별도 입력 시나리오로 다룹니다.

02choice 정해 둔 후보 중 하나 선택

“이번 달 요금이 두 번 결제됐어요. 추가 결제를 환불해 주세요.”라는 문의를 담당 부서로 분류합니다.

결제·환불선택 · 1.00
기술 지원0.00
배송·추적0.00
기타0.00

문서의 예시 결과를 시각화했습니다. 실제 판단을 실행하거나 API를 호출하지 않습니다.

03score 정의한 기준 단계에 맞춰 점수화

패키지 상태나 이슈 심각도처럼 순서가 있는 기준을 미리 정하고 입력을 해당 단계에 배정합니다.

낮음정상 범위
보통 · 예시 선택가벼운 손상
높음큰 손상

개발자가 정한 levels의 순서와 설명이 결과 해석 기준이 됩니다.

예시와 구조는 OpenAI Decisions 공식 가이드를 참고해 자체 구성했습니다. 표시한 수치·결과는 가이드의 예시이며 실시간 API 응답이 아닙니다.

요청과 응답 예시

다음 예시는 고객 메시지가 파손 신고인지 판별하고, 처리 경로를 선택하며, 정해진 세 단계 기준으로 긴급도를 평가합니다. 실제 입력에 맞게 지시문과 선택지를 좁혀 주세요.

curl https://api.openai.com/v1/decisions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-luna",
    "input": "상자가 찌그러져 도착했고 안의 유리병도 깨졌습니다.",
    "questions": [
      {
        "type": "predicate",
        "name": "damage_report",
        "instructions": "고객이 배송 중 상품 파손을 명시적으로 신고했나요?"
      },
      {
        "type": "choice",
        "name": "route",
        "instructions": "메시지에 가장 적합한 처리 경로 하나를 고르세요.",
        "choices": [
          { "value": "replacement", "description": "상품 파손 또는 결함" },
          { "value": "tracking", "description": "배송 위치 문의" },
          { "value": "other", "description": "그 밖의 문의" }
        ]
      },
      {
        "type": "score",
        "name": "urgency",
        "instructions": "고객의 즉시 대응 필요도를 평가하세요.",
        "levels": [
          { "label": "low", "description": "긴급하지 않음" },
          { "label": "normal", "description": "일반적인 확인이 필요함" },
          { "label": "high", "description": "빠른 조치가 필요함" }
        ]
      }
    ]
  }'

응답의 answers에는 질문 유형별 결과가 입력 순서로 담깁니다. predicate는 probability, choice는 고른 choice와 confidence 및 후보별 probabilities, score는 정수 score와 단계별 확률을 반환하는 형태입니다. 따라서 임계값을 적용하거나 낮은 confidence를 사람에게 넘기는 규칙을 애플리케이션 쪽에서 명시할 수 있습니다. Decisions는 결과를 내며, 주문 취소나 환불 같은 실제 작업은 기존 앱의 권한·검증 로직이 맡아야 합니다.

응답에는 사용량 정보도 포함됩니다. 공식 예시에서 output_tokens는 0으로 표시되지만, 이를 모든 요청의 무료 처리나 무과금 근거로 해석해서는 안 됩니다. 요청별 비용과 실제 청구는 조직의 사용량·청구 내역에서 확인하세요.

이미지도 입력할 수 있습니다

입력은 문자열 또는 user 메시지 배열이며, 메시지 본문에는 텍스트와 인라인 이미지를 함께 넣을 수 있습니다. 예컨대 고객 설명과 제품 파손 사진을 한 입력으로 보내 판정하게 할 수 있습니다. 이미지에는 외부 URL이나 파일 ID가 아니라 data URL을 사용하며, 요청 전체에서 최대 128개까지 허용됩니다.

{
  "model": "gpt-6-luna",
  "input": [
    {
      "role": "user",
      "content": [
        { "type": "input_text", "text": "사진에 상품 파손이 보이나요?" },
        {
          "type": "input_image",
          "image_url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...",
          "detail": "auto"
        }
      ]
    }
  ],
  "questions": [
    {
      "type": "predicate",
      "name": "visible_damage",
      "instructions": "이미지에 배송 상품의 파손이 명확히 보이나요?"
    }
  ]
}

이 입력 경로가 오디오나 임의 파일까지 받는 것은 아닙니다. 문서상 지원 입력은 user 역할의 텍스트와 인라인 이미지이며, 오디오·파일·도구 호출·비-user 메시지·이전 item 참조는 지원하지 않습니다. 이미지도 API가 허용하는 data URL 형식인지 확인해야 합니다.

GPT-Live 음성 앱과는 어떻게 연결하나요?

Decisions API가 음성을 직접 듣는 방식은 아닙니다. 음성 대화는 GPT-Live가 처리하고, 애플리케이션이 대화 transcript와 현재 상태를 Decisions에 전달해 제한된 선택을 받는 구조입니다.

OpenAI 가이드의 브라우저 예에서는 앱이 발화 내용과 현재 페이지 상태를 함께 보내 back, reload, noop 중 하나를 고르게 합니다. 앱은 응답이 현재 상태에서도 유효한지 검사한 뒤 동작을 실행하고, 결과를 Live 세션에 돌려줍니다. 사용자가 취소했거나 상태가 바뀌었다면 오래된 선택을 실행하지 않도록 처리합니다. 복잡한 설명이나 계획이 필요한 경우에는 별도의 모델 호출로 넘기는 분기도 둘 수 있습니다.

즉, GPT-Live는 자연스러운 실시간 대화를 담당하고 Decisions API는 앱이 넘긴 텍스트 맥락 안에서 정해진 선택지를 평가합니다. 권한 확인과 실제 동작은 애플리케이션이 통제합니다. 음성 연결 공식 가이드와 GPT-Live 가이드에서 전체 흐름을 볼 수 있습니다.

가격표에서 확인할 수 있는 범위

2026년 10월 7일 확인한 OpenAI API 가격표에는 GPT-6 Luna의 표준 입력이 백만 토큰당 $0.10, 캐시 입력이 $0.01, 캐시 쓰기가 $0.125, 출력이 $0.50으로 표시돼 있습니다. 그러나 공개 가격표에는 Decisions API 전용 단가가 별도 항목으로 명시돼 있지 않습니다.

따라서 위 Luna 가격을 Decisions 전용 확정 요금이라고 부를 수는 없습니다. Decisions 응답의 usage 정보를 확인하고, 실제 적용 단가와 캐시 조건은 프로젝트 사용량 및 청구 내역으로 대조하는 편이 안전합니다. 가격은 바뀔 수 있으므로 도입 시점의 공식 API 가격표를 다시 확인하세요.

ZDR, HIPAA, 데이터 지역은 각각 확인해야 합니다

민감한 정보를 다룬다면 API 사용 가능 여부만으로 조직의 데이터 정책을 판단하기 어렵습니다. OpenAI 문서는 보관 설정과 처리 지역을 별도 항목으로 설명합니다.

  • HIPAA: 적격 사용은 OpenAI와 BAA 및 Healthcare Addendum을 체결하고 조직 설정 요건을 충족하는 경우에 한정됩니다. 모든 계정에 자동 적용되는 자격이 아닙니다.
  • ZDR: 데이터 보관을 줄이기 위한 조직·프로젝트 설정과 endpoint별 조건을 확인해야 합니다. 이미지·파일 관련 안전 검토에는 별도 보존 예외가 적용될 수 있습니다.
  • 지역 저장과 지역 추론: 특정 지역에 저장할 수 있다는 표시는 해당 지역에서 추론 처리된다는 뜻과 다릅니다. 현재 문서의 Decisions 지역 추론 표기는 미국과 유럽(EEA 및 스위스)으로 구분돼 있습니다.

OpenAI 데이터 제어 표에서 한국은 regional storage 지원(Yes), regional processing 미지원(No)으로 구분됩니다. Decisions API의 지역 내 추론 처리는 미국과 유럽(EEA 및 스위스) 지원으로 안내돼 있어, 한국에 저장하는 설정과 한국에서 추론하는 지원을 혼동하면 안 됩니다. 실제 적용 전에는 조직 계약과 프로젝트 설정, endpoint의 최신 제한을 함께 확인하세요.

자주 묻는 질문

predicate는 명제의 probability, choice는 지정한 값 중 하나와 후보별 확률, score는 정의한 단계에 대한 정수 점수와 확률을 반환합니다.

가능합니다. user 메시지의 input_image에 인라인 data URL을 넣으며, 요청 전체 최대 128개입니다. 외부 이미지 URL과 파일 ID는 지원 입력이 아닙니다.

확인한 공개 가격표에는 Decisions 전용 단가가 별도로 표시되지 않습니다. Luna 토큰 단가를 전용 확정 요금으로 단정하지 말고 사용량과 청구 내역을 확인해야 합니다.

아닙니다. HIPAA는 BAA·Healthcare Addendum 및 조직 요건이 필요하고, ZDR은 프로젝트와 endpoint별 보관 설정·조건을 확인해야 합니다.

함께 보면 좋은 글

출처

작성자 소개

제이킴유니버스

제이킴유니버스

AI 자동화와 홈페이지 제작으로 업무 시간을 줄이고 매출을 만듭니다.