Agent iş akışları · 2026-09-25
Jev ile tek belgede çoklu bağımsız soru
Aynı belgeye birden fazla Jev sorusunu tek istekte sormanın neden daha ucuz olduğunu, soruların bağımsızlığının ne anlama geldiğini, ne zaman ikinci bir istek gerektiğini ve state ile soruların bağlam sınırlarını nasıl paylaştığını anlatır.
Kısa cevap
Jev'de bir isteğin girdisi, state ile questions alanlarının toplamıdır ve ücret yalnızca bu girdi üzerindendir. Aynı belgeye sorulacak her soru için belgeyi yeniden göndermek, belgenin tokenlarını her seferinde yeniden ödemek demektir. Soruları tek istekte toplamak, belgeyi bir kez gönderip her ek soru için yalnızca o sorunun tokenlarını ödemektir.
Aynı istekteki sorular birbirinden bağımsız ve eş zamanlı değerlendirilir. Bu yüzden soru eklemek yanıt süresini belirgin biçimde uzatmaz ve diğer soruların sonucunu değiştirmez.
Maliyet farkı
Tablo, 8.000 tokenlık bir belgeye her biri yaklaşık 50 tokenlık 20 soru sorulan varsayımsal bir örneği iki düzende karşılaştırıyor. Fiyat 1 milyon girdi tokenı başına 0,042 dolardır; çıktı ücretsizdir, ama yanıttaki usage alanında yine sayılır.
| Düzen | İstek sayısı | Girdi tokenı | Maliyet |
|---|---|---|---|
| Tek istekte 20 soru | 1 | 9.000 | 0,000378 $ |
| Her soru ayrı istekte | 20 | 161.000 | 0,006762 $ |
Bağımsızlığın anlamı
TypeSafe bunu açıkça söylüyor: bir sorunun cevabı başka bir soru için gizli bağlam değildir. Her soru aynı state'i görür, ama diğer soruların cevaplarını görmez. Bu, "belge kira sözleşmesiyse depozito maddesi var mı" gibi koşullu bir sorunun tek istekte ifade edilemeyeceği anlamına gelir.
Çoğu durumda bunun için ikinci bir istek gerekmez. Koşula bağlı soru da aynı isteğe konur ve koşul sağlanmadığında kodda cevabı okunmaz. Birkaç ek sorunun tokenları, belgeyi ikinci kez göndermekten neredeyse her zaman ucuzdur. İkinci istek, sorunun kendisi ya da seçenekleri ilk cevap olmadan yazılamıyorsa gerekir: örneğin ilk istekte belge türü belirleniyor ve ikinci istekte o türe özgü bir seçenek listesi kullanılıyorsa.
State olarak yapılandırılmış veri
state yalnızca düz metin olmak zorunda değildir; nesne ya da dizi biçiminde yapılandırılmış veri de kabul edilir. Bir başvuru formunun alanları, bir siparişin kalemleri ya da bir sohbetin mesajları, tek bir metne yapıştırılmak yerine alan adlarıyla birlikte gönderilebilir. Alan adları, hangi bilginin nereden geldiğini ayırmayı kolaylaştırır: "telefon" ile "acil durum telefonu" iki ayrı alan olarak kalır.
Yapılandırılmış veri de bütçeden düşer. Alan adları ve biçim işaretleri token harcadığı için, sorularla ilgisi olmayan alanları göndermemek hem maliyeti hem bütçe kullanımını azaltır.
Soru anahtarları ve cevapların eşlenmesi
questions bir haritadır ve anahtarlarını siz seçersiniz. Anahtarlar modele gönderilmez; cevaplar aynı anahtarlarla döner ve kod bu anahtarlarla okur. Modelin gördüğü şey instructions alanıdır, bu yüzden her sorunun talimatı tek başına anlaşılır olmalıdır. Aşağıdaki örnek bir sözleşmeye dört soruyu tek istekte soruyor ve koşula bağlı iki cevabı yalnızca belge gerçekten bir kira sözleşmesiyse okuyor.
Bir sözleşmeye dört bağımsız soru
import os, requests
# Anahtarlar yalnizca cevaplari eslemek icindir; modele gonderilmez.
QUESTIONS = {
"kira_sozlesmesi_mi": {"type": "noul", "instructions": "Bu belge bir kira sozlesmesi mi?"},
"depozito_var_mi": {"type": "noul", "instructions": "Belgede bir depozito ya da guvence bedeli maddesi var mi?"},
"fesih_suresi": {
"type": "choice",
"instructions": "Belgede belirtilen fesih bildirim suresi hangisi?",
"criteria": {"30_gun": None, "60_gun": None, "90_gun": None, "belirtilmemis": None, "diger": None},
},
"risk": {
"type": "score",
"instructions": "Kiraci acisindan sozlesme ne kadar tek tarafli?",
"criteria": ["Dengeli", "Kismen tek tarafli", "Belirgin bicimde tek tarafli"],
},
}
res = requests.post(
os.environ["LLMTR_BASE_URL"] + "/v1/systemone",
headers={"Authorization": "Bearer " + os.environ["LLMTR_API_KEY"]},
json={"model": "typesafe/jev", "state": contract_text, "questions": QUESTIONS},
timeout=60,
)
body = res.json()
answers = body["answers"]
if answers["kira_sozlesmesi_mi"]["noul"] >= 0.9:
# Kira disi belgelerde bu iki cevap okunmaz; sorulmalari ikinci istekten ucuzdur.
print(answers["depozito_var_mi"]["noul"], answers["fesih_suresi"]["choice"])
print(body["usage"]["input_tokens"])
Bütçe ve limitler
Bağlam iki sınırla ölçülür: her soru state ile birlikte 32K tokena, state ile tüm sorular birlikte 64K tokena sığmalıdır; TypeSafe-Danger-Zone-Long-Context: true başlığıyla ikisi de 262K olur. Bir istekte en fazla 1.000 soru kabul edilir ve fazlası 400 invalid_request ile reddedilir, ama pratikte bağlayıcı olan bağlam sınırıdır: boş talimatlı bir soru bile token harcadığı için 1.000 soru 64K sınırını çoktan aşar. Sınırı aşan bir belge parçalara bölünür; her parça ayrı bir state olur ve sorular yalnızca o parçayı görür.
İsteğe eklenebilen max_budget_usd alanı istek öncesi bir tahmindir: tahmini maliyet bu değeri aşarsa istek hiç gönderilmez. Kesin ücret sağlayıcının bildirdiği token sayısından hesaplanır ve bu tavana göre yeniden denetlenmez. Kesin bir üst sınır için API anahtarı başına harcama limiti kullanılır. Uç akış desteklemez; cevap tek parça döner.
Soru setini büyütmek
Soruların bağımsız olmasının pratik bir sonucu daha var: bir sete yeni bir soru eklemek, mevcut soruların sonuçlarını değiştirmez. Bir belge türü için başlangıçta dört soru soran bir akış zamanla yirmi soruya çıkarılabilir ve ilk dört sorunun eşikleri bu yüzden yeniden ölçülmek zorunda kalmaz.
Soru sayısı arttıkça onları kodun farklı yerlerine dağıtmak yerine tek bir tanım dosyasında tutmak, hangi sorunun ne zaman eklendiğini ve hangi eşiğe bağlandığını görmeyi kolaylaştırır. Yanıttaki usage alanı, set büyüdükçe girdi tokenlarının nasıl değiştiğini de gösterir.
Sık sorulan sorular
Aynı istekteki sorular birbirini etkiler mi?
Hayır. Her soru aynı state'i görür ama diğer soruların cevaplarını görmez. Soru eklemek ya da çıkarmak diğerlerinin sonucunu değiştirmez.
Ne zaman ikinci bir istek gerekir?
Bir sorunun talimatı ya da seçenekleri ilk cevap olmadan yazılamıyorsa. Yalnızca cevabın kullanılıp kullanılmayacağı koşula bağlıysa, soruyu aynı isteğe koyup cevabı kodda görmezden gelmek daha ucuzdur.
Bir istekte en fazla kaç soru sorulabilir?
En fazla 1.000 soru kabul edilir. Pratikte sınırı bağlam belirler: her soru state ile birlikte 32K, tüm istek 64K tokena sığmalıdır.
max_budget_usd kesin bir harcama tavanı mı?
Hayır. İstek öncesi yapılan bir tahmindir; kesin ücret sonradan bu tavana göre denetlenmez. Kesin sınır için API anahtarı başına harcama limiti kullanılır.
state düz metin mi olmalı?
Hayır. state düz metin olabileceği gibi nesne ya da dizi biçiminde yapılandırılmış veri de olabilir. Alan adları da token harcadığı için yalnızca sorularla ilgili alanlar gönderilir.