Vibe Coding'ın Tasarruf Formülü ve Kırılma Noktası

Token, API çağrı sayısı, prompt sayısı üçlü faturalandırma için tutarlı değişkenlerle bir maliyet modeli oluşturur, kırılma noktası formüllerini ve çalışma yöntemi önerilerini sunar.

AI Kodlama Araçlarının Faturalandırma Modelleri Üç Kategoriye Özetlenebilir:

  1. Token başına faturalandırma: Çeşitli API’lar, Claude Code (Claude Pro), Codex Cli (ChatGPT Plus), Zhipu Lite/Pro, Cursor yeni sürümü vb. Dahil. Temelde hepsi token başına faturalandırma, bazı ürünler paket indirimi sunar.
  2. API çağrı sayısına göre faturalandırma: OpenRouter (ücretsiz kotası), ModelScope, Gemini Code Assistant (günlük 1000 ücretsiz çağrı), Chutes vb.
  3. Prompt sayısına göre faturalandırma: Cursor eski sürümü (500 kez), Github Copilot (300 kez) vb.

Bu üç model temelde model çıkarımı ve bağlam işleme için ödeme alır; fark, fiyatlandırma tanecikliği ve limit biçiminde ortaya çıkar.

Bu makale, tutarlı bir maliyet modeli oluşturur, işletilebilir değişken tanımları ve hesaplama formülleri sağlar, farklı iş yükleri ve yöntemler altında araç seçim kırılma noktalarını belirler. Maliyet değerlendirmesi nakit harcamaları, zaman tüketimini ve tekrar çalışma riskini kapsar.

Tutarlı Toplam Maliyet Fonksiyonu

Herhangi bir i aracı için, bir faturalandırma döngüsü içindeki toplam maliyet şöyle yazılabilir:

Totali=Cashi+Timei+RiskiTimei=RHoursiRiski=RReworkHoursi\begin{aligned} \mathrm{Total}_i &= \mathrm{Cash}_i + \mathrm{Time}_i + \mathrm{Risk}_i \\ \mathrm{Time}_i &= R \cdot \mathrm{Hours}_i \\ \mathrm{Risk}_i &= R \cdot \mathrm{ReworkHours}_i \end{aligned}

Burada R, saat başına zaman fiyatınız (yuan/saat) temsil eder. Zamanı hesaba katmak istemiyorsanız, R’yi 0 olarak ayarlayabilirsiniz; formül saf nakit maliyet karşılaştırmasına indirgenir.

Değişken Anlaşması

Üç faturalandırma modelini birleştirmek için, iş yükünü “oturum (session)” ve “iterasyon (iteration)” olmak üzere iki seviyeye ayırıyoruz. Yeni bir projeye girişteki tarama ve indeksleme tek seferlik işlemlerdir; aynı bağlam içindeki sürekli diyalog ve kod değişiklikleri tekrarlanabilir işlemlerdir.

Değişkenleri tanımlayalım:

  • S_i: Aracın i sabit maliyeti (abonelik ücreti veya aylık minimum harcama)
  • N_s: Bu döngüdeki yeni oturum sayısı (proje değiştirme, bağlamı temizleme, yeni oturum açma dahil)
  • N_{it}: Bu döngüdeki etkili iterasyon sayısı (gereksinim netleştirme, kod değişikliği, hata düzeltme vb.)
  • R: Zaman birim fiyatı (yuan/saat)
  • h0_i: Her yeni oturumun soğuk başlangıç süresi (saat)
  • h1_i: Her iterasyonun ortalama süresi (saat)
  • p_{\mathrm{fail},i}: Her iterasyonun başarısız olup tekrar çalışma gerektirme olasılığı (0 ile 1 arası)
  • h_{\mathrm{re},i}: Tekrar çalışmanın ortalama süresi (saat)

Böylece zaman ve risk terimleri şöyle yazılabilir:

Hoursi=Nsh0i+Nith1iReworkHoursi=Nitpfail,ihre,i\begin{aligned} \mathrm{Hours}_i &= N_s \cdot h0_i + N_{it} \cdot h1_i \\ \mathrm{ReworkHours}_i &= N_{it} \cdot p_{\mathrm{fail},i} \cdot h_{\mathrm{re},i} \end{aligned}

Şimdi sadece üç faturalandırma yöntemi için Cash_i‘yi yazmamız gerekiyor.

Token Başına Faturalandırma Nakit Maliyeti

Token başına faturalandırma araçları genellikle üç kategoride: giriş, giriş önbelleğinde isabetli giriş, çıkış. Yaygın bir yanılgı, aynı giriş token’larını hem giriş hem de önbellek maddesi olarak tekrar saymaktır. Önce giriş token toplamını tahmin etmenizi, ardından önbellek isabet oranına göre bölmenizi öneririz.

Değişkenleri tanımlayalım:

  • Tin0_i: Her yeni oturumun giriş token toplamı
  • r0_i \in [0,1]: Yeni oturum giriş önbelleği isabet oranı
  • Tin1_i: Her iterasyonun giriş token toplamı
  • r1_i \in [0,1]: İterasyon giriş önbelleği isabet oranı
  • Tout0_i, Tout1_i: Çıkış token miktarı
  • Pin_i, Pcache_i, Pout_i: Fiyat parametreleri (yuan/milyon token)

Önbellek fiyatlandırmasını desteklemeyen araçlar için r0_i=r1_i=0 veya Pcache_i=Pin_i ayarlanabilir.

Cashi(token)=Si+1106[Ns(Pini(1r0i)Tin0i+Pcacheir0iTin0i+PoutiTout0i)+Nit(Pini(1r1i)Tin1i+Pcacheir1iTin1i+PoutiTout1i)]\begin{aligned} \mathrm{Cash}^{(\mathrm{token})}_i &= S_i + \frac{1}{10^6}\Bigl[ N_s \cdot \bigl(Pin_i \cdot (1-r0_i)\cdot Tin0_i + Pcache_i \cdot r0_i\cdot Tin0_i + Pout_i \cdot Tout0_i\bigr) \\ &\qquad + N_{it} \cdot \bigl(Pin_i \cdot (1-r1_i)\cdot Tin1_i + Pcache_i \cdot r1_i\cdot Tin1_i + Pout_i \cdot Tout1_i\bigr) \Bigr] \end{aligned}

Bu formül, doğrudan bir deneyimsel sonucu açıklar: Aynı oturumda sürekli odaklanmış çalışırken, N_{it} artar ancak Tin0_i sadece bir kez ödenir; tek iterasyonun ortalama maliyeti düşer. Sık sık proje değiştirmek veya bağlamı sık sık temizlemek, Tin0_i‘nin tekrar ödenmesine neden olur.

API Çağrı Sayısına Göre Faturalandırma Nakit Maliyeti

API çağrı sayısına göre faturalandırmanın anahtarı, “bir çağrı"nın diyalogları, araç çağrılarını, dosya okumayı, aramayı, komut yürütmeyi vb. işlemleri kapsamasıdır. Tahmin etmeniz gerekenler:

  • A0_i: Her yeni oturumun API çağrı sayısı
  • A1_i: Her iterasyonun API çağrı sayısı
  • Ccall_i: Her çağrının birim fiyatı (yuan/çağrı)

Nakit maliyet formülü:

Cashi(call)=Si+Ccalli(NsA0i+NitA1i)\mathrm{Cash}^{(\mathrm{call})}_i = S_i + Ccall_i \cdot (N_s \cdot A0_i + N_{it} \cdot A1_i)

Araç ücretsiz bir kotası Q (çağrı/döngü) sunuyorsa ve limiti aşıldığında beklemeniz gerekiyorsa (ödemek yerine), bekleme süresini zaman maliyetine ekleyebilir, aşan çağrıları Hours_i‘ye dönüştürebilir ve yine Total_i kullanarak karşılaştırma yapabilirsiniz.

Prompt Sayısına Göre Faturalandırma Nakit Maliyeti

Prompt sayısına göre faturalandırma, bir “prompt"u bir görev gönderimi olarak eşitler. Tahmin etmeniz gerekenler:

  • P0_i: Her yeni oturumun prompt sayısı
  • P1_i: Her iterasyonun prompt sayısı
  • Cprompt_i: Her prompt’un birim fiyatı (yuan/prompt)

Nakit maliyet formülü:

Cashi(prompt)=Si+Cprompti(NsP0i+NitP1i)\mathrm{Cash}^{(\mathrm{prompt})}_i = S_i + Cprompt_i \cdot (N_s \cdot P0_i + N_{it} \cdot P1_i)

“Aylık N kez içeren” paketler için, gölge birim fiyatını (shadow price) kullanarak yaklaşabilirsiniz: Döngü abonelik ücretini S_i, kotayı Q_i olarak ayarlarsak, Cprompt_i \approx S_i / Q_i. Kesin marjinal nakit maliyet olmasa da, “kota kıtlığını” hesaplanabilir bir fırsat maliyetine dönüştürebilir.

Kırılma Noktası: İki Aracın Ayırıcı Formülü

Yukarıdaki ifadeleri tek bir formda yazalım. Aracın i için:

Totali=Si+Ns(c0i+Rh0i)+Nit(c1i+Rh1i+Rpfail,ihre,i)\mathrm{Total}_i = S_i + N_s \cdot (c0_i + R \cdot h0_i) + N_{it} \cdot (c1_i + R \cdot h1_i + R \cdot p_{\mathrm{fail},i} \cdot h_{\mathrm{re},i})

Burada c0_i ve c1_i, sırasıyla soğuk başlangıç ve tek iterasyonun nakit maliyetini temsil eder; üç faturalandırma yöntemindeki farklı açılımlarla eşleşir.

İki araç A ve B verildiğinde, N_s sabitken, Total_A = Total_B eşitliğinden, iterasyon sayısının kırılma noktasını çözebiliriz:

Nit=(SBSA)+Ns((c0Bc0A)+R(h0Bh0A))(c1Ac1B)+R(h1Ah1B)+R(pfail,Ahre,Apfail,Bhre,B)N_{it}^{\ast} = \frac{ (S_B - S_A) + N_s \cdot \bigl((c0_B - c0_A) + R \cdot (h0_B - h0_A)\bigr) }{ (c1_A - c1_B) + R \cdot (h1_A - h1_B) + R \cdot \bigl(p_{\mathrm{fail},A} \cdot h_{\mathrm{re},A} - p_{\mathrm{fail},B} \cdot h_{\mathrm{re},B}\bigr) }

Açıklama:

Payda pozitif olduğunda, eğer N_{it} > N_{it}^{\ast} ise A daha avantajlıdır, N_{it} < N_{it}^{\ast} ise B daha avantajlıdır. Payda negatif olduğunda, eşitsizlik yönü tersine döner. Payda 0’a yaklaştığında, her iki aracın da her iterasyondaki kombine marjinal maliyeti neredeyse aynıdır; seçim çoğunlukla sabit maliyet ve soğuk başlangıç maliyetine bağlıdır.

Bu formülü kullanarak üç tipik kırılma noktasını hesaplayabilirsiniz: token başına faturalandırma aracı vs prompt başına faturalandırma aracı, token başına faturalandırma aracı vs API çağrı sayısına göre faturalandırma aracı, ve API çağrı sayısına göre faturalandırma aracı vs prompt başına faturalandırma aracı. Sadece kendi c0, c1 değerlerinizi yukarıdaki gibi token, çağrı sayısı veya prompt sayısı olarak açmanız yeterlidir.

Pratik Stratejiler: Maliyeti Düşürmek için Uygulanabilir Yöntemler

1. Odaklanmış Geliştirme: Token Başına Faturalandırma Optimizasyon Stratejisi

Token başına faturalandırma araçları (Codex Cli gibi) için temel strateji iş bağlamını istikrarlı tutmaktır.

Prensip: Tin0_i‘nin tekrar ödenmesini önlemek. Aynı projede sürekli çalışmak, başlangıç bağlam yükleme maliyetini paylaştırabilir ve aynı zamanda önbellek isabet oranını artırarak yanıt hızını önemli ölçüde hızlandırabilir.

Uygulama: Sık sık proje değiştirmekten veya bağlamı temizlemekten kaçının. Yalnızca tek bir hata düzeltmesi yapıp projeyi kapatmanız gerekiyorsa, önceki aşamadaki çok sayıda dosya okumanın değeri tam olarak kullanılamaz.

2. Gereksinimleri Birleştirme: API Çağrı Sayısına Göre Faturalandırma Optimizasyon Stratejisi

Çağrı sayısına göre faturalandırma araçları (Gemini Code Assistant gibi) için temel strateji, “bağlam oluşturma” çağrı sayısını tam olarak kullanmaktır.

Prensip: A0_i maliyetini dağıtmak. Araç çağrıları, dosya okuma vb. işlemler çağrı sayısına dahil edilir.

Uygulama: Tek bir oturumda birden fazla ilgili gereksinimi odaklanarak işleyin, erken aşamadaki dosya okuma gibi işlemlerin değer yoğunluğunu artırın. Küçük bir görev tamamladıktan hemen sonra bağlantıyı kesmekten kaçının.

3. Büyük Görev İşleme: Prompt Başına Faturalandırma Optimizasyon Stratejisi

Prompt sayısına göre faturalandırma araçları (Cursor eski sürümü gibi) büyük görevleri veya soğuk başlangıç bakımını işlemek için uygundur.

Prensip: Marjinal maliyeti sabitlemek. Bağlam ne kadar uzun olursa olsun, tek bir prompt’un maliyeti sabittir.

Uygulama: “Büyük görev”, token tüketimi yüksek (çok sayıda dosya okuma, çok uzun bağlam) ancak çıktısı sınırlı olan veya yüksek kaliteli bir model kontrolü gerektiren görevleri ifade eder. Bu tür görevler, tek seferlik faturalandırma araçlarını kullanmak en iyi fiyat/performans oranını sağlar. Küçük görevler için tek seferlik faturalandırma araçları daha düşük maliyet etkinliğine sahiptir.

Hesaplanabilir Bir Seçim Akışı

Aşağıdaki akış şeması değişkenleri seçim mantığına eşler. N_s ve N_{it} büyüklüklerini tahmin ettikten sonra, kırılma noktası formülünü kullanarak karşılaştırma yapabilir ve en uygun planı belirleyebilirsiniz.

flowchart TD
    A[Bu döngü için iş yükünü tanımla] --> B[N_s tahmini: Yeni oturum sayısı]
    B --> C[N_it tahmini: Oturum başına iterasyon sayısı]
    C --> D[Her araç türü için c0, c1 tahmini]
    D --> E[N_it* formülünü yerleştir]
    E --> F{Ana yük şekli?}
    F -->|N_s büyük, N_it küçük| G[Öncelik: prompt veya çağrı sayısına göre faturalandırma]
    F -->|N_s küçük, N_it büyük| H[Öncelik: token başına faturalandırma]
    F -->|Her ikisi de büyük| I[İş akışını böl: Soğuk başlangıç için prompt/çağrı, derinlemesine aşama için token]

    classDef in fill:#2c3e50,stroke:#ecf0f1,stroke-width:2px,color:#ecf0f1
    classDef calc fill:#3498db,stroke:#2980b9,stroke-width:2px,color:#fff
    classDef decide fill:#f39c12,stroke:#d35400,stroke-width:2px,color:#fff
    classDef out fill:#27ae60,stroke:#229954,stroke-width:2px,color:#fff

    class A,B,C in
    class D,E calc
    class F decide
    class G,H,I out