AIREITER

Anthropic Python SDK v1.0 Geçiş Rehberi: Neler Bozuluyor?

Son Güncelleme: 2026-08-22 00:25:29

Anthropic Python SDK v1.0, 20 Ağustos 2026'da PyPI'da yayımlandı. Kodunuzdaki standart API çağrılarının çoğu güncellemeden etkilenmeyecek. Asıl risk ise görünmeyen tarafta: HTTP katmanı httpx'ten httpx2'ye taşındı. Bu nedenle httpx'i patch'leyen izleme araçları, APM ajanları ve test mock'ları çalışmaya devam ederken SDK isteklerinin sıfırını kaydetmeye başlayabilir. Güncelleme sonrasında testlerin yeşil olması, düşündüğünüz kadar güvence sağlamıyor.

İki günde üç sürüm, ardından 1.0

anthropic paketinin PyPI sürüm geçmişi oldukça net: 0.123.0, 0.124.0 ve 0.125.0'ın tamamı 19 Ağustos 2026'da çıktı; standart bir Trusted Publishing yayını olan 1.0.0 ise 20 Ağustos'ta geldi.

Resmî sürüm notlarına göre gelen değişiklikler şöyle:

20 Ağustos 2026 tarihli Python SDK v1.0 kaydını gösteren Anthropic Platform sürüm notları
  • HTTP katmanı, bakımı sürdürülen ve API uyumlu bir fork olan httpx2'ye geçiyor.
  • Python 3.10 veya daha yeni bir sürüm zorunlu. Paket sınıflandırıcılarında 3.10 ile 3.14 arası sürümler listeleniyor.
  • Uzun süredir kullanımdan kaldırılmış yüzeyler temizleniyor: eski Text Completions API'si, Messages metotlarındaki temperature, top_p ve top_k parametreleri ile tool runner'ın istemci tarafındaki compaction_control seçeneği.
  • AnthropicBedrock, AWS bölgesi ayarlanmamışsa artık sessizce us-east-1'e düşmek yerine hata veriyor.

GitHub'daki v1.0.0 etiketi, sürümü “httpx2'ye yükseltme ve bazı küçük kırıcı değişiklikler” olarak tanımlıyor. Sürüm notlarında kolayca gözden kaçabilecek bir sonuç da var: parse, stream ve tool_runner yardımcılarındaki beta uyarısı kaldırılmış. Beta notu olmayan 1.0 sürümü, Anthropic'in bu API yüzeyini artık kararlı kabul ettiğine işaret ediyor.

httpx2 geçişi pratikte neyi değiştiriyor?

İstemciyi standart biçimde oluşturuyorsanız değişen bir şey yok. HTTP katmanına doğrudan dokunuyorsanız, geçiş tüm davranışı etkiliyor.

Belirleyici nokta, istemciye ne verdiğiniz. Sayısal değerler çalışmayı sürdürüyor; örneğin Anthropic(timeout=30.0) eskisiyle aynı davranıyor. Nesnelerde ise durum farklı: normal bir httpx.Client'ı http_client= ile geçirmek, artık ilk istekte değil istemci oluşturulurken TypeError üretiyor. Özel istemciler, timeout'lar ve transport'lar bundan sonra httpx2 ile oluşturulmalı. httpx.Timeout nesneleri de anthropic.Timeout ya da httpx2.Timeout olmalı.

# 0.x
client = Anthropic(http_client=httpx.Client(proxy="http://proxy:8080"))

# 1.0
client = Anthropic(http_client=DefaultHttpxClient(proxy="http://proxy:8080"))

DefaultHttpxClient ve DefaultAsyncHttpxClient isim ve davranış olarak değişmedi. SDK'nın önerdiği timeout, bağlantı havuzu ve yönlendirme varsayılanlarını koruyorlar; artık bunları httpx2 üzerinden sağlıyorlar. Platform devx mühendisi @cjav_dev'in Anthropic duyurusu da herkesi aynı başlangıç noktasına yönlendiriyor: Her değişikliği önce-sonra örnekleriyle sıralayan resmî MIGRATION.md.

Bu geçişin bir örneği daha önce yaşandı. OpenAI Python SDK'nın httpx2 geçiş rehberi de aynı fork'a, aynı DefaultHttpx2Client yardımcı yaklaşımına ve respx uyumluluğuna ilişkin aynı uyarılara dayanıyordu. openai geçişini daha önce yapan ekipler, aynı planı neredeyse olduğu gibi kullanabilir.

v1.0 ile kaldırılan her şey

v1.0'da kaldırılanYerine kullanılacak
client.completions.create() (Text Completions)client.messages.create()
HUMAN_PROMPT / AI_PROMPT sabitleriMessages formatındaki içerik blokları
Metot imzalarındaki temperature, top_p, top_kBunları hâlâ kabul eden eski modeller için extra_body={"temperature": ...}
messages.parse(stream=True)messages.stream(...)
tool_runner(compaction_control=...)Sunucu tarafı compaction yapılandırması
anthropic.Transport, anthropic.ProxiesTypes takma adlarıhttpx2 transport türleri
Düşük seviyeli istek metotlarındaki body=content=
Beta API'lerdeki output_format şema sözlüğüoutput_config={"format": ...} (structured-output yardımcıları hâlâ output_format=MyModel kabul ediyor)
isinstance(stream, anthropic.Stream) kontrolleriSomut MessageStream türünü kontrol edin

Tabloya ilişkin iki önemli not var. Pydantic v1 ve v2 desteği sürüyor; model sınıfları bu açıdan güvenli. Ayrıca header birleştirme artık büyük/küçük harfe duyarsız. Aynı header'ı farklı harf kullanımıyla iki kez ayarladıysanız davranış değişir; nadir görülen ama ortaya çıktığında hata vermeyen bir durum.

Yalnızca raw response kullanan async kodu etkileyen değişiklikler

Async taraftaki değişikliklerin kapsamı dar, ancak .with_raw_response kullanıyorsanız can sıkıcı olabilir. Async istemcide parse(), read(), text() ve json() artık await gerektiriyor. Sync istemcide ise .text ve .content, property olmaktan çıkıp metot haline geldi. Bunların hiçbiri import aşamasında patlamaz: sync kullanımda açık bir attribute hatası görürsünüz; async kullanımda ise hiçbir şeyi await etmeden çalıştırıp hiç yürütülmemiş bir coroutine elde etmeniz daha sessiz bir sorun yaratır.

Bununla bağlantılı olarak hata nesneleri ve raw sonuçlardaki request/response nesneleri artık httpx2 türünde. Attribute erişimi çoğunlukla aynı kalsa da isinstance(x, httpx.Response) kontrolleri ve tür tanımları güncellenmeli. Bu da pyright ve mypy'ın rahatlıkla yakalayacağı türden bir değişiklik.

İzleme araçlarınızın göremediği geçiş hatası

Changelog'un tek cümleyle geçtiği, ancak izleme panelinizin affetmeyeceği kısım burası. Anthropic'in geçiş rehberine göre HTTP trafiğini httpx'i patch'leyerek gözlemleyen veya mock'layan araçlar — OpenTelemetry, Sentry, respx, pytest-httpx, vcrpy — yükseltmeden sonra çalışmayı sürdürebilir ama SDK isteklerini sessizce kaçırabilir. Araçlar import edilir, çalışır ve raporlama yapar; yalnızca artık patch'ledikleri kütüphaneden geçmeyen trafiği göremezler. Interception'ın gerçekten gerçekleştiğini doğrulamayan mock tabanlı testler de boşuna başarılı olabilir: Mock'a trafik ulaşmaz, dolayısıyla hata da oluşmaz.

Çıkış yolu, uygulama veya test başlangıcının mümkün olan en erken noktasında httpx2.alias_httpx() çağırmak. Python SDK dokümantasyonu, bunun herhangi bir httpx import'undan önce yapılmasını söylüyor. Bu çağrı, patch araçlarının çalışmayı sürdürmesi için httpx2'yi httpx adı altında takma ad olarak sunuyor. Geçiş rehberi ayrıca bunun kütüphane kodundan değil, yalnızca uygulama giriş noktasından çağrılması gerektiğini vurguluyor.

“Sorunsuz bir başlangıç, AI çağrılarınızın hâlâ trace edildiğini veya mock'landığını kanıtlamaz.” — @MarMarLabs, sürümden sonraki gün yaptığı paylaşımda

Bu paylaşımın tamamını okumakta fayda var. Önerilen ilk geçiş testi, görünmeyen hatayı doğrudan hedef alıyor: Yükseltmeyi yaptıktan sonra bir trace edilen çağrının ve bir mock'lanmış çağrının gerçekten kayda geçtiğini bilinçli biçimde doğrulayın. Aynı zincirdeki diğer sessiz riskler de belirtiliyor: httpx2'ye elle taşınması gereken özel transport'lar ve eski CI imajlarında kurulum aşamasında sorun çıkaracak Python 3.10 alt sınırı.

Hiç değişiklik yapmadan çalışmaya devam eden kodlar

Birçok proje için dürüst cevap şu: Yapılacak bir şey yok. Özel istemci, transport veya timeout nesnesi oluşturmuyorsanız HTTP geçişinden etkilenmezsiniz. Değişmeden kalan noktalar şunlar:

  • Düz parametrelerle yapılan client.messages.create(...) çağrıları: İstek ve response modelleri aynı kalıyor.
  • Sayısal timeout değerleri ve SDK varsayılanları: Bağlantı hataları, 408, 409, 429 ve 5xx yanıtlarında üstel backoff ile 2 yeniden deneme; varsayılan 10 dakikalık timeout.
  • base_url yönlendirmesi. SDK'yı bir gateway'e ya da AIReiter'ın Claude API endpoint'i gibi API uyumlu bir relay'e yönlendiriyorsanız v1.0 bu katmanı değiştirmiyor; değişen URL değil, istemcinin kendisi.
  • Pydantic v1 ve v2 modelleri, SSE streaming yardımcıları ve dosya yükleme arayüzleri.

Tek kesin engel Python 3.10+ gereksinimi. “Güvenli” listesinde yer alan diğer her şey, önce bu şartı sağladığınızı varsayıyor.

Code review'dan geçecek bir geçiş sırası

  1. Önce bilinçli şekilde sürüm sabitleyin: Hazır değilseniz anthropic>=0.125,<1, çalışmayı planlayana kadar sizi 1.0'ın altında tutar.
  2. Kod tabanında import httpx ve httpx. arayın. SDK ile ilişkili koddaki her sonuç bir geçiş maddesidir.
  3. Claude Code içinde /claude-api upgrade python komutunu çalıştırın. @cjav_dev'in sürüm duyurusunda önerdiği bu komut, projenizde değişecek noktaların otomatik diff'ini üretir.
  4. Özel istemcileri, transport'ları ve timeout'ları httpx2 ya da DefaultHttpxClient yardımcılarıyla yeniden oluşturun.
  5. Herhangi bir bileşen httpx'i patch'liyorsa uygulama giriş noktasına httpx2.alias_httpx() ekleyin.
  6. pyright veya mypy çalıştırın; httpx2 tür değişiklikleri annotation ve isinstance hataları olarak görünür.
  7. CI'da, her test paketi için bir trace edilen ve bir mock'lanan isteği doğrulayın. Yeşil başlangıç log'ları kanıt değildir.

Anthropic Python SDK v1.0: Sık sorulan sorular

Anthropic Python SDK v1 gerçekten çıktı mı, yoksa hâlâ 0.x mi?

Evet, çıktı. anthropic 1.0.0, 20 Ağustos 2026'da PyPI'da yayına alındı ve GitHub'da v1.0.0 olarak etiketlendi. Bir gün önce 0.125.0 yayımlanmıştı. PyPI proje sayfası artık 0.x kullanıcılarını v1 geçiş rehberine yönlendiriyor.

v1.0 sonrasında temperature, top_p veya top_k nasıl gönderilir?

Bu parametreler metot imzalarından çıkarıldı. Sunucu tarafında bunları kabul etmeyi sürdüren eski modellerde extra_body={"temperature": 0.7} kullanın. Ancak güncel modellerin varsayılan dışı örnekleme değerlerinde 400 döndürdüğünü unutmayın. Bu değişiklik SDK'da değil, model katmanında yapıldı.

respx, pytest-httpx veya vcrpy testleri çalışmaya devam eder mi?

SDK'nın varsayılan istemcisiyle çalışmazlar ve hata da vermezler; hiçbir isteği eşleştirmezler. Test başlangıcında, herhangi bir httpx import'undan önce httpx2.alias_httpx() çağırın veya mock'ları httpx2.MockTransport'a taşıyın. Yalnızca eski httpx'i patch'leyen bir respx sürümü SDK trafiğini yakalayamaz.

/claude-api upgrade python ne yapar?

Anthropic devx mühendisi @cjav_dev'in duyurusunda önerilen bu Claude Code komutu, anthropic 0.x kullanan projeyi tarar ve import'lar, timeout nesneleri, raw-response çağrıları gibi değişiklikleri içeren bir geçiş diff'i üretir. Böylece sorunları traceback'lerden öğrenmek yerine değişiklikleri gözden geçirebilirsiniz.

0.125'te kalmak mı, 1.0'a geçmek mi?

Burada herkes için geçerli tek bir doğru yok; asıl tercih şu dengede yatıyor. 1.0'ın altında kalmak, mock'larınızı, tracer'larınızı ve özel transport'larınızı mevcut halleriyle korur. Ancak sürümleme politikasının minor sürümlerde geriye dönük uyumsuz değişikliklere izin verdiği, kararlılık öncesi bir SDK'da kalırsınız; bağımlı olduğunuz kullanım dışı yüzeyler de — completions ve sampling parametreleri — artık resmen ölü ağırlık. 1.0'a geçmek ise beta olmayan, kararlı bir API yüzeyi sunar; karşılığında HTTP katmanı denetimini bir gün değil şimdi yapmanız gerekir. Kararı belirleyecek unsur, sahip olduğunuz HTTP katmanı kodunun miktarıdır: Tek bir düz Anthropic() çağrısı olan servis kolayca yükselir. Özel transport'ları ve respx test paketleri olan bir platform ise yayına çıkmadan önce sessiz hata kontrollerini mutlaka yapmalı.

İlgili okumalar: Aynı hafta betadan çıkan Skills API ve 10 Ağustos'ta fiyatları kalıcı hale gelen Sonnet 5. Her ikisi de Claude Platform sürümlerinin aynı döneminden.