OpenAI Decisions API vs Responses API

API Keputusan vs API Tanggapan: satu tiket dirutekan dua arah, apa yang masing-masing kembalikan, penagihan hanya input vs output beserta perhitungannya, dan matriks fitur.

INEZA Felin-Michel

INEZA Felin-Michel

10 October 2026

OpenAI Decisions API vs Responses API

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

Gunakan Decisions API ketika tugasnya adalah untuk mengklasifikasikan, merutekan, menilai, atau membatasi sesuatu dan Anda menginginkan probabilitas kembali: API ini berjalan di GPT-6 Luna, mengembalikan jawaban berjenis alih-alih teks, hanya mengenakan biaya input sebesar $0,10 per 1 juta token tanpa biaya output, baca-cache, atau tulis-cache, dan OpenAI mengatakan API ini sekitar 10x lebih cepat daripada Responses API. Gunakan Responses API ketika Anda membutuhkan teks yang dihasilkan, JSON dalam skema Anda sendiri, panggilan alat, streaming, atau status percakapan. Decisions memasuki beta publik pada 2026-10-06.

Pos ini menjalankan satu tugas (merutekan tiket dukungan) melalui kedua endpoint, membandingkan apa yang dikembalikan masing-masing, menghitung biaya sekali, dan ditutup dengan catatan migrasi serta cara untuk menguji keduanya dalam satu proyek Apidog. Untuk anatomi endpoint, mulailah dengan pilar Decisions API; untuk dasar, lihat panduan Responses API kami.

tombol

Matriks fitur

Decisions API Responses API (GPT-6 Luna)
Endpoint POST /v1/decisions POST /v1/responses
Output jawaban predicate, choice, score (ditambah refusal) dengan probabilitas dan kepercayaan dari endpoint Teks yang dihasilkan, atau JSON yang mengikuti skema Anda melalui text.format
Skema JSON Anda sendiri Tidak Ya, json_schema dengan strict: true
Alat / pemanggilan fungsi Tidak Ya
Streaming Tidak Ya
Status percakapan Tidak Ya
Prompt caching Tidak ada biaya cache; menurut forum OpenAI, belum ada caching Ya, input yang di-cache $0,01 per 1 juta
Batch Tidak didokumentasikan Ya, 50% dari standar
Gambar Ya, URL data base64; referensi juga mencantumkan URL HTTP(S) publik, hingga 128 per permintaan Ya, Luna menerima teks dan gambar
Keputusan berantai (bergantung) Permintaan terpisah Satu respons yang dihasilkan dapat membawa bidang-bidang yang bergantung
Harga per 1 juta, konteks singkat $0,10 input; tanpa biaya output $0,10 input, $0,50 output termasuk token penalaran
ZDR / HIPAA Didukung untuk pelanggan yang memenuhi syarat; pemrosesan regional di AS dan UE Tidak dibahas dalam perbandingan ini; lihat halaman kontrol data OpenAI

Setiap baris berasal dari panduan Decisions OpenAI, referensi API, dan halaman harga.

Pekerjaan yang sama dengan dua cara: merutekan tiket dukungan

Tiket berbunyi “Saya ditagih dua kali untuk pesanan saya.” Departemen-departemennya adalah penagihan, teknis, pengiriman, dan lainnya. Berikut adalah permintaan Responses dengan Output Terstruktur, yang merupakan cara kebanyakan tim melakukannya saat ini:

curl https://api.openai.com/v1/responses \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-luna",
    "input": "Route this support ticket to one department.\n\nTicket: I was charged twice for my order.",
    "text": {
      "format": {
        "type": "json_schema",
        "name": "ticket_route",
        "strict": true,
        "schema": {
          "type": "object",
          "properties": {
            "department": {
              "type": "string",
              "enum": ["billing", "technical", "shipping", "other"]
            }
          },
          "required": ["department"],
          "additionalProperties": false
        }
      }
    }
  }'

Dan permintaan Decisions untuk tiket yang sama:

curl https://api.openai.com/v1/decisions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-luna",
    "input": "I was charged twice for my order.",
    "questions": [
      {
        "type": "choice",
        "name": "department",
        "instructions": "Which department should handle this ticket?",
        "choices": [
          {"value": "billing", "description": "Charges, refunds, invoices"},
          {"value": "technical", "description": "Bugs, errors, login problems"},
          {"value": "shipping", "description": "Delivery, tracking, returns in transit"},
          {"value": "other", "description": "Anything else"}
        ]
      }
    ]
  }'

Body Responses membawa pertanyaan di dalam prompt dan jawaban yang diizinkan di dalam skema. Body Decisions membawa tiket mentah sebagai input dan pertanyaan sebagai choice dengan 2 hingga 255 nilai unik; ia tidak memiliki bidang temperature, reasoning, stream, atau text, karena tidak ada di endpoint tersebut.

Apa yang dikembalikan masing-masing

Responses mengembalikan teks yang dihasilkan. Dengan skema yang ketat, teks tersebut adalah JSON yang valid, jadi setelah parsing Anda memegang label:

{"department": "billing"}

Jika Anda menginginkan angka kepercayaan, Anda menambahkan bidang ke skema dan meminta model untuk menuliskannya; yang kembali adalah teks yang dihasilkan yang terlihat seperti probabilitas, bukan yang terukur.

Decisions mengembalikan label ditambah distribusi di baliknya. Angka-angka di bawah ini adalah contoh panduan OpenAI untuk input yang persis sama:

{
  "model": "gpt-6-luna",
  "answers": [
    {
      "type": "choice",
      "name": "department",
      "choice": "billing",
      "probabilities": [
        {"value": "billing", "probability": 0.95},
        {"value": "technical", "probability": 0.02},
        {"value": "shipping", "probability": 0.01},
        {"value": "other", "probability": 0.02}
      ],
      "confidence": 0.93
    }
  ]
}

Objek usage mengikuti answers (ditampilkan di bagian biaya). Tanpa parser, tanpa regex. Bidang confidence adalah yang Anda gunakan sebagai ambang batas, dan panduan OpenAI adalah mengatur ambang batas tersebut dari contoh berlabel Anda sendiri, karena tidak ada angka akurasi atau kalibrasi yang dipublikasikan. Penolakan tiba sebagai {"type": "refusal", "name": "department"}; pertanyaan lain dalam permintaan yang sama tetap mendapatkan jawaban.

Biaya: perhitungan sekali

Kedua endpoint mengenakan biaya input Luna sebesar $0,10 per 1 juta token dalam konteks singkat (hingga 272 ribu token input). Perbedaannya ada pada output. Ambil tiket 500-token untuk 1.000.000 permintaan:

Jadi, selisih yang terlihat pada label saja adalah $50 berbanding $70. Selisih yang lebih besar adalah pada baris penalaran, dan cara jujur untuk menyatakannya adalah bahwa Decisions tidak mengenakan biaya token output sama sekali; kedua penghitung membaca 0 dalam contoh referensi OpenAI:

"usage": {
  "input_tokens": 42,
  "input_tokens_details": {"cached_tokens": 0, "cache_write_tokens": 0},
  "output_tokens": 0,
  "output_tokens_details": {"reasoning_tokens": 0},
  "total_tokens": 42
}

Dua peringatan. Responses memiliki fitur yang tidak dimiliki Decisions: reasoning.effort bisa diturunkan hingga none di Luna, prompt caching mengurangi input berulang menjadi $0,01 per 1 juta, dan Batch API memotong setengah tarif standar. Tak satu pun dari itu didokumentasikan untuk Decisions. Dan input konteks panjang (lebih dari 272 ribu token) menggandakan tarif input pada keduanya, jadi permintaan Decisions yang panjang adalah $0,20 per 1 juta input (berasal dari pengganda halaman harga); pemrosesan regional menambahkan 10%.

Kecepatan

OpenAI mengatakan Decisions API sekitar 10x lebih cepat daripada Responses API. Tidak ada angka latensi absolut yang dipublikasikan, jadi perlakukan klaim tersebut sebagai arah daripada anggaran dan ukur p50 dan p95 Anda sendiri sebelum Anda memindahkan jalur kritis. Seorang pengembang di forum OpenAI melaporkan keputusan input gambar kembali dalam sekitar 0,8 detik pada koneksi lambat; itu adalah anekdot, bukan tolok ukur. Arah ini masuk akal: Responses menghasilkan token, termasuk penalaran, dan Anda menunggu yang terakhir.

Aturan keputusan

Pilih Decisions ketika outputnya adalah salah satu dari berikut ini:

Pilih Responses ketika salah satu dari ini benar:

Banyak pipeline menginginkan keduanya: Decisions untuk mengklasifikasikan dan membatasi, Responses untuk menulis balasan.

Migrasi pengklasifikasi dari Responses ke Decisions

Jika Anda sudah merutekan tiket dengan skema enum yang ketat, perpindahannya kecil:

  1. Pertahankan input yang sama, dipreteli kembali ke tiket mentah; pertanyaan dipindahkan keluar dari prompt.
  2. Letakkan pertanyaan di questions sebagai choice, dengan nilai enum Anda sebagai choices[].value dan description satu baris masing-masing. Nilai dapat berupa string atau boolean, dan true serta "true" berbeda.
  3. Hapus parser. Baca answers[0].choice dan answers[0].confidence; jawaban tiba dalam urutan yang Anda minta dan menggemakan name yang Anda atur. Kemudian atur ambang batas dari sampel berlabel.
  4. Periksa jalur input. Decisions hanya menerima pesan pengguna: tidak ada peran sistem atau asisten, tidak ada panggilan fungsi, tidak ada file, tidak ada file_id. Gabungkan aturan prompt sistem ke dalam instructions atau deskripsi pilihan. Gambar masuk sebagai URL data base64; referensi juga mencantumkan URL HTTP(S) publik, jadi uji gambar yang di-hosting terlebih dahulu.
  5. Pisahkan rantai. “Klasifikasikan, lalu jika penagihan putuskan kelayakan pengembalian dana” menjadi dua permintaan.

Uji keduanya dalam satu proyek Apidog

Cara paling bersih untuk memutuskan adalah dengan menjalankan kedua permintaan terhadap tiket berlabel yang sama dan membandingkannya. Di Apidog, simpan kunci sekali sebagai variabel lingkungan dan referensikan {{OPENAI_API_KEY}} di header Authorization: Bearer dari kedua permintaan yang disimpan, sehingga tidak ada kunci literal yang masuk ke body yang disimpan.

Berikan kedua permintaan penegasan yang sama: departemen sama dengan billing. Pada permintaan Decisions, itu adalah penegasan JSONPath pada $.answers[0].choice, dengan $.answers[0].confidence lebih besar dari 0,8 dan $.usage.output_tokens sama dengan 0 di sampingnya. Pada permintaan Responses, label berada di dalam teks yang dihasilkan, jadi skrip pasca-permintaan singkat menguraikannya menjadi variabel yang diperiksa oleh penegasan. Kemudian bandingkan usage pada kedua respons: Decisions melaporkan nol token output dan penalaran, Responses tidak.

Ubah pasangan tersebut menjadi skenario pengujian berbasis data melalui CSV teks tiket dan departemen yang diharapkan, dan jalankan untuk melihat berapa banyak tiket yang dirutekan dengan benar oleh setiap endpoint di atas garis kepercayaan Anda. Mock array answers agar router dapat dibangun terlebih dahulu, seperti dalam respons mock kondisional, dan jalankan skenario di CI dengan Apidog CLI sehingga perubahan kata atau alias model akan menyebabkan pengujian gagal alih-alih salah merutekan tiket. Lihat pengujian aplikasi LLM untuk pola penegasan lebih lanjut.

FAQ

Bisakah Responses API mengembalikan probabilitas seperti Decisions? Tidak sebagai nilai terukur. Bidang confidence dalam skema JSON memberi Anda angka yang ditulis model, yang merupakan teks yang dihasilkan. Decisions mengembalikan probabilitas atas opsi yang Anda berikan dari endpoint itu sendiri.

Bisakah saya menggunakan model selain GPT-6 Luna di Decisions? Tidak. Panduan menyatakan gpt-6-luna adalah satu-satunya model yang tersedia saat ini. Lihat ikhtisar GPT-6 Luna kami.

Bagaimana Decisions berbeda dari Jev milik TypeSafe? Keduanya mengembalikan jawaban berjenis dengan probabilitas dan hanya mengenakan biaya input; mereka berbeda dalam harga, input, dan bentuk respons. Lihat Decisions API vs Jev.

Apakah Decisions API gratis? Tidak. API ini mengenakan biaya $0,10 per 1 juta token input, tanpa tingkat Decisions gratis yang didokumentasikan. Untuk rute gratis ke Luna itu sendiri, lihat cara menggunakan GPT-6 Luna secara gratis.

Langkah selanjutnya

Ambil satu pengklasifikasi yang Anda jalankan melalui Responses hari ini, bangun kembali sebagai pertanyaan choice, dan jalankan keduanya pada 50 tiket berlabel di Apidog dengan penegasan yang sama. Jika ambang kepercayaan terpenuhi dan penggunaan menunjukkan nol token output, Anda memiliki jawabannya. Unduh Apidog, lalu ikuti cara menggunakan Decisions API untuk panggilan pertama dan panduan pengujian lengkap.

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.