Agent Systems · 21-c05
Agent kontrol bütçeleri
26 Haziran 2026 · Üretim notları
Bir agent'a özerklik vermek, ona sınırsız hak vermek değildir. Üretimde işe yarayan agent, bir bütçe içinde çalışan agent'tır: kaç adım döngü kurabileceği, kaç tool çağırabileceği, ne kadar dolar harcayabileceği, ne kadar süre koşabileceği bellidir. Özerklik, sınırlı bir kontrol problemidir.
- Soru
- ne zaman dursun?
- Eksen
- döngü · tool · maliyet · süre
- Çıkış
- insana devir + termination
- Risk
- sonsuz döngü + fatura
Bu yazıdaki kavramlar
- döngü bütçesi
- tool bütçesi
- maliyet bütçesi
- süre bütçesi
- insana devir
- human-in-the-loop
- termination
Bir agent'ı tek seferlik bir cevap üreticisi değil de döngülü bir sistem yaptığınız anda yeni bir soru doğar: bu döngü ne zaman duracak? Model her turda yeni bir tool çağırabilir, yeni bir gözlem alabilir, yeni bir karar verebilir. Hiçbir sınır koymazsanız, kötü bir gün agent'ın aynı hatayı sonsuza dek tekrarlamasıyla ya da gece boyunca fatura biriktirmesiyle bitebilir.
Bu yazıda agent özerkliğini sınırlı bir kontrol problemi olarak ele alıyorum. Beş ayrı bütçe var: döngü adımları, tool çağrıları, dolar/token maliyeti, duvar saati süresi ve bunların hepsi aşıldığında devreye giren insana devir. Sonunda hepsi tek bir guardrail içinde birleşiyor. Yazı boyunca diyagramlar kendi başına sürekli oynayıp kontrolün şu an nerede olduğunu gösteriyor.
Döngü neden bir bütçe ister?
Bir agent'ın kalbi bir döngüdür: model bir karar verir, bir tool çağırır, sonucu (observation) okur, tekrar karar verir. OpenAI'ın pratik rehberi bunu net söyler: agent çalışması, bir çıkış koşuluna ulaşılana kadar süren bir döngüdür. Çıkış koşulu, son çıktıyı veren bir tool olabilir, tool çağırmadan dönen bir model cevabı olabilir, bir hata olabilir ya da basitçe maksimum tur sayısı olabilir.
İşte bu son madde, maksimum tur, döngü bütçesidir. ReAct makalesi bunu deneysel olarak gösterir: yazarlar HotpotQA için 7, FEVER için 5 adımda kesim koymuş, çünkü daha fazla adım sonucu iyileştirmemiş. Yani "daha çok adım" otomatik olarak "daha iyi cevap" demek değildir. Döngü bütçesi sadece bir güvenlik freni değil, aynı zamanda boşa giden hesaplamayı kesen bir karar.
Aşağıdaki sayaç her turda bir azalır. Dolu kareler kalan bütçeyi, boş kareler harcananı gösterir. Bütçe sıfıra inince döngü zorla durur; agent o ana kadarki en iyi cevabını verir veya escalation'a gider.
Döngü bütçesi: kapta ne olacağı bir tasarım kararı
Bir sayı koymak yetmez. "Maksimum 15 tur" demek kolay; asıl soru, 15. turda agent hâlâ bitmediyse ne olacağıdır. LangChain'in AgentExecutor'ı bunu açıkça iki parametreyle ayırır. max_iterations varsayılan olarak 15'tir ve dokümantasyon None vermenin sonsuz döngüye yol açabileceği konusunda uyarır.
Asıl ilginç olan early_stopping_method. Agent hiç AgentFinish dönmeden bütçe biterse iki seçenek var: force, "limit nedeniyle durduruldu" mesajı döner; generate ise modeli bir kez daha çağırıp önceki adımlardan bir cevap üretmesini ister. Aynı şekilde AutoGen, çok-agent konuşmalarında max_turns ve max_consecutive_auto_reply ile turu sınırlar; CrewAI'da max_iter varsayılan 20'dir ve "agent en iyi cevabını vermek zorunda kalmadan önceki maksimum tur" anlamına gelir.
bütçe bitince hesaplama durur, "limit aşıldı" mesajı döner
model bir kez daha çağrılır, o ana kadarki adımlardan cevap üretir
Yani loop bütçesinin iki yarısı var: sayı (kaç tur) ve davranış (kapta ne olacak). Aşağıda aynı 8 turluk bütçe iki farklı kap davranışıyla gösteriliyor.
Tool bütçesi: aslında bir risk bütçesi
Tool bütçesi sadece "kaç tool çağrılabilir" sorusu değildir. OpenAI'ın rehberi tool'ları risk seviyesine göre derecelendirmeyi önerir: okuma mı yazma mı, geri alınabilir mi, hangi izinleri ister, finansal etkisi var mı? Çünkü bir veri okuma çağrısıyla bir ödeme iadesi çağrısı aynı şey değildir. Birincisini serbestçe bırakabilirsiniz; ikincisi bir onay kapısı ister.
Bu yüzden tool bütçesini bir trafik ışığı gibi düşünmek daha doğru. Düşük riskli (yeşil) tool'lar otomatik geçer. Orta riskli (sarı) tool'lar bir limit veya rate (CrewAI'daki max_rpm gibi) içinde çalışır. Yüksek riskli (kırmızı) tool'lar, ödemeler, iptaller, büyük iadeler gibi geri alınamaz eylemler, doğrudan bir insan onayına bağlanır. LangGraph dokümantasyonu, onay mantığının doğrudan tool fonksiyonunun içine konulabileceğini gösterir.
veri oku · arama
dosya yaz · e-posta taslağı
ödeme · iptal · iade
Aşağıda her tool çağrısı risk seviyesine göre farklı bir kapıdan geçiyor. Renkler risk sınıfını, kapı ise o sınıfın ne yaptığını gösterir.
Maliyet bütçesi: dolar, birinci sınıf bir metrik
Cost bütçesi en kolay görmezden gelinen bütçedir, çünkü fatura genelde ay sonunda gelir. Kapoor ve arkadaşlarının "AI Agents That Matter" makalesi tam da buna karşı yazılmış: agent değerlendirmeleri maliyeti kontrol etmek zorundadır, çünkü tekrarlanan model çağrıları ve retry'ler doğruluğu artırabilir, bu da gereksiz pahalı sistemler kurma teşviki yaratır.
Makale somut bir örnek verir: SWE-Agent her çalışmayı 4 dolarla sınırlamış, ki bu yüz binlerce token'a denk gelir. Daha çarpıcısı, neredeyse aynı doğrulukta sistemler arasında maliyetin iki kat büyüklük (yani yüz kata yakın) farklılaşabildiğini gösterir. Bu yüzden yazarlar maliyeti birinci sınıf bir metrik olarak görmeyi ve doğruluk ile maliyeti bir Pareto eğrisi üzerinde çizmeyi önerir. Toplam maliyet, sabit optimizasyon maliyetleri artı her çalışmanın değişken token maliyetidir; yüksek hacimli uygulamalarda değişken maliyet baskındır.
her tool çağrısı input/output token üretir; değişken maliyet hızla birikir
Aşağıdaki çubuk, biriken maliyeti bir tavana karşı gösterir. Her tool çağrısı çubuğu doldurur; tavanı aşmaya yaklaşınca renk uyarıya döner ve agent durdurulur.
Süre bütçesi: duvar saati de bir kaynaktır
Bir agent doğru cevabı verse bile, çok geç verirse üretimde işe yaramaz. Bu yüzden duvar saati (wall-clock) süresi de bir bütçedir. LangChain'in max_execution_time'ı, döngüde geçen toplam süreyi sınırlar; çalışma zamanı kodu hem tur sayısını hem geçen süreyi kontrol edip limitlerden biri dolduğunda durur. CrewAI de max_execution_time'ı saniye cinsinden bir timeout olarak sunar.
ARC'nin gerçekçi otonom görevler raporu burada önemli bir nokta ekler: pratik kontrol sadece statik kod limitleri değildir. Görev çalışmaları, agent "bitti" dediğinde ya da görevi tamamlamayacağı belli olduğunda (örneğin tekrarlayan bir döngüye saplandığında) sonlanır. Yani süre bütçesi, zaman aşımıyla birlikte bir döngü tespiti mekanizmasıyla beraber çalışır.
tekrarlayan döngü tespit edilirse süre dolmadan da durulur
Aşağıdaki ölçer iki şeyi aynı anda izler: geçen süre (sürekli ilerleyen ibre) ve agent'ın ilerlemesi. İbre kırmızı bölgeye girince timeout devreye girer.
İnsana devir bir protokoldür
Bir bütçe aşıldığında ne olur? Bazen agent durur ve biter. Ama yüksek riskli ya da belirsiz durumlarda doğru hamle, kontrolü bir insana devretmektir. OpenAI'ın rehberi iki tetik tanımlar: başarısızlık eşiklerinin aşılması (retry/eylem limitleri) ve yüksek riskli, hassas, geri alınamaz eylemler (ödemeler, iptaller, büyük iadeler).
Burada kritik nokta, insana devir kararının sadece bir bildirim olmadığıdır. LangGraph'ın interrupt mekanizması bunu güzel gösterir: bir interrupt, graf çalışmasını seçilen noktada duraklatır ve dış girdi bekler; LangGraph state'i kalıcı tutar (checkpoint), böylece çalışma sonradan kaldığı yerden devam edebilir. Yani insana devir, kalıcı bir duraklat/devam et protokolüdür. Dokümantasyon önemli bir uyarı da yapar: devam ederken düğüm baştan çalışır, bu yüzden interrupt'tan önceki yan etkiler idempotent (tekrar çalıştırınca aynı sonucu veren) olmalıdır.
agent çalışıyor
interrupt · state donar
insan onayı
onaylandı · devam
state checkpoint'e yazılır, devam coherent kalır
Aşağıda agent döngüsü çalışırken yüksek riskli bir eyleme gelince state dondurulur, insan onaya bakar, onaylarsa döngü kaldığı yerden devam eder. İbre kontrolün şu an kimde olduğunu gösterir.
Termination: bitiş bir koşullar kümesidir
Bütün bu bütçeler aslında tek bir soruya hizmet eder: agent ne zaman durmalı? Termination (sonlandırma), karmaşık otonom iş akışlarında zorunludur. AutoGen bunu güzel özetler: agent ya iş bittiğinde durur, ya kaynaklar tükendiğinde durur, ya da sistemin strateji değiştirmesi gerektiğinde (örneğin kullanıcı müdahalesi) durur.
Pratikte termination tek bir kapı değil, bir koşullar kümesidir. Mutlu son: agent görevi bitirdi (AgentFinish, is_termination_msg). Bütçe sonu: tur, tool, dolar veya süre bütçelerinden biri doldu. Güvenlik durması: tekrarlayan döngü tespit edildi veya bir hata eşiği aşıldı. Devir: yüksek riskli bir eylem insana eskale edildi. Bu koşullardan hangisi önce gerçekleşirse döngü orada biter.
görev bitti
AgentFinish · başarı
bütçe doldu
tur · tool · dolar · süre
güvenlik durması
döngü / hata eşiği
insana devir
onay bekler
Aşağıdaki diyagram, agent döngüsünün etrafındaki tüm bitiş kapılarını tek karede gösterir. Yeşil kapı başarıyı, gri kapılar bütçe bitişini, kırmızı kapı güvenlik durmasını, mavi kapı insana devri temsil eder.
Kaynaklar
İyi bir agent, kendisine verilen özgürlüğü hangi sınırlar içinde kullanacağını bilen sistemdir. Üretime hazır bir guardrail tek bir bütçeden değil, birden çok eksenin birleşiminden doğar: turlar, tool'lar, tekrar denemeler, duvar saati, oran sınırı, dolar ve insan onayı.
loop
kaç tur
tool
kaç çağrı / risk
maliyet
dolar / token tavanı
süre
duvar saati
insana devir
onay kapısı
hangisi önce dolarsa, döngü orada durur
Bu yüzden bir agent tasarlarken önce "ne yapabilsin?" diye değil, "hangi sınırda dursun ve kim devralsın?" diye sorun. Bütçeler agent'ın özerkliğini kısıtlamaz; o özerkliği güvenle kullanılabilir hale getirir.
- S1OpenAI, A practical guide to building agents, 2025
- S2Yao et al., ReAct, ICLR 2023 (arXiv:2210.03629)
- S3Kapoor et al., AI Agents That Matter, 2024 (arXiv:2407.01502)
- S4Kinniment et al., Evaluating LM Agents on Realistic Autonomous Tasks, ARC 2023
- S5LangChain, AgentExecutor API reference
- S6LangGraph, Interrupts
- S7Microsoft AutoGen, Terminating Conversations Between Agents
- S8CrewAI, Agents
