Eğer ajansın sana yapay zekâ işini faturalıyorsa, kimsenin bir rakam tuhaf durana kadar sormadığı bir soru var o faturanın altında. Bu rakam nereden çıktı? Birisi bir modelle oturum açıyor, bir şeyler yazıyor, sonra kullanım verisi bir noktada toplanıp senin faturana bir satır olarak düşüyor. İşin asıl püf noktası tam o aradaki adım, ve dışarıdan baktığında neredeyse hiç görünmüyor.
Ölçmek zordur, o yüzden rakama inanmak zorundasın gibi bir şey satmayacağım sana. Ölçmek gerçekten zor, ve bu zorluk rakamı yuvarlama değil, açıkta yapma sebebidir. Aşağıda anlatacaklarım, kendi oturum transkriptlerimizi savunabileceğimiz bir rakam çıkaracak biçimde nasıl okuduğumuz, ve ilk denediğimiz ama her biri bir müşteriyi en az iki katı şişik faturalayacak dört okuma yöntemi.
Yapay zekâ üzerinden ölçülmüş ajans işi satın alıyorsan, bu yazının sonunda faturayı kesen tarafa soracağın üç soruyu bileceksin. Faturayı üreten yığını sen kuruyorsan, altındaki aritmetik yazının asıl konusu.
İki Saatlik Bütçe, Dokuz Virgül Bir Diyen Rapor
Vaka geçen Eylül bir müşteri çalışmasında geçti. Aylık bütçe iki saatti, hesap için fazlasıyla yeterliydi. Gönderilmeden önce önizlediğimiz ilk haftalık rapor “bu ay 9,1 saat kullanıldı, bütçe aşımı 7,1” diyordu. Gerçek insan çalışması: 0,81 saat. Rakam on bir kat yanlıştı, hem de hesabı kaybettirecek yönde. Önizleme olmasaydı o fatura müşteriye gidecekti.
Hata rapor kodunda değildi. Hata veri kaynağındaydı. Kullandığımız zaman kaydı ucu, zaman kayıtlarını ve harcama satırlarını aynı yapıda, birlikte döndürüyordu, ve toplama fonksiyonu her satırın value alanını türü sormadan topluyordu. 4,80 €’luk bir harcama 4,80 saat sayılmıştı. Ayrıca aynı uç iş tipi kimliğini döndürmediği için, veri modelinde ayrı duran token kaydını okuma anında insan saatinden ayıracak yol yoktu. Token kaydındaki 0,61 değeri “100.000 ağırlıklı token biriminin 0,61’i” demek. İnsan kaydındaki 0,61 “saatin 0,61’i” demek. Aynı kolon, iki ayrı anlam.
Raporu veri kaynağını değiştirip iş tiplerini açıkça sınıflandırarak düzelttik. İlgi çekici kısım burası değil. İlgi çekici kısım şu: hatanın bu kadar bariz olmayabileceği durum. Rakam ortalamada sessiz sedasız doğru görünseydi, altındaki ilkel yapı iki tür işi hâlâ birbirine karıştırıyor olacaktı. 9,1’e karşı 0,81, daha genel bir problemin aşırı uç özel bir hâli: oturum verisini doğru okumak, yanlış okumaktan daha zor.
Her Transkriptte Saklanan İki Katlık Şişirici
Yapay zekâ işinin oturum transkriptleri diskte JSONL dosyaları olarak duruyor. Her satır bir mesaj, her asistan mesajı da usage nesnesi taşıyor: kaç token girdi, kaç token çıktı, kaç tanesi cache’ten okundu, kaç tanesi cache’e yazıldı. Dosyayı okuyup sayıları toplamak bir avuç satır kod, ve çıkan rakam mantıklı duruyor. Mantıklı duruyor ama yanlış.
Eylül’de denetlediğimiz transkriptlerde usage taşıyan 19.181 satır vardı. Bunların 8.355’i, aynı oturumda daha önce aynı message.id ile görünmüş bir mesajın tekrarıydı. Oturum devam ettirmeleri, geri sarmalar, araç çağrılarının yeniden denenmesi, hepsi önceki asistan mesajını usage alanıyla birlikte tekrar yayınlıyor. Naif okuyucu usage‘ı tekrar topluyor. message.id ile tekilleştirme yapılmadan hesaplanan her rakam yaklaşık iki katı şişikti, ve şişkinlik görünmezdi: dosya uzun görünüyordu çünkü iş uzundu, toplam makul görünüyordu çünkü o uzunluğa denk düşüyordu.
Bu bulgu, geri dönüp diğer okumaları yeniden kontrol etmemizi sağladı. En basit aritmetik iki kat yanlışsa, üstüne yaptığımız her okuma da aynı kat yanlıştı. Bu noktadan sonra mutlak disiplin: herhangi bir şeyi toplamadan önce message.id ile tekilleştir, ve aynı transkripti iki kez okuduğunda aynı rakam çıktığına dair bir test koy.
Şimdi bunu sakince anlatıyorum. O an verdiğim ilk tepki, buraya kondurulurken yumuşatıldı: iki kısa yazı nasıl olup da iki yüz seksen dolar olarak metrelenmişti ve rakam yapılan işi anlatmıyordu. Şişiricinin iki katmanı var: tekrar üstte, cache okumaları altta. İkincisi bir sonraki tuzak.
Cache Okumaları Teslim Edilen İş Değildir
İkinci tuzak cache kullanımı. Anthropic’in prompt caching dokümantasyonu açık yazıyor: bir cache okuması, çoğu modelde temel girdi fiyatının 0,1 katı, güncel Opus ve Sonnet’te 0,05 katı faturalanıyor. Yazma TTL’ye göre 1,25 veya 2 kata çıkıyor. Temel model fiyatları da claude.com/pricing‘de: bu satırların yazıldığı anda Opus 5.5 milyon token başına 4 $ girdi ve 20 $ çıktı, Sonnet 5.5 ise 2 $ ve 10 $. cache_read_input_tokens‘ı cache dışı girdiymiş gibi muamele eden bir ölçüm betiği, faturayı bir büyüklük mertebesi şişirir, çünkü uzun oturumlarda aynı bağlam her turda yeniden okunur ve okuma sayısı hızla üst üste birikir.
Eylül oturumlarımızdan birinde tek transkriptte 110 milyon cache okuma tokeni vardı. Liste girdi fiyatından hesaplarsan uzaydan görünecek bir rakam çıkar. Gerçek cache okuma oranından hesapladığında başka bir mertebeye düşer. Mesele hangi okumanın “yanlış” olduğu değil. Mesele şu: cache okumaları oturumun mekaniğini ölçer, müşteriye teslim edilen iş çıktısını değil. Aynı talimatları yeniden okumak, geri dönmek, bir araç çağrısını tekrar denemek, ölü yolu araştırmak, bunların hepsi düşünme maliyeti, ve müşteri bunu istemedi.
O yüzden bir sınır çiziyoruz. Fatura, teslim edilen artefakta karşılık gelen tokenlere dayanır. Girdi, müşterinin brief’i veya şartnamesi. Çıktı, aldıkları içerik, kod veya belge. Cache okumaları ve cache yazmaları bizim tarafta duruyor, genel gider olarak, yapay zekânın ofis kirası diyelim. Aşağıdaki aritmetik yalnızca teslim tabanı üzerinden çalışır.
İki Sayı Yerine Tek Ağırlıklı Token
Güncel Claude modellerinin hepsinde çıktı tokeni, girdi tokeninin tam beş katı fiyatta. Opus 5.5’te 4 $ girdi, 20 $ çıktı. Sonnet 5.5’te 2 $ ve 10 $. Haiku 5.5’te yüz bin tokenin altında 0,10 $ ve 0,50 $. Oran kuşağın tamamında aynı, yani iki sayı tek sayıya iniyor:
ağırlıklı token = girdi tokeni + (5 × çıktı tokeni) 1 birim = 100.000 ağırlıklı token
1.500 kelimelik bir yazı kabaca 5.000 girdi ve 2.000 çıktı tokeni demek: ağırlıklı 15.000, yani faturada 0,15 birim. Birimi paraya çevirmek için modelin kendi girdi fiyatını kullan, iki katı marjı da gizlemeden söyle. Liste fiyatından Sonnet 5.5’te 100.000 ağırlıklı token yaklaşık 0,20 $ üretim maliyeti, yani müşteriye bir birim 0,40 €’ya düşüyor. Opus 5.5’te aynı birim 0,80 €. Rakamlar modele ve kura göre değişir; hesabın şekli değişmez.
Rakamı faturada okunur kılan kaba karşılık: bir birim yaklaşık on ila on beş dakikalık aktif AI çalışması. Faturanda “0,3 birim Opus” diyen bir satır gördüysen, bu bir kaç dakika model mesaisi, sağlayıcının kendi faturalama birimine bağlı, katalogda düz iki katı marjla duruyor. Satın alma müdürünün satır satır sorgulayabileceği bir rakam. Test de bu zaten.
Yeniden Başlasam Neyi Farklı Yapardım
Üç şey, acıyı en çok azaltandan sırala.
Birincisi, raporun çıktısıyla değil, tekilleştirme testleriyle başlardım. Ölçüm kodunda tek bir doğrulama, “aynı transkripti iki kez işlediğinde aynı rakam çıkıyor mu,” o tekrarları ilk gün yakalardı. Biz onları tesadüfen bulduk, art arda yapılmış iki okumanın farkında. Profesyonel bir ölçüm yığını tesadüfe güvenmez.
İkincisi, kaynak birimlerinin ve insan saatlerinin depolanmasını sorgu katmanında değil veri katmanında ayırırdım. Token birimlerini “farklı iş tipli zaman kayıtları” olarak tutuyorduk. İlk bakışta temiz görünüyordu, ama her alt akış okuyucusunu bunları insan saatiyle toplamaya davet ediyordu. Sonradan taşıdığımız harcamalar kendi türlerini taşıyor, filtre koymayı unutan bir okuyucu bile kazara saat sanamıyor.
Üçüncüsü, fiyat kartını yayınlamadan önce mikro kalemler için bir taban koyardım. 25 dakikalık bir ses deşifre kaydının karşılığı 0,32 € çıktı. Doğru hesaplanmış ve faturada gülünç. Bir euronun altındaki her kalem bir euroya yuvarlanır ya da bir üst kaleme bağlanır. Satır satır yaklaşımın tutarlılığı, kendi kendini saçmalığa düşürmemekle korunur.
Gerçek Bir WooCommerce Kurulumunda Ne Anlama Geliyor
Mağazaların çoğu kendi AI faturalama yığınını işletmiyor. Destek, içerik, geçiş veya kurulum işini ajansından alıyorsun, ve bu işin bir kısmı artık yapay zekâ destekli. Pratik soru kendi tokenlarını nasıl ölçeceğin değil. Tedarikçinin rakamı geldiğinde ölçüm hakkında ne soracağın.
Üç soru, kapsadığı alana göre sırala:
- Bu faturayı üreten yığının herhangi bir yerinde AI tüketimi ile insan zamanı toplanıyor mu? 9,1’e karşı 0,81 hatası tam olarak buydu, ve kendi verimizde bulduk. Karışık türler döndüren bir uçtan gelen her satırı toplayan rapor varsa, rakam dışarıdan doğrulanamaz.
- Her AI satırının birimi ne, ve o birim sağlayıcının yayınladığı bir birim mi, yoksa tedarikçinin kendi uydurduğu bir birim mi? Dürüst cevap Anthropic’in, OpenAI’ın, Google’ın, ya da gerçekten faturayı kesen her kim ise onun birimi. Birim yeni bir şeyse, türetim ve uygulanan marj sorulur.
- Kullanım verisi okunurken tekrarlanan mesajlar nasıl ele alınıyor? Oturum transkriptinden AI ölçen her tedarikçinin bu soruya cevabı olması lazım. Cevap “API bize bir rakam veriyor” ise, o rakam büyük olasılıkla iki kat şişik ve kimse bakmamış.
WooCommerce kurulumunda aynı sorular, bir modele çağrı yapan bir eklenti kurduğun gün ya da ürün açıklamalarını yazan bir ajan devreye aldığın gün gelir. Metreli kullanım eklentinin kendi defterine düşer. O defterden gelen aylık toplamı güvenmeden önce bakılacak üç şey: message.id ile tekilleştirme yapıyor mu, cache okumalarını cache dışı girdiden ayrı tutuyor mu, ve türetilen P&L satırı toplamaması gereken iş türlerini topluyor mu? Fatura hatanın görünür hâle geldiği yer. Ölçüm hatanın başladığı yer.
Bunu bir mağazanın içine kurmak en fazla bir günlük geliştirme işi. Sağlayıcının mesaj kimliği üzerinde benzersiz kısıtla açılmış, metreli AI olayları için tek bir tablo, böylece aynı kaydın ikinci kez eklenmesi sessizce toplanmak yerine reddedilir. Cache okuma tokenlerini loglayıp faturalamamak için ayrı bir kolon. Günün olaylarını ağırlıklı token birimlerine çeviren ve modele göre tek satır finansal yüzeye yazan gecelik bir iş. Toplamda iki migration ve bir cron.
Sıkıcı Kısım Güvenin Yaşadığı Yer
Ölçüm sıkıcı ve bir kez doğru yapılırsa kalıcı. Alternatif, rakamı ilk okuyucunun ilk denemesinde ne üretirse ona bırakmak. Bir müşterinin on bir kat şişik fatura alması ya da bir ajansın tahsil etmesi gereken maliyeti sessiz sedasız yüklenmesi böyle oluyor. Satın alma müdürüyle aynı odada savunamayacağım bir rakamı savunmaktansa aritmetiğe bir hafta harcarım. Kısmen AI üzerinden ölçülmüş iş aldığın bir tedarikçiyi değerlendiriyorsan, yukarıdaki üç soru ilk görüşmede sorulacak kadar hak eder. Burada yazılanlar kendi faturalarını üreten yığına benziyorsa, biz oradan geçtik, seninle de birlikte gezeriz.
Last modified: Ekim 21, 2026