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.
Konsol üzerinden 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. Konsol sizden anahtara bir isim vermenizi, bir son kullanma tarihi seçmenizi ve anahtarı kendinizle veya bir servis hesabıyla ilişkilendirmenizi ister; Anthropic, üretim ortamındaki servisler ve paylaşılan her türlü yapı için servis hesabı anahtarlarını önerir. Anahtar yalnızca bir kez gösterilir, sk-ant- ile başlar ve tekrar görüntülenemez; bu nedenle anahtarı hemen kopyalayın veya silip yeniden oluşturun.
Ücretlendirme hakkında: Ekim 2026 itibarıyla API için devam eden bir ücretsiz katman bulunmamaktadır. Anthropic'in fiyatlandırma dokümanları, yeni kullanıcıların test amaçlı küçük bir miktar ücretsiz kredi aldığını belirtir; kesin miktar kaydolduğunuzda Konsol'da görünen miktardır 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 ve bir API anahtarı size sohbet uygulamasını sağlamaz. Pro planı API kredisi içermez ancak Max ve Team planları içerir: Ekim 2026 itibarıyla Max 5x için aylık 100 dolar ve Max 20x için 200 dolar (Team planı, Standart koltuk başına 20 dolar ve Premium koltuk başına 100 dolar olmak üzere 500 dolar ile sınırlı bir havuz sunar); bu hak, claude.ai faturalandırma ayarlarınızdan bir Konsol organizasyonu ilişkilendirilerek kullanılır. Kullanılmayan krediler her fatura döneminin sonunda sona erer ve Claude Code kullanımını kapsamaz; detaylar Max ve Team aylık API kredilerinin işleyişi kısmında yer almaktadır. Abonelik ile API kullanımı arasında bir değerlendirme yapıyorsanız, bu takas kendi başına bir konudur: gerçekte hangi Claude planına ihtiyacınız var.
Anahtarı tek bir proje veya sunucu ile sınırlandırarak oluşturun. Bir anahtar sızdığında (ki yeterince uzun bir zaman diliminde mutlaka sızacaktır), sahip olduğunuz diğer her şeyi bozmadan o anahtarı iptal etmek istersiniz.
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-5-5",
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 içindeki iki unsur, API'nin zihinsel modelinin büyük kısmını oluşturur. Birincisi, argümansız anthropic.Anthropic() kullanımı anahtarı ortam değişkeninden okur; anahtarı 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. Opus 5.5 sürümünde bu durum ilk çağrıdan itibaren önemlidir: düşünme süreci her zaman etkindir, dolayısıyla model basit bir istekte düşünme sürecini atlamadığı sürece liste varsayılan olarak boş metin içeren bir thinking bloğu ile başlar ve response.content[0].text sizin yanıtınız değildir. Bu döngüyü ilk günden kurarsanız, "anlamsız karakterler yazdırıyor" şeklindeki kafa karışıklıklarının tamamı engellenmiş olur.
Tam model kimliği olarak claude-opus-5-5 kullanın. 4.6 neslinden itibaren model kimlikleri tarihsizdir ve tarihsiz kimlik sabitlenmiş snapshot'ı temsil eder; bu yüzden güncel bir modele 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. Daha eski modeller ise tam tersi şekilde çalışır: Haiku 4.5'in kanonik kimliği tarihli olan claude-haiku-4-5-20251001 değeridir.
Gerçek araç: açıklama
İşte tam program; stdin girdisi alınır, tanı akış halinde çıktıya verilir ve hatalar yönetilir:
#!/usr/bin/env python3
"""explain: pipe an error or log excerpt in, get a diagnosis out."""
import sys
import anthropic
MODEL = "claude-opus-5-5"
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=4096,
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 dahil olduğu bir gruba ait olmalıdır; dosya izinlerini 644 yaparak gevşetmek yerine bu yöntemlerden birini bilinçli olarak seçin.)
Neden akış (streaming) kullanılıyor. client.messages.stream, tüm üretimin tamamlanmasını beklemek yerine token'ları geldikçe yazdırır ve uzun çıktılarda HTTP zaman aşımlarını önler; SDK, tam olarak bu nedenle akışsız çağrılarda çok büyük max_tokens değerlerini reddedecektir. text_stream yalnızca yanıt metnini verir ve Opus 5.5 üzerindeki varsayılan düşünme ekranı ile hiçbir düşünme metni akışa dahil edilmez, böylece çıktı temiz kalır. Eğer daha sonra birleştirilmiş nesneye ihtiyaç duyarsanız, with bloğu içinde stream.get_final_message() çağrısı yapın.
Neden bu istisna sırası. SDK, en özelden genele doğru olacak şekilde 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 kontrol edilmelidir); APIConnectionError ise isteğin hiçbir yanıt almadığı 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 kodunuz çalıştığında, yeniden deneme hakları tükenmiş olur; bu nedenle bir CLI aracında doğru hareket, bekleyip sunucuya yüklenmek değil, durumu raporlayıp çıkış yapmaktır.
Maliyet kontrolü
API, sizin yapılandırdığınızın ötesinde yerleşik bir aylık üst sınıra sahip olmadığı 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 5.5 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. 5.5 modellerinde bu sınır düşünme sürecini de kapsar: düşünme token'ları max_tokens hesabına dahil edilir ve düşünme metni size geri döndürülmese bile çıktı olarak faturalandırılır. Sınırı işe göre belirleyin: 4,096 değeri, kısa bir günlük tanısı için önündeki düşünme sürecine yer bırakır; bir sınıflandırma görevi ise çok daha azına ihtiyaç duyar. Yanıtlar stop_reason: "max_tokens" ile yarıda kesiliyorsa, sınırı çok dar tutmuşsunuz demektir; varsayılan olarak devasa değerler atamak yerine, bilinçli bir şekilde artırın (veya modelin daha az düşünmesi için çaba ayarını düşürün).
Göndermeden önce sayın. Girdi de para tutar ve günlük kayıtları hacimlidir. API'nin ücretsiz olarak kullanılabilen bir sayma uç noktası vardır (mesaj oluşturmadan bağımsız, kendi hız sınırlarına sahiptir):
count = client.messages.count_tokens(
model="claude-opus-5-5",
messages=[{"role": "user", "content": big_log_text}],
)
print(count.input_tokens)Bunu, 2 GB'lık bir günlük kaydını yanlışlıkla araca yönlendirmeye karşı koruma sağlamak için kullanın ve gerçekten çağıracağınız modeli iletin: Claude 4.7 ve sonraki modeller, aynı metin için önceki Claude modellerinden yaklaşık %30 daha fazla token üreten daha yeni bir token'layıcı kullanır. Bunun için tiktoken kullanmayın; bu OpenAI'nin token'layıcısıdır, Claude'un değil, dolayısıyla sayıları faturalandırıldığınız değerlerle eşleşmeyecektir.
Sadakate göre değil, göreve göre model seçin. Ekim 2026 itibarıyla Opus 5.5 (claude-opus-5-5), milyon girdi token'ı başına 4 dolar ve milyon çıktı token'ı başına 20 dolar maliyetle çalışır; Haiku 5.5 (claude-haiku-5-5), 100,000 token'a kadar olan istemler için 0.10/0.50 dolar (üzeri için 0.50/2.50 dolar) ve 1M bağlam penceresi sunar; Sonnet 5.5 (claude-sonnet-5-5) ise 2/10 dolar ile arada yer alır. Somut olarak: 500 token'lık bir yanıt içeren 2,000 token'lık bir günlük özeti, Opus'ta yaklaşık 0.018 dolara, Haiku'da ise 0.00045 dolara mal olur; buna modelin yaptığı ve çıktı olarak faturalandırılan düşünme süreci de eklenir. Çıktı kalitesini değerlendirirken Opus ile başlayın, ardından aynı istemleri Haiku üzerinde deneyin; yüksek hacimli, basit dönüşümler için Haiku, token başına kırkta bir fiyatla genellikle ayırt edilemez sonuçlar verir. Bunların herhangi birini bütçeye kodlamadan önce fiyatlandırma sayfasındaki güncel rakamları doğrulayın.
Bekleyebilecek her şey için toplu işlemler (Batches). Batches API, istekleri standart fiyatların %50'si ile asenkron 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; insan beklemesi gerektirmeyen her şey buraya aittir.
Tekrarlanan bağlam için istem önbelleğe alma (Prompt caching). Her çağrı aynı büyük sistem istemini veya operasyonel kılavuzu yeniden gönderiyorsa, onu önbelleğe alınabilir olarak işaretleyin:
response = client.messages.create(
model="claude-opus-5-5",
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 5 dakikalık TTL süresinde girdi fiyatının 1.25 katına mal olur; önbellek okuma işlemleri ise Opus 5.5 ve Sonnet 5.5 üzerinde 0.05 kat (diğer modellerin çoğunda 0.1 kat) maliyetlidir, bu nedenle pencere içindeki ikinci çağrı ilkini zaten amorti eder. İki dikkat edilmesi gereken nokta vardır. Önbelleğe alınan önek, model başına minimum değeri (Opus 5.5 üzerinde 512 token) geçmelidir, bu nedenle çok kısa bir sistem istemi sessizce hiç önbelleğe alınmaz. 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 (genellikle suçlu bir zaman damgasıdır).
Neyin 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 hiç kırpmayan bir sohbet döngüsü, maliyette 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 kabuk (shell) ortamında çalışıyor ancak servis 401 hatası veriyorsa, servis anahtarı hiç almamış demektir. systemd'nin .bashrc dosyasını okumadığını unutmayın; EnvironmentFile= değişkeninin 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ğerden ayırır ancak kabuk sarmalayıcınızın . file komutu, hatalı tırnak kullanımı durumunda bunları değerin içinde tutabilir), sondaki boşluk karakterleri, geçen hafta konsol üzerinden iptal ettiğiniz bir anahtar veya oluştururken belirlediğiniz son kullanma tarihine ulaşmış bir anahtar olabilir.
Model yazım hatasından kaynaklanan 404 hatası. Bunun en yaygın sebebi, tarih soneki olmayan bir model kimliğine tarih eklemektir:
anthropic.NotFoundError: Error code: 404 - {'type': 'error', 'error': {'type': 'not_found_error', 'message': 'model: claude-opus-5-5-20260922'}, 'request_id': 'req_011CSJqymAvNw4bT3qmDdMbA'}Güncel nesil kimlikleri tam olarak yazıldığı gibidir: claude-opus-5-5, claude-sonnet-5-5, claude-haiku-5-5, claude-fable-5-1. 4.6 neslinden önceki modeller istisnadır: claude-haiku-4-5, tarihli kimlik olan claude-haiku-4-5-20251001 için bir kolaylık takma adıdır ve her iki biçim de çalışır. Kimlikleri ezberden veya eski bir eğitimden değil, her zaman model dokümantasyonundan kopyalayı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 üstel geri çekilme (backoff) ile zaten iki kez yeniden deneme yapmıştır. Bu nedenle, devam eden 429 hataları, sürdürülebilir hızınızın katmanınızı gerçekten aştığı anlamına gelir; işleri gruplandırın veya zamana yayın, yeniden deneme döngüsünü sıkılaştırmayı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 tüm SDK örnekleri 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.
Kesilmiş 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 ve 5.5 modellerinde düşünme sürecinin de aynı sınırdan harcama yaptığını unutmayı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'yi denemenin maliyeti nedir?
Bunun gibi bir araç için oldukça düşüktür. Ekim 2026 itibarıyla Opus 5.5, milyon girdi token'ı başına 4 dolar ve milyon çıktı token'ı başına 20 dolar olarak ücretlendirilmektedir. Bu nedenle, birkaç bin token girdi ve birkaç yüz token çıktı içeren tipik bir günlük analizi, düşünme token'ları (çıktı olarak faturalandırılır) hariç yaklaşık iki sent tutar. Haiku 5.5 ($0.10/$0.50) modelinde ise bu tutar bir sentin onda birinin çok altındadır. Günlük özetlerin bir aylık maliyeti bir fincan kahveden daha ucuzdur. 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 nedenle bu kılavuzda her ikisi de açıkça sınırlandırılmıştır.
Claude API için ücretsiz bir katman var mı?
Ekim 2026 itibarıyla devam eden bir ücretsiz katman bulunmamaktadır. Anthropic'in fiyatlandırma belgelerine göre, yeni kullanıcılar API'yi test etmek için kayıt sırasında Console üzerinde belirtilen miktarda tek seferlik küçük bir ücretsiz kredi alırlar; sonrasında hesaba bakiye yüklenmesi gerekir. Max ve Team aboneleri istisnadır: planları yukarıda belirtilen aylık API kredilerini içerir. 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ı bir sunucuda nasıl güvende tutabilirim?
Anahtarı asla kod içinde, git üzerinde veya .bashrc üzerinden dışa aktarılmış şekilde tutmayın; geçmiş kayıtlarında kalacağı için shell üzerinde doğrudan yazmayın. Anahtarı root sahipliğinde ve 600 izinlerine sahip bir dosyada saklayın. Anahtarı süreç bazlı yükleyin, etkileşimli kullanım için bir sarmalayıcı (wrapper) betik kullanın, systemd için EnvironmentFile= yapılandırmasından yararlanın. Her sunucu veya proje için ayrı bir anahtar oluşturun; böylece sızan bir anahtarı iptal etmek tüm sistemi değil, sadece ilgili parçayı etkiler. Anahtar herhangi bir yapıştırma sitesine veya git commit'ine sızarsa, 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 ölçeğindeki kullanımlarda maliyet farkı sadece sentler düzeyinde olduğundan claude-opus-5-5 ile başlayın. İstemi (prompt) netleştirdikten sonra gerçek girdilerinizi claude-haiku-5-5 üzerinde tekrar çalıştırın; özetleme, sınıflandırma ve günlük analizi gibi işlemler için bu model genellikle token başına fiyatın kırkta biri maliyetle yeterli performansı sunar. Haiku veya Sonnet modellerine varsayılan olarak değil, ölçüm yaparak geçiş yapın.