Claude API ile Python uygulaması geliştirme rehberi
Ubuntu 24.04 üzerinde Claude API anahtarını güvenli yapılandırarak Python ile log analiz aracı oluşturun. Akış yönetimi ve maliyet kontrolü içeren ilk uygulamanızı kurun.
Ne inşa ediyorsunuz
Hata mesajlarını veya günlük kayıtlarını yönlendirerek (pipe) sade bir dille tanı alabileceğiniz, Ubuntu 24.04 yüklü yeni bir VPS üzerinde çalışan bir komut satırı aracı: journalctl -u nginx -n 50 | explain. Yaklaşık altmış satırlık Python kodundan oluşan bu uygulama, gerçek bir Claude API uygulamasının ihtiyaç duyduğu her şeyi barındırır: güvenli bir şekilde saklanan bir anahtar, virtualenv kullanımı, SDK yanıt yapıları, akış (streaming), türü belirlenmiş istisna zinciri ve arka planda çalışması için bir systemd birimi.
Bu projeyi özellikle seçtim. Çoğu "ilk API uygulaması" eğitiminde, bir daha asla açmayacağınız bir sohbet botu yapmanız istenir. Bir günlük çözümleyici (log explainer) ise sunucuda ilk günden itibaren işe yarar ve yeni başlayanların genellikle hata yaptığı iki konuyu zorunlu kılar: yanıt nesnesini doğru okumak ve harcamaları kontrol altında tutmak. API, belirlediğiniz sınırlar dışında bir üst limit olmaksızın token başına ücretlendirilir; bu nedenle maliyet kontrolü burada sonradan eklenen bir özellik değil, tasarımın temel bir parçasıdır. Bu disiplin, ileride aynı VPS üzerinde tmux içinde Claude Code çalıştırma aşamasına geçtiğinizde de önemini koruyacaktır.
Konsoldan API anahtarı alma
API erişimi, platform.claude.com adresindeki Anthropic Konsolu üzerinden yönetilir. Kaydolun ve ardından Settings → API Keys (dokümantasyon doğrudan platform.claude.com/settings/keys adresine yönlendirir) kısmından bir anahtar oluşturun. Anahtar yalnızca bir kez gösterilir, sk-ant- ile başlar ve tekrar görüntülenemez; bu nedenle anahtarı hemen kopyalayın ya da silip yeniden oluşturun.
Ücretlendirme hakkında: Temmuz 2026 itibarıyla API için devam eden bir ücretsiz katman bulunmamaktadır. Anthropic'in fiyatlandırma dokümanlarına göre yeni kullanıcılar test amaçlı küçük bir miktar ücretsiz kredi alırlar; kesin miktar kayıt sırasında Konsol'da gösterilen değerdir ve bu kredi tükendiğinde, isteklerin başarılı olması için hesaba bakiye yüklemeniz gerekir. Bu durum claude.ai aboneliğinden ayrıdır; Pro veya Max planları API kredisini kapsamaz ve bir API anahtarı size sohbet uygulamasına erişim sağlamaz. Abonelik ile API arasında bir seçim yapıyorsanız, bu takasın kendi içinde değerlendirilmesi gerekir: hangi Claude planına ihtiyacınız olduğu.
Anahtarı tek bir proje veya sunucu ile sınırlandırarak oluşturun. Bir anahtar sızdırıldığında —ki yeterince uzun bir zaman diliminde bu mutlaka gerçekleşecektir— sahip olduğunuz diğer her şeyi bozmadan o anahtarı iptal edebilmeniz gerekir.
Anahtarı .bashrc dosyasından uzak tutun
Refleksif hareket export ANTHROPIC_API_KEY=sk-ant-... dosyasını ~/.bashrc içinde kullanmaktır. Bunu yapmayın. Üç ayrı sorun vardır:
- Her süreç onu devralır. Oturum açtığınız kabukta dışa aktarılan bir ortam değişkeni, başlattığınız her şeye yayılır; web uygulaması, ortamını hata raporuna dökerek yardımcı olan çökme raporlayıcısı ve birinin açık bıraktığı
phpinfo()sayfası buna dahildir. Anahtarın maruz kalma alanı "bu kullanıcının çalıştırdığı her şey" haline gelir. - Yazmak
~/.bash_historydosyasına düşmesine neden olur. Dışa aktarma komutunu bir kez elle çalıştırdığınızda anahtarınız sonsuza kadar düz metin bir dosyada kalır ve ev dizininizin her yedeğine senkronize edilir. - systemd ihtiyaç duyduğunda orada değildir. Servisler
.bashrcdosyanızı okumaz, bu nedenle betiği bir birime yükselttiğinizde, genellikle sabah saat 6'da gizemli bir 401 hatasıyla bu yapılandırma başarısız olur.
Sunucuda doğru yöntem, yalnızca ihtiyaç duyan sürecin yüklediği, 600 izinlerine sahip özel bir ortam dosyası kullanmaktır:
sudo mkdir -p /opt/explain
sudo install -m 600 -o root -g root /dev/null /etc/claude-explain.env
printf 'ANTHROPIC_API_KEY=sk-ant-YOUR-KEY-HERE\n' | sudo tee /etc/claude-explain.env >/dev/nullAnahtarı düzenleyicinin takas (swap) dosyalarından uzak tutmak istiyorsanız bir düzenleyici yerine printf ile tee kullanın; her iki durumda da ls -l /etc/claude-explain.env ile dosyanın -rw------- okuduğunu ve sahibinin root olduğunu doğrulayın. Etkileşimli kabuklar anahtarı bir sarmalayıcı (aşağıda) aracılığıyla çağrı başına alır ve systemd bunu EnvironmentFile= aracılığıyla alır; root, ayrıcalıkları düşürmeden önce dosyayı okur, böylece servis kullanıcısının dosyaya okuma erişimine ihtiyacı kalmaz. Anahtar hiçbir zaman kodda, git içinde, ps çıktısında veya kabuk geçmişinde görünmez.
SDK'yi bir venv içine kurun
Ubuntu 24.04, PEP 668 zorunluluğu ile birlikte Python 3.12 sürümünü sunar; bu nedenle sistem yorumlayıcısı üzerinde doğrudan çalıştırılan bir pip install anthropic komutu, error: externally-managed-environment hatasıyla başarısız olur. Bu hata, işletim sisteminin beklendiği gibi çalıştığını gösterir; bu durumda bir virtualenv kullanın:
sudo apt update && sudo apt install -y python3-venv
sudo python3 -m venv /opt/explain/venv
sudo /opt/explain/venv/bin/pip install anthropicSunucu üzerinde bir aktivasyon seremonisine gerek yoktur: /opt/explain/venv/bin/python komutunu doğrudan çağırmak, her zaman venv içindeki paketleri kullanır.
İlk çağrı ve yanıtın doğru okunması
import anthropic
client = anthropic.Anthropic() # reads ANTHROPIC_API_KEY from the environment
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1000,
messages=[{"role": "user", "content": "Explain what a systemd unit file is in three sentences."}],
)
for block in response.content:
if block.type == "text":
print(block.text)Bu on iki satırın içindeki iki unsur, API'nin zihinsel modelinin büyük kısmını oluşturur. Birincisi, argümansız kullanılan anthropic.Anthropic(), anahtarı ortam değişkeninden okur; asla bir string literal olarak geçirmeyin. İkincisi, response.content bir string değil, içerik bloklarından oluşan bir listedir. Bunu doğrudan yazdırırsanız, yeni başlayanların sıkça karşılaştığı şu klasik çıktı ile karşılaşırsınız:
[TextBlock(citations=None, text='A systemd unit file is...', type='text')]Bu bir hata değil, nesnenin repr çıktısıdır. Yanıtlar birden fazla blok türü (metin, araç çağrıları, düşünme süreci) içerebilir; bu nedenle .text kısmına erişmeden önce döngüye girmeli ve block.type == "text" değerini kontrol etmelisiniz. Bu döngüyü ilk günden kurduğunuzda, "anlamsız karakterler yazdırıyor" şeklindeki kafa karışıklığı tamamen ortadan kalkar.
Tam olarak claude-opus-4-8 model kimliğini kullanın. Güncel nesil kimlikleri tarihsizdir; tarih soneki eklemenizi söyleyen kas hafızasına (veya eski blog yazılarına) direnin. Bu işlem, aşağıda ele alınan 404 hatasına yol açar.
Gerçek araç: açıklama
Programın tamamı aşağıdadır; stdin girişi alır, tanı verilerini stream eder ve hataları yönetir:
#!/usr/bin/env python3
"""explain: pipe an error or log excerpt in, get a diagnosis out."""
import sys
import anthropic
MODEL = "claude-opus-4-8"
def main() -> int:
text = sys.stdin.read().strip()
if not text:
print("usage: journalctl -u nginx -n 50 | explain", file=sys.stderr)
return 1
client = anthropic.Anthropic()
try:
with client.messages.stream(
model=MODEL,
max_tokens=1500,
system=(
"You are a senior Linux sysadmin. The user pipes you server "
"logs or error output. Name the most likely cause outright, "
"then give the commands to confirm and fix it. Be terse."
),
messages=[{"role": "user", "content": text}],
) as stream:
for chunk in stream.text_stream:
print(chunk, end="", flush=True)
print()
except anthropic.RateLimitError as e:
retry_after = e.response.headers.get("retry-after", "60")
print(f"rate limited; retry in {retry_after}s", file=sys.stderr)
return 2
except anthropic.APIStatusError as e:
print(f"API error {e.status_code}: {e.message}", file=sys.stderr)
return 2
except anthropic.APIConnectionError:
print("network error reaching the API", file=sys.stderr)
return 2
return 0
if __name__ == "__main__":
sys.exit(main())Bunu /opt/explain/explain.py olarak kaydedin, ardından etkileşimli kullanım için anahtarı yükleyen bir sarmalayıcı (wrapper) ekleyin:
sudo tee /usr/local/bin/explain >/dev/null <<'EOF'
#!/bin/sh
set -a; . /etc/claude-explain.env; set +a
exec /opt/explain/venv/bin/python /opt/explain/explain.py "$@"
EOF
sudo chmod 755 /usr/local/bin/explain(Sarmalayıcı sudo üzerinden çalıştırılmalıdır veya ortam dosyası, yönetici kullanıcınızın ait olduğu bir gruba sahip olmalıdır; dosya izinlerini 644 yaparak gevşetmek yerine bu yöntemlerden birini bilinçli olarak seçin.)
Neden streaming. client.messages.stream, token'ları tüm üretim tamamlanana kadar sessiz kalmak yerine geldikleri anda yazdırır ve uzun çıktılarda HTTP zaman aşımlarını önler; SDK, tam olarak bu nedenle streaming olmayan çağrılarda çok büyük max_tokens değerlerini reddeder. Birleştirilmiş nesneye daha sonra ihtiyacınız olursa, with bloğu içinde stream.get_final_message() çağrısı yapın.
Neden bu istisna sırası. SDK, en spesifik olandan başlayarak türü belirlenmiş istisnalar fırlatır: RateLimitError bir 429 hatasıdır ve ne kadar beklemeniz gerektiğini belirten bir retry-after başlığı taşır; APIStatusError diğer 2xx dışı yanıtları kapsar (sunucu tarafındaki sorunlar için e.status_code >= 500 kısmını kontrol edin); APIConnectionError ise isteğin hiçbir yanıt alamadığı anlamına gelir. Bir yeniden deneme döngüsü oluşturmadan önce şunu unutmayın: SDK, 429 ve 5xx hatalarını zaten kendisi yeniden dener; varsayılan olarak üstel geri çekilme (exponential backoff) ile iki kez (istemci üzerinde max_retries). Sizin except bloğunuz çalıştığında, yeniden deneme hakları tükenmiş olur; bu nedenle bir CLI aracında yapılması gereken doğru hareket, uyuyup sunucuya yüklenmek değil, durumu raporlayıp çıkış yapmaktır.
Maliyet kontrolü
API'nin yapılandırdığınız dışında yerleşik bir aylık üst sınırı bulunmadığı ve buradaki her hata sessizce biriktiği için bu konu ayrı bir bölümü hak ediyor.
max_tokens, çağrı başına harcama tavanınızdır. Çıktı token'ları maliyetli olan taraftır; Opus 4.8 modelinde girdi fiyatının beş katıdır ve max_tokens, modelin üretebileceği miktar üzerinde kesin bir sınırdır. Kontrolden çıkmış bir istem, izin verdiğiniz çıktı miktarından daha fazlasına mal olamaz. Sınırı işe göre belirleyin: 1.500 token bir günlük analizi için fazlasıyla yeterlidir; bir sınıflandırma görevi için 100 token yeterlidir. Yanıtlar stop_reason: "max_tokens" ile cümle ortasında kesiliyorsa sınırı çok dar tutmuşsunuz demektir; varsayılan olarak çok yüksek değerler girmek yerine sınırı bilinçli bir şekilde artırın.
Göndermeden önce sayın. Girdi de maliyetlidir ve günlük kayıtları (log) hacimlidir. API'nin ücretsiz olarak kullanılabilen bir sayma uç noktası (endpoint) vardır (mesaj oluşturmadan bağımsız, kendi hız sınırlarına sahiptir):
count = client.messages.count_tokens(
model="claude-opus-4-8",
messages=[{"role": "user", "content": big_log_text}],
)
print(count.input_tokens)Bunu, 2 GB boyutundaki bir günlük kaydını yanlışlıkla araca yönlendirmeye karşı koruma olarak kullanın. Bunun için tiktoken kullanmayın; bu OpenAI'ın tokenizer'ıdır ve Claude token'larını normal metinlerde yaklaşık %15-20, kodlarda ise daha fazla oranda eksik hesaplar.
Modele sadakatinize göre değil, göreve göre karar verin. Temmuz 2026 itibarıyla Opus 4.8 (claude-opus-4-8), milyon girdi token'ı başına 5 dolar ve milyon çıktı token'ı başına 25 dolar maliyete sahiptir; Haiku 4.5 (claude-haiku-4-5) 200K bağlam (context) ile 1 dolar/5 dolar seviyesindedir; Sonnet 5 (claude-sonnet-5) ise 31 Ağustos 2026'ya kadar geçerli 2 dolar/10 dolar tanıtım fiyatıyla 3 dolar/15 dolar aralığındadır. Somut olarak: 2.000 token'lık bir günlük alıntısı ve 500 token'lık bir yanıt, Opus üzerinde yaklaşık 0,0225 dolara, Haiku üzerinde ise 0,0045 dolara mal olur. Çıktı kalitesini değerlendirirken Opus ile başlayın, ardından aynı istemleri Haiku üzerinde deneyin; yüksek hacimli ve basit dönüşümler için Haiku, beşte bir fiyatına genellikle ayırt edilemez sonuçlar verir. Bunlardan herhangi birini bütçenize sabit kodlamadan (hard-coding) önce fiyatlandırma sayfasından güncel rakamları doğrulayın.
Bekleyebilecek her şey için toplu işleme (Batch) kullanın. Batches API, istekleri standart fiyatların %50'si üzerinden eşzamansız (asynchronous) olarak işler ve çoğu toplu işlem bir saat içinde tamamlanır. Gece özetleri, geriye dönük veri yüklemeleri, toplu sınıflandırma; kısacası bir insanın beklemediği her işlem burada yapılmalıdır.
Tekrarlanan bağlam için istem önbellekleme (Prompt caching). Eğer her çağrı aynı büyük sistem istemini veya operasyonel kılavuzu (runbook) yeniden gönderiyorsa, bunu önbelleklenebilir olarak işaretleyin:
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1000,
system=[{
"type": "text",
"text": RUNBOOK_TEXT, # the same 30K tokens on every call
"cache_control": {"type": "ephemeral"},
}],
messages=[{"role": "user", "content": question}],
)
print(response.usage.cache_read_input_tokens) # non-zero from the second call onÖnbellek yazma işlemleri girdi fiyatının yaklaşık 1,25 katı, okuma işlemleri ise 5 dakikalık TTL (yaşam süresi) ile 0,1 katı maliyetindedir; bu nedenle aynı pencere içindeki ikinci çağrı, ilkinin maliyetini zaten karşılamış olur. İki noktaya dikkat edin: Önbelleğe alınan önek (prefix), model başına belirlenen minimum sınırı geçmelidir (Opus üzerinde birkaç bin token); bu nedenle kısa bir sistem istemi sessizce hiç önbelleğe alınmayacaktır. Ayrıca, özdeş çağrılar boyunca cache_read_input_tokens sıfır kalıyorsa, önekinizdeki bir şey her istekte değişiyor demektir (bunun genellikle sorumlusu bir zaman damgasıdır).
Nelerin girdi olarak sayıldığını unutmayın. Sistem istemleri, araç tanımları ve çok turlu konuşmalarda her turda yeniden gönderdiğiniz tüm geçmiş, girdi token'ı olarak faturalandırılır. Geçmişi asla kırpmayan bir sohbet döngüsü, maliyet açısından karesel olarak büyür. Herhangi bir konuşma tabanlı yapı kurmadan önce tüm muhasebeyi anlamakta fayda vardır: Claude token kullanımı ve faturalandırmanın gerçekte nasıl hesaplandığı.
systemd altında çalıştırma
Environment-file disiplininin sağladığı avantaj: her sabah dünün hatalarını özetleyen bir zamanlayıcı.
# /etc/systemd/system/log-digest.service
[Unit]
Description=Daily error-log digest via the Claude API
[Service]
Type=oneshot
User=explain
Group=systemd-journal
EnvironmentFile=/etc/claude-explain.env
ExecStart=/bin/sh -c 'journalctl -p err --since yesterday | /opt/explain/venv/bin/python /opt/explain/explain.py >> /var/log/log-digest.txt'# /etc/systemd/system/log-digest.timer
[Unit]
Description=Run the log digest every morning
[Timer]
OnCalendar=06:15
Persistent=true
[Install]
WantedBy=timers.targetsudo useradd -r -s /usr/sbin/nologin explain
sudo touch /var/log/log-digest.txt && sudo chown explain /var/log/log-digest.txt
sudo systemctl daemon-reload
sudo systemctl enable --now log-digest.timer
sudo systemctl start log-digest.service # test it once, right nowEnvironmentFile= kullanımının sağladığı faydaya dikkat edin: systemd, root tarafından sahiplenilen ve 600 modundaki dosyayı, yetkisiz explain kullanıcısına geçiş yapmadan önce okur. Böylece süreç değişkene erişebilirken, kullanıcı anahtar dosyasını okuyamaz. systemd-journal grubu, log erişimi sağlar. Manuel bir systemctl start ile test yapın ve journalctl -u log-digest.service içeriğini okuyun; bir yazım hatasını bulmak için 06:15'i beklemeyin. Bu yapı bir shell pipeline ile yönetilemeyecek kadar büyüdüğünde, aynı anahtar-dosyada-değişken yaklaşımı doğrudan aynı sunucu üzerindeki Claude destekli n8n iş akışlarına taşınabilir.
Hata modları ve karşılaşacağınız dizeler
Çalışan bir anahtarda 401 hatası. İstisna şu şekilde görünür:
anthropic.AuthenticationError: Error code: 401 - {'type': 'error', 'error': {'type': 'authentication_error', 'message': 'invalid x-api-key'}, 'request_id': 'req_011CSHoEeqs5C35K2UUqR7Fy'}Anahtar terminalinizde çalışıyor ancak servis 401 hatası veriyorsa, servis anahtarı hiç almamış demektir; systemd'nin .bashrc dosyasını okumadığını unutmayın; EnvironmentFile= değerinin doğru yolu gösterdiğinden emin olun. Diğer nedenler: env dosyasına yapıştırılan tırnak işaretleri (ANTHROPIC_API_KEY="sk-ant-...", systemd tırnakları değerin dışına atar ancak kabuk sarmalayıcınızın . file değeri, hatalı tırnak kullanımı durumunda bunları değerin içinde tutar), sondaki boşluk karakterleri veya geçen hafta Console üzerinden iptal ettiğiniz bir anahtar olabilir.
Model yazım hatasından kaynaklanan 404 hatası. Bunun en yaygın biçimi, güncel bir model kimliğine tarih soneki eklemektir:
anthropic.NotFoundError: Error code: 404 - {'type': 'error', 'error': {'type': 'not_found_error', 'message': 'model: claude-opus-4-8-20260115'}, 'request_id': 'req_011CSJqymAvNw4bT3qmDdMbA'}Güncel nesil kimlikleri tam olarak yazıldığı gibidir; claude-opus-4-8, claude-haiku-4-5, claude-sonnet-5. Bunları modellerin dokümantasyonundan kopyalayın, asla hafızanızdan veya eski bir eğitimden almayın.
429 rate_limit_error. Hata türü dizesi rate_limit_error şeklindedir ve yanıt, beklenecek saniye süresini içeren bir retry-after başlığı taşır. SDK, istisnayı görmeden önce zaten iki kez bekleme süresiyle (backoff) yeniden deneme yapmıştır; bu nedenle kalıcı 429 hataları, sürekli hızınızın katmanınızı gerçekten aştığı anlamına gelir. İşlemleri gruplandırın veya zamana yayın, yeniden deneme döngüsünü daraltmayın.
Metin yerine nesneyi yazdırıyor. Çıktı [TextBlock(citations=None, text='...', type='text')] gibi görünür. Blokları yinelemek ve block.type == "text" olanlardan .text değerini okumak yerine response.content yazdırdınız. Yukarıdaki her SDK örneği bunu doğru şekilde yapar; döngüyü kopyalayın.
error: externally-managed-environment. Ubuntu 24.04'ün sistem Python'ı üzerinde pip install çalıştırdınız. venv kullanın, önemsediğiniz bir sunucuda asla --break-system-packages çalıştırmayın.
Kırpılmış yanıtlar. response.stop_reason == "max_tokens", modelin düşünce sürecinin ortasında çıktı sınırınıza ulaştığı anlamına gelir. Tasarlandığı gibi çalışmaktadır; sınırı bilinçli olarak artırın.
İlk uygulamanız çalıştığında, Claude ile yapay zeka ajanı oluşturma rehberi, aynı API çağrılarını araç kullanan bir ajana dönüştürmenizi sağlar.
FAQ
Claude API deneme maliyeti ne kadardır?
Bu tür bir araç için oldukça düşüktür. Temmuz 2026 itibarıyla Opus 4.8, milyon girdi token'ı başına 5 dolar ve milyon çıktı token'ı başına 25 dolar maliyete sahiptir. Bu nedenle, birkaç bin girdi ve birkaç yüz çıktı token'ı içeren tipik bir günlük analizi yaklaşık iki cent tutar; Haiku 4.5 ($1/$5) modelinde ise bu maliyet yarım centin altındadır. Günlük özetlerin bir aylık maliyeti bir fincan kahveden daha azdır. Risk, çağrı başına düşen fiyat değil, sınırsız döngüler ve sınırsız max_tokens kullanımıdır; bu rehberde her ikisinin de açıkça sınırlandırılmasının nedeni budur.
Claude API için ücretsiz bir katman var mı?
Temmuz 2026 itibarıyla devam eden bir ücretsiz katman bulunmamaktadır. Anthropic'in fiyatlandırma belgelerine göre, yeni kullanıcılar API'yi test etmeleri için küçük miktarda ücretsiz kredi alırlar. Bu tek seferlik bir deneme olup, tam miktar kayıt sırasında Console üzerinde gösterilir; sonrasında hesaba bakiye yüklemeniz gerekir. Hedefiniz en üst düzey kalite yerine istek başına sıfır marjinal maliyet ise, alternatif olarak Ollama ile açık ağırlıklı bir modeli kendi sunucunuzda barındırabilir ve token yerine RAM maliyeti ödeyebilirsiniz.
API anahtarımı sunucuda nasıl güvende tutabilirim?
Anahtarı asla kod içinde, git üzerinde, .bashrc üzerinden dışa aktarılmış şekilde veya geçmiş kaydına düşecek bir kabuk komut satırında tutmayın. Anahtarı root sahipliğinde ve 600 izinlerine sahip bir dosyaya yerleştirin. Anahtarı süreç bazlı yükleyin; etkileşimli kullanım için bir sarmalayıcı betik, systemd için EnvironmentFile= kullanın. Her sunucu veya proje için ayrı bir anahtar tanımlayın; böylece sızan bir anahtarı iptal etmek tüm sistemi değil, sadece ilgili parçayı etkiler. Anahtar herhangi bir şekilde bir yapıştırma sitesine veya git commit'ine düşerse, Console üzerinden derhal iptal edin; commit'i silmek anahtarın sızdığı gerçeğini değiştirmez.
Hangi Claude modeli ile başlamalıyım?
Çıktıların üzerine inşa edilecek kadar iyi olup olmadığını değerlendirirken, fikri tam kalitede test etmek istediğinizde ve hobi seviyesindeki kullanımda maliyet farkı sadece cent düzeyinde olduğundan claude-opus-4-8 ile başlayın. İstem (prompt) netleştiğinde, gerçek girdilerinizi claude-haiku-4-5 üzerinde tekrar çalıştırın; özetleme, sınıflandırma ve günlük triyajı işlemleri için bu model genellikle beşte bir fiyatına aynı performansı sunar. Haiku veya Sonnet modellerine varsayılan olarak değil, ölçüm yaparak geçiş yapın.