Bir işi sınıflandırmak, yönlendirmek, puanlamak veya geçişini sağlamak ve geri dönüş olarak olasılıklar almak istediğinizde Decisions API'yi kullanın: GPT-6 Luna üzerinde çalışır, metin yerine yazılı yanıtlar döndürür, yalnızca 1 milyon belirteç başına 0,10 ABD doları giriş ücreti alır, çıktı, önbellek okuma veya önbellek yazma ücreti yoktur ve OpenAI, Responses API'den yaklaşık 10 kat daha hızlı olduğunu belirtir. Üretilmiş metin, kendi şemanızda JSON, araç çağrıları, akış veya konuşma durumu gerektiğinde Responses API'yi kullanın. Decisions, 2026-10-06 tarihinde herkese açık beta olarak sunulmuştur.
Bu yazı, tek bir işi (bir destek biletini yönlendirme) her iki uç nokta üzerinden çalıştırır, her birinin ne döndürdüğünü karşılaştırır, maliyeti bir kez hesaplar ve bir taşıma notu ile her ikisini de tek bir Apidog projesinde test etme yöntemiyle sona erer. Uç noktanın anatomisi için Decisions API direği ile başlayın; temel için Responses API kılavuzumuza bakın.
düğme
Özellik Matrisi
| Decisions API | Responses API (GPT-6 Luna) | |
|---|---|---|
| Uç Nokta | POST /v1/decisions |
POST /v1/responses |
| Çıktı | predicate, choice, score yanıtları (artı refusal) uç noktadan gelen olasılıklar ve güven ile |
Oluşturulan metin veya text.format aracılığıyla şemanıza uygun JSON |
| Kendi JSON şemanız | Hayır | Evet, strict: true ile json_schema |
| Araçlar / Fonksiyon çağırma | Hayır | Evet |
| Akış | Hayır | Evet |
| Konuşma durumu | Hayır | Evet |
| İstem önbellekleme | Önbellek ücreti yok; OpenAI forumuna göre, henüz önbellekleme yok | Evet, önbelleğe alınan giriş 1 milyon başına 0,01 ABD doları |
| Toplu | Belgelenmemiş | Evet, standardın %50'si |
| Görseller | Evet, base64 veri URL'leri; referans ayrıca genel HTTP(S) URL'lerini de listeler, istek başına 128 adede kadar | Evet, Luna metin ve görselleri alır |
| Zincirleme (bağımlı) kararlar | Ayrı istekler | Tek bir oluşturulan yanıt, bağımlı alanlar taşıyabilir |
| 1 milyon başına fiyat, kısa bağlam | 0,10 ABD doları giriş; çıktı ücreti yok | 0,10 ABD doları giriş, muhakeme belirteçleri dahil 0,50 ABD doları çıktı |
| ZDR / HIPAA | Uygun müşteriler için desteklenir; ABD ve AB'de bölgesel işlem | Bu karşılaştırmada ele alınmamıştır; OpenAI'nin veri kontrolleri sayfasına bakın |
Her satır, OpenAI'nin Decisions kılavuzundan, API referansından ve fiyatlandırma sayfasından alınmıştır.
Aynı işi iki yolla: bir destek biletini yönlendirin
Bilet "Siparişimi iki kez ücretlendirildim" yazıyor. Departmanlar faturalandırma, teknik, nakliye ve diğer. İşte bugün çoğu ekibin bunu nasıl yaptığına dair Yapılandırılmış Çıktılar ile Responses isteği:
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-luna",
"input": "Bu destek biletini bir departmana yönlendirin.\n\nBilet: Siparişimi iki kez ücretlendirildim.",
"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
}
}
}
}'
Ve aynı bilet için Decisions isteği:
curl https://api.openai.com/v1/decisions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-luna",
"input": "Siparişimi iki kez ücretlendirildim.",
"questions": [
{
"type": "choice",
"name": "department",
"instructions": "Bu bileti hangi departman ele almalı?",
"choices": [
{"value": "billing", "description": "Ücretler, iadeler, faturalar"},
{"value": "technical", "description": "Hatalar, sorunlar, giriş problemleri"},
{"value": "shipping", "description": "Teslimat, takip, transit halindeki iadeler"},
{"value": "other", "description": "Diğer her şey"}
]
}
]
}'
Responses gövdesi soruyu istemin içinde ve izin verilen yanıtları bir şemanın içinde taşır. Decisions gövdesi ise ham bileti input olarak ve soruyu 2 ila 255 benzersiz değere sahip bir choice olarak taşır; bu uç noktada hiçbiri bulunmadığı için temperature, reasoning, stream veya text alanları yoktur.
Her birinin ne döndürdüğü
Responses, oluşturulmuş metin döndürür. Katı bir şema ile bu metin geçerli JSON'dur, bu nedenle ayrıştırma işleminden sonra bir etiket elde edersiniz:
{"department": "billing"}
Bir güven numarası istiyorsanız, şemaya bir alan eklersiniz ve modelden bir tane yazmasını istersiniz; gelen şey, ölçülen bir olasılık değil, olasılığa benzeyen oluşturulmuş metindir.
Decisions, etiketi ve arkasındaki dağılımı döndürür. Aşağıdaki sayılar, tam olarak bu giriş için OpenAI'nin kılavuz örneğidir:
{
"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
}
]
}
answers'ı bir usage nesnesi takip eder (maliyet bölümünde gösterilmiştir). Ayrıştırıcı yok, regex yok. confidence alanı eşik değerini belirlediğiniz yerdir ve OpenAI'nin rehberliği, bu eşiği kendi etiketli örneklerinizden belirlemeniz yönündedir, çünkü hiçbir doğruluk veya kalibrasyon rakamı yayınlanmamıştır. Bir ret, {"type": "refusal", "name": "department"} şeklinde gelir; aynı isteğindeki diğer sorular yine de yanıt alır.
Maliyet: aritmetik bir kez
Her iki uç nokta da Luna girişini kısa bağlamda (272 bin girişe kadar belirteç) 1 milyon belirteç başına 0,10 ABD dolarından faturalandırır. Ayrım çıktıdadır. 1.000.000 istekte 500 belirteçlik bir bilet alın:
- Decisions: 500 / 1.000.000 x 0,10 ABD doları = istek başına 0,00005 ABD doları, yani milyon için 50 ABD doları, herhangi bir çıktı veya önbellek satırı eklemeden.
- Responses: aynı 50 ABD doları giriş, artı 1 milyon başına 0,50 ABD dolarından çıktı. 40 belirteçlik bir JSON etiketi, 40 / 1.000.000 x 0,50 ABD doları = istek başına 0,00002 ABD doları veya milyon için 20 ABD doları. Ardından Luna'nın çıktı olarak aynı 0,50 ABD dolarından faturalandırdığı muhakeme belirteçlerini ekleyin.
Dolayısıyla, sadece etiketteki görünen boşluk 50 ABD dolarına karşı 70 ABD dolarıdır. Daha büyük boşluk muhakeme çizgisidir ve dürüstçe ifade etmek gerekirse, Decisions'ın hiç çıktı belirteci faturalandırmamasıdır; OpenAI'nin referans örneğinde her iki sayım da 0'ı gösterir:
"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
}
İki uyarı. Responses'ın Decisions'ın sahip olmadığı kaldıraçları vardır: Luna'da reasoning.effort `none` değerine düşer, istem önbellekleme tekrarlanan girişi 1 milyon başına 0,01 ABD dolarına düşürür ve Batch API standart oranları yarıya indirir. Bunlardan hiçbiri Decisions için belgelenmemiştir. Ve uzun bağlamlı giriş (272 bin belirteç üzeri) her ikisinde de giriş oranını ikiye katlar, bu nedenle uzun bir Decisions isteği 1 milyon giriş başına 0,20 ABD dolarıdır (fiyatlandırma sayfasının çarpanından türetilmiştir); bölgesel işlem %10 ekler.
Hız
OpenAI, Decisions API'nin Responses API'den yaklaşık 10 kat daha hızlı olduğunu belirtiyor. Mutlak bir gecikme süresi yayınlanmadığından, bu iddiayı bir bütçe yerine bir yön olarak kabul edin ve sıcak bir yolu taşımadan önce kendi p50 ve p95 değerlerinizi ölçün. OpenAI forumundaki bir geliştirici, yavaş bir bağlantıda görüntü girişli kararların yaklaşık 0,8 saniyede döndüğünü bildirdi; bu bir kıssadır, bir benchmark değil. Yön makul: Responses belirteçler üretir, muhakeme dahil, ve sonuncuyu beklersiniz.
Karar kuralı
Çıktı aşağıdakilerden biri olduğunda Decisions'ı seçin:
- Bir olasılıkla evet/hayır (
predicate): "Bu mesaj spam mi?" - N sırasız kategoriden biri (
choice): departman, amaç, bir sonraki hangi modelin veya aracın çağrılacağı. "Diğer" gibi bir yedekleme ekleyin. - Sıralı bir seviye (
score): şiddet, öncelik, aciliyet. Puan, 0 tabanlı seviye indekslerinin olasılık ağırlıklı ortalamasıdır, bu nedenle 1.1, seviye 1 ile seviye 2 arasında, 1'e yakın demektir. - Bir geçit:
confidenceveyaprobabilitydeğerini bir eşikle karşılaştırın ve düşük güvenli öğeleri bir insan kuyruğuna gönderin.
Aşağıdakilerden herhangi biri doğru olduğunda Responses'ı seçin:
- Bir kişinin okuyacağı metne ihtiyacınız var: bir özet, bir cevap, bir açıklama.
- Kendi şeklinizde bir nesneye ihtiyacınız var: çıkarılan alanlar, iç içe yapılar, bilinmeyen uzunlukta diziler. Bu, Yapılandırılmış Çıktılar alanıdır ve OpenAI'nin kılavuzu da bunu söyler.
- Modelin argümanlarla bir araç çağrısı istemesi gerekiyor: fonksiyon çağırma.
- Akış, konuşma durumu veya Luna dışında bir modele ihtiyacınız var.
- Bir karar diğerine bağlıdır ve ikisini de tek bir gidiş-dönüşte istiyorsunuz. Decisions, tek bir girdi üzerinde birkaç bağımsız soru barındırır, ancak bağımlı kararlar ayrı istekler gerektirir.
Birçok pipeline her ikisini de ister: sınıflandırma ve geçit için Decisions, yanıt yazmak için Responses.
Bir sınıflandırıcıyı Responses'tan Decisions'a taşımak
Katı bir enum şemasıyla biletleri zaten yönlendiriyorsanız, geçiş küçüktür:
- Aynı
input'ı, ham bilete geri döndürülmüş haliyle koruyun; soru istemden ayrılır. - Soruyu bir
choiceolarakquestionsiçine, enum değerlerinizichoices[].valueve her biri için tek satırlık birdescriptionile yerleştirin. Değerler dizeler veya boole değerleri olabilir vetrueile"true"farklıdır. - Ayrıştırıcıyı silin.
answers[0].choiceveanswers[0].confidencedeğerlerini okuyun; yanıtlar sorduğunuz sırayla gelir ve ayarladığınızname'i yansıtır. Ardından etiketli bir örnekten bir eşik belirleyin. - Giriş yolunu kontrol edin. Decisions yalnızca kullanıcı mesajlarını kabul eder: sistem veya yardımcı rolleri yok, fonksiyon çağrıları yok, dosyalar yok,
file_idyok. Sistem istemi kurallarınıinstructionsveya seçim açıklamalarına katlayın. Görüntüler base64 veri URL'leri olarak girer; referans ayrıca genel HTTP(S) URL'lerini de listeler, bu yüzden önce barındırılan görüntüleri test edin. - Zincirleri ayırın. "Sınıflandır, sonra faturalandırma ise iade uygunluğunu belirle" iki istek haline gelir.
Her ikisini de tek bir Apidog projesinde test edin
Karar vermenin en temiz yolu, her iki isteği aynı etiketli biletlere karşı çalıştırmak ve karşılaştırmaktır. Apidog'da, anahtarı bir kez bir ortam değişkeni olarak saklayın ve kaydedilmiş her iki isteğin Authorization: Bearer başlığında {{OPENAI_API_KEY}} referansını kullanın, böylece hiçbir gerçek anahtar kaydedilmiş bir gövdeye düşmez.
Her iki isteğe de aynı onayı verin: departman billing'e eşit. Decisions isteğinde bu, $.answers[0].choice üzerinde bir JSONPath onayıdır, yanında $.answers[0].confidence 0.8'den büyük ve $.usage.output_tokens 0'a eşittir. Responses isteğinde etiket, oluşturulmuş metnin içinde bulunur, bu nedenle kısa bir istek sonrası betik bunu onayın kontrol ettiği bir değişkene ayrıştırır. Ardından iki yanıt üzerindeki usage değerini karşılaştırın: Decisions sıfır çıktı ve muhakeme belirteci bildirirken, Responses bildirmez.
Çifti, bir bilet metni ve beklenen departman CSV'si üzerinde veri odaklı bir test senaryosuna dönüştürün ve çalıştırma, her uç noktanın güven çizginizin üzerinde kaç bileti doğru şekilde yönlendirdiğini gösterir. Yönlendiricinin önce oluşturulabilmesi için answers dizisini, koşullu alay yanıtlarında olduğu gibi taklit edin ve senaryoyu Apidog CLI ile CI'da çalıştırın, böylece bir ifade veya model takma adı değişikliği, biletleri yanlış yönlendirmek yerine bir testi başarısız kılar. Daha fazla onay kalıbı için LLM uygulamalarını test etme bölümüne bakın.
Sıkça Sorulan Sorular
Responses API, Decisions gibi olasılıklar döndürebilir mi? Ölçülen değerler olarak hayır. Bir JSON şemasındaki confidence alanı, size modelin yazdığı bir sayı, yani oluşturulmuş metin verir. Decisions, sağladığınız seçenekler üzerinden olasılıkları doğrudan uç noktadan döndürür.
Decisions'ta GPT-6 Luna dışında bir model kullanabilir miyim? Hayır. Kılavuz, şu anda mevcut olan tek modelin gpt-6-luna olduğunu belirtmektedir. GPT-6 Luna genel bakışımıza bakın.
Decisions, TypeSafe'in Jev'inden ne farklıdır? Her ikisi de yazılı yanıtları olasılıklarla döndürür ve sadece girişi faturalandırır; fiyat, girişler ve yanıt şekilleri açısından farklılık gösterirler. Decisions API vs Jev bölümüne bakın.
Decisions API ücretsiz mi? Hayır. 1 milyon girdi belirteci başına 0,10 ABD doları faturalandırır, belgelenmiş ücretsiz Decisions katmanı yoktur. Luna'nın kendisine ücretsiz yollar için GPT-6 Luna'yı ücretsiz kullanma kılavuzuna bakın.
Sonraki adım
Bugün Responses üzerinden çalıştırdığınız bir sınıflandırıcıyı alın, onu bir choice sorusu olarak yeniden oluşturun ve aynı onayla 50 etiketli bilet üzerinde Apidog'da her ikisini de çalıştırın. Güven eşiği geçerli olursa ve kullanım sıfır çıktı belirteci gösterirse, cevabınızı almış olursunuz. Apidog'u indirin, ardından ilk çağrı ve tam test sürecini öğrenmek için Decisions API'yi nasıl kullanacağınıza bakın.
