anthropic-sdk-python
Peta SDK Python resmi: client sync dan async, konfigurasi, helper, dan di mana mencari contoh yang bisa dijalankan.
Intisari
- Dua client:
Anthropic()danAsyncAnthropic()โ API-nya identik. - Kredensial diselesaikan otomatis dari environment; tidak perlu di-pass manual.
- Timeout default 10 menit, retry otomatis 2 kali untuk 408/409/429/5xx.
- Helper penting:
.stream(),.parse(),@beta_tool+tool_runner. - Folder
examples/di repo berisi program lengkap yang bisa langsung dijalankan โ sumber belajar tercepat.
Membuat client
import anthropic
client = anthropic.Anthropic() # dari environment
client = anthropic.Anthropic(api_key="sk-ant-...") # eksplisit (jarang perlu)
async_client = anthropic.AsyncAnthropic()
Urutan pencarian kredensial
ANTHROPIC_API_KEYANTHROPIC_AUTH_TOKEN- Profil OAuth hasil
ant auth login - Workload Identity Federation (untuk CI/cloud)
Artinya Anthropic() tanpa argumen bisa jalan meski ANTHROPIC_API_KEY
tidak diatur โ selama ada profil yang aktif. Cek dengan ant auth status.
Konfigurasi client
client = anthropic.Anthropic(
timeout=60.0, # detik; default 10 menit
max_retries=5, # default 2
base_url="...", # untuk proxy internal
)
# Override untuk satu panggilan saja, tanpa mengubah client
client.with_options(timeout=5.0).messages.create(...)
Timeout berbutir halus
import httpx
client = anthropic.Anthropic(
timeout=httpx.Timeout(600.0, read=60.0, write=10.0, connect=5.0),
)
SDK memakai httpx di dalamnya โ semua yang kamu pelajari di Fase 3 berlaku di sini.
Performa async tinggi
uv add "anthropic[aiohttp]"
from anthropic import AsyncAnthropic, DefaultAioHttpClient
async with AsyncAnthropic(http_client=DefaultAioHttpClient()) as client:
...
Backend alternatif ini lebih cepat untuk beban kerja dengan concurrency sangat tinggi.
Helper yang perlu kamu kenali
| Helper | Untuk | Dibahas di |
|---|---|---|
client.messages.create() | Panggilan dasar | Materi sebelumnya |
client.messages.stream() | Streaming dengan akumulasi otomatis | Streaming Messages |
client.messages.parse() | Structured output ke model Pydantic | Structured Outputs |
@beta_tool + tool_runner() | Loop agentic otomatis | Tool Use Overview |
client.messages.count_tokens() | Hitung token sebelum kirim | Token Counting |
client.models.list() | Daftar model & kemampuannya | Models Overview |
client.messages.batches | Batch async, 50% lebih murah | โ |
client.beta.files | Upload file untuk dipakai berulang | โ |
Objek respons
msg = client.messages.create(...)
msg.id # msg_01ABC...
msg.model # model yang benar-benar melayani
msg.content # list of block
msg.stop_reason
msg.usage
msg._request_id # untuk dilaporkan saat ada masalah โ meski diawali _, ini publik
msg.to_dict()
msg.to_json()
# Kalau butuh header mentah
raw = client.messages.with_raw_response.create(...)
raw.headers.get("request-id")
raw.headers.get("anthropic-ratelimit-requests-remaining")
msg = raw.parse()
Paginasi otomatis
for m in client.models.list(): # iterasi langsung โ semua halaman
print(m.id, m.display_name)
halaman = client.models.list()
halaman.data # hanya halaman pertama
Client untuk platform lain
from anthropic import AnthropicBedrockMantle, AnthropicVertex, AnthropicAWS
# Amazon Bedrock โ model ID pakai prefix "anthropic."
client = AnthropicBedrockMantle(aws_region="us-east-1")
# Google Vertex AI
client = AnthropicVertex(project_id="proyek-saya", region="us-east5")
# Claude Platform on AWS โ dioperasikan Anthropic, ID model tanpa prefix
client = AnthropicAWS()
Setelah client dibuat, permukaan API-nya sama persis: messages.create, .stream, tool use โ semuanya identik.
Debugging
ANTHROPIC_LOG=debug uv run main.py
Menampilkan request dan respons HTTP mentah lewat modul logging standar.
Yang wajib dilihat di repo
| Lokasi | Isinya |
|---|---|
README.md | Referensi terlengkap โ lebih detail dari halaman docs mana pun |
examples/ | Program lengkap: streaming, tool use, memory tool, structured output |
api.md | Daftar seluruh method dan tipe |
CHANGELOG.md | Perubahan tiap versi โ cek saat upgrade |
src/anthropic/types/ | Semua tipe dihasilkan otomatis dan punya anotasi lengkap |
Karena semua tipe SDK punya anotasi lengkap, editormu bisa menjawab sebagian besar pertanyaan tanpa kamu membuka dokumentasi: Ctrl+klik sebuah method untuk melihat tanda tangannya, dan autocomplete akan menampilkan field yang tersedia pada objek respons. Ini salah satu manfaat konkret dari Fase 2.
Menyematkan versi
uv add "anthropic>=0.40,<1.0"
SDK-nya berkembang cepat. Kunci batas mayor di pyproject.toml, dan uv.lock
akan menjaga versi persisnya. Baca CHANGELOG sebelum menaikkan versi.
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.