Agent iş akışları · 2026-09-25
Jev ile Noul, Choice ve Score seçimi
Jev'in üç temel soru tipi Noul, Choice ve Score'un hangi karar biçimine karşılık geldiğini, her birinin ne döndürdüğünü ve en sık yapılan karışıklıkları örnek istek ve yanıt alanlarıyla anlatır.
Kısa cevap
Jev, LLMTR'de /v1/systemone ucunda çalışan bir yapılandırılmış karar modelidir. Serbest metin üretmez; bir state (değerlendirilecek içerik) ve sizin tanımladığınız tiplenmiş soruları alır, her soru için kodunuzun doğrudan okuyabileceği bir cevap döndürür. Metin üzerinden karar için üç soru tipi vardır ve hangisinin kullanılacağını kararın biçimi belirler; Jev 1.14 ayrıca görselde bir nesnenin yerini bulan deneysel Box tipini yanıtlar.
Cevap evet ya da hayırsa Noul, cevap sırasız seçeneklerden biriyse Choice, cevap sıralı seviyeler üzerinde bir konumsa Score kullanılır. Bu ayrım yanlış yapıldığında model yine bir sayı döndürür, ama o sayı sorduğunuz şeyi ölçmez.
Üç tip bir bakışta
Üç tip de type ve instructions alanlarını paylaşır; criteria alanı tipe göre değişir. Her cevap kendi type alanını taşıdığı için hangi alanların okunacağı bellidir.
| Tip | Karar biçimi | criteria | Dönen alanlar |
|---|---|---|---|
| Noul | Evet ya da hayır | İsteğe bağlı; iki ucun ne anlama geldiği | noul: evet olasılığı, 0 ile 1 arası |
| Choice | Sırasız seçeneklerden biri | Seçenek adından açıklamaya eşleme; açıklama null olabilir | choice, probabilities, confidence |
| Score | Sıralı seviyeler üzerinde bir konum | En az iki seviyeli sıralı dizi | score, legend, probabilities, confidence |
Noul ile Score'u karıştırmamak
En sık karışıklık, bir seviye ölçümünün evet/hayır sorusuyla yapılmasıdır. "Bu aday Python'da güçlü mü?" sorusuna Noul'un 0,5 döndürmesi, adayın orta seviyede olduğu anlamına gelmez; modelin evet ile hayıra eşit olasılık verdiği, yani emin olmadığı anlamına gelir. 1'e yakın bir değer güçlü bir evet, 0'a yakın bir değer güçlü bir hayırdır.
Seviye ölçülmek isteniyorsa doğru tip Score'dur: "Başlangıç", "Orta", "İleri" gibi sıralı seviyeler tanımlanır ve dönen score bu seviyeler üzerindeki konumu verir. Score iki seviyenin arasına da düşebilir; tamsayı olması gerekmez. Kesin bir karar isteniyorsa Noul'un criteria alanında evet ve hayırın ne anlama geldiği yazılır.
Choice'ta listeye sığmayan girdiler
Choice her zaman tanımlı seçeneklerden birini döndürür. Girdi hiçbir seçeneğe uymuyorsa bile model listedeki en yakın seçeneği seçer. Bu yüzden listenin her girdiyi kapsamayabileceği durumlarda diger gibi bir seçenek eklenir; TypeSafe de aynı öneriyi yapıyor. Böylece yeni ya da beklenmeyen bir talep yanlış bir kutuya zorlanmaz.
Seçeneklerin birbirini dışlaması da önemlidir. Bir mesaj aynı anda iki seçeneğe ait olabiliyorsa, Choice bunlardan yalnızca birini döndürür. Böyle durumlarda her konu için ayrı bir Noul sorusu sormak, iki konunun da görünür kalmasını sağlar. Açıklamalar modelin gördüğü metindir; seçenek adı tek başına yetmeyecekse sınırı açıklamaya yazmak gerekir.
Score seviyelerini yazmak
Score'da criteria en az iki seviyeli, sıralı bir dizidir ve sıra anlam taşır: seviyeler en düşükten en yükseğe doğru yazılır. Her seviyenin kısa ama somut bir tarifi olması, modelin iki komşu seviye arasında daha tutarlı konum vermesini sağlar. "Sakin" yerine "Sakin, yalnızca bilgi istiyor" yazmak, sınırı modelin tahminine bırakmaz.
Dönen score seviyelerin arasına da düşebildiği için ölçek tamsayı adımlarla sınırlı kalmaz ve koddaki eşik de bu konuma konur: örneğin ikinci seviyeyi geçen her mesajın deneyimli bir temsilciye gitmesi gibi. Seviye sayısı arttıkça ölçek incelir, ama komşu seviyelerin tarifleri de birbirine yaklaşır.
Üç tipi aynı istekte kullanmak
Aynı state'e sorulan sorular birbirinden bağımsız ve eş zamanlı değerlendirilir; bir sorunun cevabı diğerine bağlam olmaz. Bu yüzden üç tip tek istekte birlikte sorulabilir ve bir soru eklemek diğerlerinin sonucunu değiştirmez. Aşağıdaki örnek aynı destek mesajı için iade talebini, ilgili ekibi ve memnuniyetsizlik seviyesini birlikte soruyor.
Noul, Choice ve Score'u tek istekte sormak
import os, requests
res = requests.post(
os.environ["LLMTR_BASE_URL"] + "/v1/systemone",
headers={"Authorization": "Bearer " + os.environ["LLMTR_API_KEY"]},
json={
"model": "typesafe/jev",
"state": "Kartimdan iki kez cekim yapilmis, uc gundur cevap alamiyorum.",
"questions": {
"iade_talebi": {"type": "noul", "instructions": "Musteri iade talep ediyor mu?"},
"departman": {
"type": "choice",
"instructions": "Bu talebi hangi ekip karsilamali?",
"criteria": {"faturalama": "Odeme, fatura, iade",
"teknik": "Hata, kesinti, entegrasyon",
"diger": None},
},
"memnuniyetsizlik": {
"type": "score",
"instructions": "Musteri ne kadar rahatsiz gorunuyor?",
"criteria": ["Sakin", "Rahatsiz ama nazik", "Cok ofkeli"],
},
},
},
timeout=30,
)
answers = res.json()["answers"]
print(answers["iade_talebi"]["noul"]) # evet olasiligi
print(answers["departman"]["choice"]) # secilen secenek
print(answers["memnuniyetsizlik"]["score"]) # seviyeler arasindaki konum
Soru anahtarları ve talimatlar
questions haritasındaki anahtarlar modele gönderilmez; yalnızca cevapları eşleştirmek içindir. Anahtar ne kadar açıklayıcı görünürse görünsün, modelin gördüğü metin instructions alanıdır. "iade_talebi" anahtarının altına yalnızca "Evet mi?" yazmak, modele ne sorulduğunu hiç söylememek demektir.
Soru tipi değiştirildiğinde okunan alanlar da değişir: Noul'da noul, Choice'ta choice ve confidence, Score'da score ve legend. Kodun cevabın type alanına bakarak dallanması, bir sorunun tipi sonradan değiştirildiğinde yanlış alanın sessizce okunmasını önler.
Hangi karar hangi tip
Aşağıdaki örnekler, aynı konudaki farklı soruların farklı tiplere düştüğünü gösteriyor. Belirleyici olan sorunun konusu değil, beklenen cevabın biçimidir.
| Soru | Cevabın biçimi | Tip |
|---|---|---|
| Bu e-posta istenmeyen ileti mi? | Evet ya da hayır | Noul |
| Mesaj hangi dilde yazılmış? | Bilinen dillerden biri | Choice |
| Metin ne kadar resmî? | Sıralı bir ölçekte konum | Score |
| Başvuru sahibi deneyim şartını karşılıyor mu? | Tanımı yazılmış bir evet ya da hayır | Noul |
| Başvuru sahibinin deneyim düzeyi nedir? | Sıralı seviyeler | Score |
| Şikâyet hangi ürünle ilgili? | Ürün listesinden biri, artı diger | Choice |
Sık sorulan sorular
Noul confidence döndürür mü?
Hayır. Noul yalnızca noul alanında evet olasılığını döndürür. confidence yalnızca Choice ve Score cevaplarında bulunur.
Score tamsayı mı döner?
Hayır. score, tanımladığınız seviyeler üzerinde bir konumdur ve iki seviyenin arasına düşebilir. legend alanı konumun hangi seviyelere karşılık geldiğini gösterir.
Choice'a diger seçeneği eklemek neden gerekli?
Choice her zaman listedeki bir seçeneği döndürür. Listeye uymayan bir girdi için kaçış seçeneği yoksa, model en yakın ama yanlış seçeneği seçer.
Soru anahtarları modele gider mi?
Hayır. Anahtarlar yalnızca cevapları eşleştirmek içindir. Sorunun tamamı instructions alanına yazılır.