İçeriğe geç

Yapılandırılmış Kararlar (System One)

Bir dil modelinden kodunuzun dallanacağı bir karar istediğinizde iki iş birden yaparsınız: modele cevabı üretmesini söylersiniz, sonra ürettiği metni ayrıştırıp kendi tiplerinize geri çevirirsiniz. Ayrıştırma adımı kırılgandır — model biçimi değiştirir, açıklama ekler, JSON'u yarıda keser.

System One modelleri bu adımı ortadan kaldırır. Bir state (değerlendirilecek içerik) ve tanımladığınız tiplenmiş questions alırlar, her soru için yapılandırılmış bir answer döndürürler. Serbest metin üretilmez, ayrıştırılacak bir şey yoktur. Her yanıtla birlikte olasılık dağılımı gelir, yani eşiği kodunuzda siz belirlersiniz.

Model Bağlam Giriş / Çıkış ($/1M token)
typesafe/jev 32.000 0,042 / 0

Katalogdaki System One modellerini listelemek için:

Terminal window
curl -s "$LLMTR_BASE_URL/v1/models" \
| jq -r '.data[] | select(.supported_operations[] == "SYSTEM_ONE").id'
Terminal window
curl "$LLMTR_BASE_URL/v1/systemone" \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe/jev",
"state": "Kartımdan iki kez çekim yapılmış, iadesini istiyorum.",
"questions": {
"iade_talebi": {
"type": "noul",
"instructions": "Müşteri iade talep ediyor mu?"
},
"departman": {
"type": "choice",
"instructions": "Bu talebi hangi ekip karşılamalı?",
"criteria": {
"faturalama": "Ödeme, fatura, iade",
"teknik": "Hata, kesinti, entegrasyon",
"satis": "Fiyatlandırma, hesap açma"
}
}
}
}'
Alan Zorunlu Açıklama
model Evet System One modelinin kimliği.
state Evet Değerlendirilecek içerik. Düz metin ya da yapılandırılmış veri (nesne veya dizi).
questions Evet Anahtarlarını sizin seçtiğiniz soru haritası. Yanıtlar aynı anahtarlarla döner.
max_budget_usd Hayır İstek öncesi tahmini maliyet kontrolü. Aşağıdaki nota bakın.

Soru anahtarları modele gönderilmez, yalnızca yanıtı eşleştirmek içindir. Sorunun tamamını instructions alanına yazın; anahtar ne kadar açıklayıcı görünürse görünsün modelin gördüğü metin değildir.

max_budget_usd istek öncesi bir kontroldür: gövdeden çıkarılan tahmini maliyet bu değeri aşarsa istek upstream'e gönderilmeden reddedilir. Kesin ücret, upstream'in bildirdiği token sayısından hesaplanır ve bu tavana göre yeniden denetlenmez; karakter başına beklenenden fazla token üreten bir girdide gerçek ücret tahmini aşabilir. Sert bir üst sınıra ihtiyacınız varsa API anahtarı başına harcama limiti kullanın.

Aynı istekteki sorular birbirinden bağımsız ve eş zamanlı değerlendirilir. Bir sorunun yanıtı diğerine bağlam olmaz; bu yüzden soru eklemek yanıt süresini belirgin biçimde uzatmaz ve yalnızca o sorunun tokenları kadar maliyet ekler. Sonucu her girdide kullanmayacağınız soruları da aynı isteğe koyup kodunuzda görmezden gelmek, ikinci bir istek atmaktan ucuzdur.

Üçü de type ve instructions alanlarını paylaşır, criteria alanı tipe göre değişir.

Evet/hayır sorusu. Cevabın "evet" olma olasılığını 0 ile 1 arasında döndürür. criteria isteğe bağlıdır ve yalnızca iki ucun ne anlama geldiğini netleştirir.

{
"acil_mi": {
"type": "noul",
"instructions": "Mesaj aciliyet bildiriyor mu?",
"criteria": {
"true": "Açıkça zaman baskısı var",
"false": "Aciliyet belirtilmemiş"
}
}
}

Tanımladığınız seçenekler arasından birini seçer. Seçilen seçeneği, tüm seçeneklerin olasılık dağılımını ve bir güven değeri döndürür. criteria, seçenek adını açıklamasına eşler; açıklama gerekmiyorsa değer null bırakılabilir.

Girdilerinizin listeye sığmayabileceği durumlarda diger gibi bir seçenek ekleyin; aksi halde model her zaman listedeki en yakın seçeneği döndürür.

{
"departman": {
"type": "choice",
"instructions": "Bu talebi hangi ekip karşılamalı?",
"criteria": {
"faturalama": "Ödeme, fatura, iade",
"teknik": "Hata, kesinti, entegrasyon",
"diger": null
}
}
}

Sıralı seviyeler boyunca bir konum döndürür. criteria en az iki seviye içeren sıralı bir dizidir. Dönen score iki seviyenin arasına düşebilir.

{
"memnuniyetsizlik": {
"type": "score",
"instructions": "Müşteri ne kadar rahatsız görünüyor?",
"criteria": ["Sakin", "Rahatsız ama nazik", "Çok öfkeli"]
}
}

Evet/hayır ile seviye ölçümünü karıştırmayın. "Bu aday Python'da güçlü mü?" sorusunda 0,5 değeri, adayın orta seviyede olduğu anlamına gelmez; modelin evet ile hayıra eşit olasılık verdiği anlamına gelir. Seviye ölçmek istiyorsanız Score, kesin bir karar istiyorsanız tanımı netleştirilmiş bir Noul kullanın.

{
"model": "typesafe/jev",
"answers": {
"iade_talebi": {
"type": "noul",
"noul": 0.94
},
"departman": {
"type": "choice",
"choice": "faturalama",
"probabilities": { "faturalama": 0.88, "teknik": 0.07, "satis": 0.05 },
"confidence": 0.85
}
},
"usage": { "input_tokens": 312, "output_tokens": 61 }
}

answers içindeki her anahtar, istekte verdiğiniz soru anahtarıdır. Her yanıt kendi type alanını taşır, yani hangi alanları okuyacağınız bellidir: Noul için noul, Choice için choice + probabilities + confidence, Score için score + legend + probabilities + confidence.

model alanı LLMTR katalog kimliğini döndürür. Yukarıdaki token sayıları örnektir; output_tokens genellikle sıfırdan büyük döner — ücretsiz olan çıktının fiyatı, sayısı değil. Kendi token muhasebenizi kurarken bu alanı sıfır varsaymayın.

confidence, olasılık dağılımının ne kadar tepe yaptığını özetler; hangi eşikten sonra otomatik davranacağınız sizin kararınızdır. Yalnızca en olası seçeneği kullanacaksanız eşiğe ihtiyacınız yoktur, choice alanını okumak yeterlidir. Eşik, bir kararı otomatik uygulamak ile bir insana devretmek arasında ayrım yapacağınız yerlerde işe yarar.

Eşikleri ve soru metinlerini kodunuzda tek bir dosyada tutun. İnceleyen kişinin bakması gereken şey bunlardır; kod tabanına dağılmış eşik sabitleri sonradan bulunamaz.

Ücret yalnızca giriş tokenları üzerindendir; çıkış tokenları ücretsizdir. Yanıttaki usage alanı her iki sayıyı da taşır.

Giriş, state ile questions alanlarının toplamıdır. Yani aynı duruma çok sayıda soru sormak, durumu her istekte yeniden göndermekten ucuzdur — soruları tek istekte birleştirin.

Model fiyatlarına platform marjı eklenmez; marj yalnızca kredi yüklemede geçerlidir. Ayrıntı için Faturalandırma sayfasına bakın.

state ve questions tek bir bağlam bütçesini paylaşır: typesafe/jev için 32.000 token, yaklaşık 150.000 karakter İngilizce metin.

Tek istekte en fazla 1.000 soru kabul edilir; fazlası 400 invalid_request ile reddedilir. Pratikte bağlayıcı olan sınır bu değil bütçedir: boş talimatlı bir soru bile token harcadığı için 1.000 soru 32.000 token bütçesini çoktan aşar.

Bu uç nokta akış (streaming) desteklemez. Yanıt tek parça döner; zaten üretilen bir metin yoktur.

System One modelleri Playground'da görünmez ve sohbet uçlarında çağrılamaz. typesafe/jev yalnızca /v1/systemone üzerinde yanıt verir.

Durum Anlamı
400 invalid_request İstek gövdesi şemaya uymuyor. Mesaj hangi alanın hatalı olduğunu söyler.
404 model_not_found Model kimliği katalogda yok.
400 unsupported_operation Model bu uç noktayı desteklemiyor. Yanıt, modelin desteklediği uç noktaları listeler.
422 provider_error Soru tanımı modelin kabul etmediği bir biçimde. Mesaj hangi alanın sorunlu olduğunu taşır.
429 rate_limit_error API anahtarının istek limiti aşıldı.
503 model_unavailable Model geçici olarak yanıt veremiyor. Yanıt Retry-After başlığı taşıyorsa o süre kadar bekleyin.

Hata biçimi için Hatalar sayfasına bakın.