Hesap birimi yanlış
LLM sistemleri için çoğu maliyet panosu tek bir soru etrafında kurulur: bu çağrı ne kadara mal oldu? Bu soru yanıtlanabilir, kesin ve agent'lar için neredeyse işe yaramaz. Bir agent çalışması bir çağrı değildir. Bir yörüngedir: bir plan, bir dizi tool çağrısı, bir veya daha fazla reflection geçişi, hatalı argümanlardan sonra yeniden denemeler ve son bir sentez. Çağrı atomdur; yörünge moleküldür. Atomu fiyatlandırıp molekülü bütçelemek, ekiplerin loglardan kimsenin açıklayamadığı aylık bir faturayla kalmasına yol açar.
Bu yazı, yörünge düzeyinde maliyet kontrollerini savunuyor: token'lar, duvar saati ve tool çağrıları üzerinde çalışma düzeyinde tavanlar, modelin dışında uygulanan, çalışma başlamadan önce tanımlanmış kademeli bozulma ve yükseltme ile. Mekanizma gösterişsizdir. Aynı zamanda işletilebilen bir agent sistemi ile yalnızca gösterilebilen bir agent sistemi arasındaki farktır.
Çağrı başına fiyatlandırma neden yanıltıcıdır
Tek bir çağrının maliyeti sınırlıdır. Bir yörüngenin değildir, çünkü çağrı sayısı görevin, modelin kendi kararlarının ve ortamın yanıtlarının bir fonksiyonudur. Üç terim baskındır ve hiçbiri çağrı başına bir defterde görünmez.
Yeniden denemeler. Şema doğrulamasında başarısız olan, zaman aşımına uğrayan veya belirsiz bir hata döndüren bir tool çağrısı yeniden denenir. Her yeniden deneme bağlamı yeniden gönderir. Bir yörünge boyunca monoton olarak büyüyen bağlam, n-inci yeniden denemenin ilkinden daha pahalı olduğu anlamına gelir, aynı değil. Deneme sayısı sabit olsa bile deneme başına maliyet artar.
Tool yayılımı. Bir planlama adımı bir kaynağı mı yoksa on iki kaynağı mı sorgulayacağına karar verebilir. Model sizin birim ekonomisini bilmez, bu yüzden birini tercih etmek için hiçbir nedeni yoktur. Yayılım, iyi huylu bir medyan durumunun ve patolojik bir kuyruk durumunun bir büyüklük mertebesi kadar ayrıldığı yerdir ve bu ayrım yapısaldır, tesadüfi değil.
Reflection geçişleri. Öz-eleştiri, doğrulama ve yeniden planlama döngüleri çoğu agent tasarımında en yüksek kaldıraçlı kalite mekanizması ve en yüksek varyanslı maliyet mekanizmasıdır. Düzeltilecek bir şey bulamayan bir reflection geçişi yine de tam bir bağlam geçişine mal olur. Düzeltilecek bir şey bulan bir reflection geçişi ise buna artı düzeltme artı yeniden doğrulamaya mal olur.
Sonuç, ağır kuyruklu bir maliyet dağılımıdır. Medyan çalışma ucuzdur, ortalama değildir. Medyandan bütçe yapan ekipler sistematik olarak şaşırır; ortalamadan bütçe yapan ekipler fazla kaynak ayırır ve yine de kuyruk tarafından şaşırtılır. Kuyruk gürültü değildir. Agent'ın döngü kurarak ele aldığı belirli bir görev sınıfıdır ve tekrarlanacaktır.
Bir dış boyut da vardır: agent framework'leri ve orkestrasyon desenleri çoğaldıkça, konuşlandırılmış bir sistemin maliyet yüzeyi herhangi bir statik çağrı başına tahminin takip edebileceğinden daha hızlı değişir. Yararlı bir disiplin, fiyatlandırılan, izlenen ve sınırlandırılan şeyin çağrı değil yörünge olduğunu kabul etmektir.

Bütçe ilkelleri
Bir çalışma bütçesi, bir yörünge tanımlayıcısına bağlı ve model tarafından değil orkestratör tarafından uygulanan bir tavanlar kümesidir. Modelin dışında uygulama önemlidir: bütçe altında kalmaya çalışan bir model yumuşak bir söz veriyor demektir ve yumuşak sözler tam da kuyrukta başarısız olan şeydir. Orkestratör sayabilir ve bütçelerin gerektirdiği şey saymaktır.
Tavanlar
Üç tavan çoğu başarısızlık modunu kapsar:
- Token tavanı. Yörünge boyunca toplam girdi artı çıktı token'ları, çağrı başına değil. Orkestratör sınırında sayılır, böylece yeniden denemeler ve reflection geçişleri yapı gereği dahil edilir.
- Duvar saati tavanı. Yörünge için bir son tarih. Bu, adım başına ucuz ama adım sayısı sınırsız olan döngüleri yakalar ve sağlayıcı tarafında bir gecikme olayından sağ çıkan tek tavandır.
- Tool çağrısı tavanı. Dış çağrı sayısı üzerinde bir üst sınır, isteğe bağlı olarak tool başına. Bu, yayılım üzerindeki doğrudan kontroldür ve hakkında akıl yürütmesi en ucuz olanıdır.
Pratik bir uygulama, her adımın gönderilmeden önce yazdığı çalışma başına bir defter tutar:
class RunLedger:
def __init__(self, limits):
self.limits = limits
self.tokens = 0
self.tools = 0
self.started = now()
def admit(self, est_tokens, tool_name=None):
if self.tokens + est_tokens > self.limits.tokens:
raise BudgetExceeded("tokens")
if tool_name and self.tools + 1 > self.limits.tools:
raise BudgetExceeded("tools")
if now() - self.started > self.limits.wall_clock:
raise BudgetExceeded("wall_clock")
self.tokens += est_tokens
if tool_name:
self.tools += 1
admit'e geçirilen tahmin kasıtlı olarak muhafazakardır: adımın öngörülen maliyeti artı bir yeniden deneme için rezerv. Tavana anlam kazandıran, onu arzu edilen değil gerç
Tavanda sert bir duruş doğrudur ama kabadır. Daha iyi bir tasarım, çalışma sınırlarına yaklaşırken orkestratörün aşağı doğru yürüdüğü bir bozulmuş modlar merdiveni tanımlar:

- Tool kümesini azalt. İsteğe bağlı veya yüksek gecikmeli tool'ları çıkar, görevin tamamlanmadan yapamayacağı olanları koru.
- Reflection geçişlerini çıkar. Öz-eleştiri ve doğrulamayı atla, daha düşük yanıt kalitesini kabul et ve çalışmanın bozulduğunu kaydet.
- Kapalı başarısız ol. Sınırsız bir başarı girişimi yerine, kısmi yörüngeyi ekleyerek yapılandırılmış bir başarısızlık döndür.
Merdiven önceden tanımlanır çünkü tükenme anı, bir yedek tasarlamak için mümkün olan en kötü zamandır. Kullanılabilir bir kısmi yanıt ve net bir bayrak döndüren bozulmuş bir çalışma, bütçeyi sessizce aşan veya hiçbir şeyle sonlanan bir çalışmadan operasyonel olarak çok daha iyidir.
Atıf
Bütçeler ancak harcama atfedilirse teşhis edicidir. Her çalışmayı bir görev sınıfı, ilgili olduğunda bir kiracı veya kullanıcı tanımlayıcısı ve onu üreten giriş noktasıyla etiketleyin. Ardından harcamayı modele göre değil etikete göre toplayın. Yararlı görünüm, görev sınıfı başına bir dağılımdır: medyan, kuyruk ve aralarındaki oran. Kuyruğu medyanının bir büyüklük mertebesi üzerinde olan bir görev sınıfının bir döngü patolojisi vardır ve etiket size nereye bakacağınızı söyler.
Operasyonel sonuçlar
Maliyet anomalileri döngü patolojileridir. Bir görev sınıfı aniden daha pahalı hale geldiğinde, içgüdü prompt verimsizliğini suçlamaktır. Genellikle prompt değişmemiştir ve döngü değişmiştir: bir tool yeniden denemeleri tetikleyen hatalar döndürmeye başlamıştır, bir planlayıcı daha geniş yayılmaya başlamıştır, bir reflection geçişi yakınsamayı bırakmıştır. Anomali incelemesi prompt metniyle değil yörünge şekliyle başlamalıdır. Çalışma başına adım sayıları ve tool çağrılarının dağılımı, patolojiyi herhangi bir prompt diff'inden daha hızlı tanımlayacaktır.
Bütçeler değerlendirmeyi karşılaştırılabilir kılar. Çalışma düzeyinde bir maliyet sınırı olmadan, iki agent tasarımı arasındaki bir benchmark karşılaştırması bir karşılaştırma değildir. Daha pahalı tasarım, sadece daha uzun deneyerek başarı oranında kazanabilir. Bütçeler aynı tavanlara sabitlendiğinde, eşit başarıda daha ucuz bir yörünge gerçek bir sonuçtur ve eşit başarıda daha pahalı bir yörünge bir gerilemedir. Bu, tüm yaklaşımın dürüst ödünleşimidir: sert bütçeler zaman zaman daha fazla alan verilse başarılı olacak bir çalışmayı kesintiye uğratacaktır. Bu maliyet, en kötü durum davranışı konuşlandırmadan önce bilinen, bir faturada keşfedilmeyen bir sistem karşılığında kasıtlı olarak ödenir. Herhangi bir kesintiyi kabul edemeyen ekipler tavanları yüksek ayarlamalı ve başarısızlık yerine bozulma kullanmalıdır, ancak yine de onları ayarlamalıdır.
Son tarihler sözleşmenin bir parçasıdır. Bir duvar saati tavanı yalnızca bir maliyet kontrolü değildir; agent'ı bekleyen her neyse ona bir gecikme garantisidir. Onu aşan çalışmalar kısmi bir sonuçla kapalı başarısız olmalıdır, çünkü çoktan vazgeçmiş bir çağıran geç bir başarıdan fayda görmez.
Önce ne inşa edilmeli
Minimum uygulanabilir sürüm küçüktür. Orkestratöre bir defter koyun, yörünge başına token'ları, tool çağrılarını ve geçen süreyi sayın, üç tavanı uygulayın ve her çalışmayı bir görev sınıfıyla etiketleyin. İkinci bir mod eklemeden önce bir bozulmuş mod ekleyin. Ortalamayı değil dağılımı enstrümante edin. Çağrı başına görünüm bir hata ayıklama yardımcısı olarak kalabilir, ancak bütçenin bağlandığı şey olmamalıdır. Bütçeyi çalışmaya bağlayın ve çalışma işletebileceğiniz bir şey haline gelir.
