Yapay Zekayla Kod Yazarken Token Tasarrufunu Nasıl Yapıyorum? — Siz ve Dünya, Kullanım Limitine Ulaştınız.

MB

Bir şey üzerinde çalışırken ya da bir LLM ajanıyla başka bir şekilde etkileşim kurarken birden "Kullanım limitinize ulaştınız" mesajını aldığınız anı bilir misiniz? Artık sıfırlanmasını beklemeniz gerekir ya da belki model değiştirebilirsiniz, ama o model limite takılan kadar iyi değildir. Merak etmeyin — o mesajın altında bir yerde, kredi kartı ekleme ve etkileşime devam etmenin kaç token tuttuğunu görme seçeneğini bulacaksınız.

İklim değişikliğinin etkilerini göstermeye devam ettiği bir dünyada — dünyanın dört bir yanında orman yangınları, düşük su seviyeleri ve eriyen buzullar — token tasarrufu, gezegenin bir parçasını kurtarmak anlamına gelebilir. Kullanıcılar token'larını verimli kullanabilirse, yapay zeka modellerini çalıştırmak için gereken enerji ve bu enerjiye giden tüm kaynaklar azaltılabilir. Evdeki bilgisayarınızın bir LLM modeli çalıştırabildiği ve işiniz için ihtiyaç duyduğunuz her şeyi yapabildiği bir noktaya gelebiliriz.

Token'ları yapay zeka modellerinin para birimi olarak düşünebilirsiniz, ama mesele bundan ibaret değil. Token'lar her model tarafından farklı hesaplanır ve hem input hem de output boyutu önemlidir. Kaba bir kural olarak 1 token yaklaşık 4 karaktere denk gelir. Örneğin "My coffee machine does not turn on" yazarsam, bu cümle 6 boşluk dahil 34 karakterdir. Çoğu model token tasarrufu için boşluk karakterlerini ayıklar; onları çıkarırsak 28 karakter kalır, bu da 28 / 4 = 7 token eder. Diyelim ki modeliniz Claude Fable 5'e benzer bir fiyata sahip — 1 milyon input token'ı için 10 €, 1 milyon output token'ı için 50 €. Sadece input için 0,00007 € ödersiniz ve output'un uzunluğuna bağlı olarak — diyelim 300 karakter — output için yaklaşık 0,00375 € ödersiniz; yani bu tek soru için toplamda neredeyse 0,004 € ödemiş olursunuz.

İşte basitleştirilmiş hesap:

Cümle: "My coffee machine does not turn on" → 34 karakter (6 boşluk dahil) → boşluksuz: 34 − 6 = 28 karakter

Input token'ları: 28 karakter ÷ 4 = 7 token

Input maliyeti (10 € / 1M token): 7 × (10 € ÷ 1.000.000) = 0,00007 €

Output: 300 karakter 300 ÷ 4 = 75 token

Output maliyeti (50 € / 1M token): 75 × (50 € ÷ 1.000.000) = 0,00375 €

Toplam: 0,00007 € + 0,00375 € = 0,00382 €

ChatGPT veya Claude gibi LLM'leri kullanırken kontrol edemediğimiz bir şey var: cevabın ne kadar uzun olacağı ya da etkileşim için önceden ne kadar para harcamak istediğimiz. LLM'leri kodlama için kullanmaya başladığınızda işler iyice karışır, çünkü izin verirseniz LLM terminal komutları çalıştırır, dosyaları yapılandırır, kod yazar, MCP sunucularından veya skill'lerden bilgi çeker ve daha fazlasını yapar. LLM'leri bu şekilde kullanırsanız kontrolü kaybetmek çok kolaydır.

Kendime, geliştirme sırasında ya da genel olarak yapay zekayla çalışırken nasıl token tasarrufu yapabileceğimi sordum. Hedefim minimum-orta düzeyde input ve minimum output'tu. Bunu test etmek için Claude Code kullandım ve aynı projeyi üç şekilde kurmayı denedim: framework'süz ve MCP sunucusuz, framework'lü ama MCP'siz ve framework ile MCP sunucusu birlikte.

İşte sonuçlar:

Tablo 1

Vanilla Node (T1)Next.js, MCP'siz (T2)Next.js + MCP (T3)
Input token'ları505114.800 (tahmini)
Output token'ları~27.00044.0655.700 (tahmini)
Toplam token~27.05044.116~20.500 (tahmini) / ~30.200 (ölçülen)
Maliyet0,675 $1,102 $0,217 $

Sonuç şu oldu: framework + MCP sunucusu yaklaşımı çok daha az token kullandı — daha net söylemek gerekirse neredeyse 3,5 kat daha ucuzdu ve 2 kat daha az token harcadı.

Framework + MCP yaklaşımı biraz manuel iş gerektirdi. MCP sunucusunu kendim kurmam ve ilk yapılandırmayı kendim yapmam gerekti. Yine de bu el emeğine rağmen avantajlar açık: daha az token harcıyorsunuz, muhtemelen daha az enerji tüketiyorsunuz ve para biriktiriyorsunuz. Bu ayrıca LLM kullanımınızın ve bilginizin, sadece büyük miktarda token tüketen kullanıcılardan daha iyi olduğu anlamına da gelebilir.

Hepinizi framework'leri ve MCP sunucularını kullanmaya, ayrıca A2A, ACP, ANP ve UCP gibi diğer yapay zeka protokollerini denemeye teşvik ediyorum; çünkü bunlar LLM'inize en alakalı ve en hızlı bağlamı veriyor. Sonuçlarınız da muhtemelen daha iyi olacak — bunu somut kanıtlarla test etmedim, ama gördüğüm kadarıyla projenin yapısı ve temeli sağlam görünüyor.

Token kullanımınıza dikkat edin ve gezegeni koruyun.

Aşağıda, bu küçük deney için kullanılan tabloların geri kalanını ve prompt'ları bulacaksınız.

Claude Code v2.1.233, Model: Opus 5 (varsayılan)

Prompt: "Endpoint'ime bir API çağrısı yapan ve yanıtın başlığını, içeriğini ve yazarını gösteren bir proje oluştur. Endpoint URL'si: http://URL:8081/endpoint. Ayrıca bu görev için her adımda kaç token harcadığını listele."

Tablo 2

#Adım~Bu adımdaki token~Kümülatif
1Endpoint'e curl (büyük JSON yanıtı)~9.500~9.500
2node/npm kontrolü, hedef dizin~1.600~11.100
3package.json yaz~1.000~12.100
4api.js yaz~1.300~13.400
5server.js yaz~1.400~14.800
6public/index.html yaz~2.400~17.200
7cli.js yaz~1.000~18.200
8CLI'yi çalıştır (tüm makaleyi basar)~1.900~20.100
9Sunucu testi — 3000 portunda EADDRINUSE~1.900~22.000
104300'de sunucuyu yeniden test et~1.600~23.600
11Varsayılan portu düzenle~800~24.400
12README.md yaz~1.200~25.600
13Özet~1.300~26.900

Prompt: "Next.js kullanarak, endpoint'ime bir API çağrısı yapan ve yanıtın başlığını, içeriğini ve yazarını gösteren bir proje oluştur. Endpoint URL'si: http://URL:8081/endpoint. Ayrıca bu görev için her adımda kaç token harcadığını listele."

Tablo 3

#AdımToken
1Dizini listele, node kontrol et, endpoint'i yokla24.411
2create-next-app iskeleti1.951
3Oluşturulan dosyaları incele396
4.env.local + drafts.ts yaz1.251
5page.tsx yaz972
6layout.tsx oku (AGENTS.md'yi ortaya çıkardı)164
7Pakete gömülü Next dokümanlarını listele904
8Doküman dizinini + app ağacını oku163
9Başarısız cd (eski shell yolu)1.960
10Veri çekme rehberini oku204
11force-dynamic için grep2.309
12Önbellekleme rehberini oku397
133 düzenleme (no-store/force-dynamic kaldır, metadata)2.156
14Build #1 — statik prerender hatasını yakaladı507
15Eski önbellekleme rehberinde grep770
16Segment yapılandırma bölümünü oku302
17force-dynamic'i geri getiren 2 düzenleme2.386
18Build #2 — dinamik olduğunu doğrular337
19Dev sunucusunu başlat, HTML çek846
20Port çakışmasını teşhis et206
21:3001'de render edilen çıktıyı doğrula751
22Author işaretlemesini incele451
23Dev sunucusunun PID'sini al1.271
Toplam~44.065

Tablo 4

#AdımInput (tahmini)Output (tahmini)Sayac farkı (ölçülen)
1Proje yapısını incele + dokümanları bul400130468
2Doküman dizinini + 01-app ağacını oku950110924
3Doküman klasörlerini listele4501201.791
4fetching-data.md + route-handlers.md oku7.200901.190
5App dosyaları, yapılandırmalar + caching.md oku3.00012011.043
6fetch.md oku + deprecation'ları grep'le2.0201104.770
7lib/drafts.ts + route.ts yaz806004.197
8app/page.tsx yaz401.6502.496
9tsc --noEmit3070257
10Dev sunucusunu başlat150110324
11/api/drafts ve / testleri250330765
12İçeriği doğrula + lint200230821
13Önceki özet mesajı1.150~1.200
14Bu mesaj900
Toplam~14.800~5.700~30.200