Claude Platform Docs

Middleware SDK

Mencegat dan memodifikasi permintaan dan respons SDK.

Claude SDK menyediakan hook "middleware" (perantara), atau interceptor, yang memungkinkan Anda menjalankan kode sebelum permintaan dikirim dan setelah respons diterima. Gunakan middleware untuk kebutuhan lintas bagian seperti logging, percobaan ulang kustom, anotasi permintaan, dan penanganan fallback penolakan.

Setiap middleware dapat memeriksa atau mengganti permintaan sebelum memanggil next(), dan respons setelah next() kembali.

Mendaftarkan middleware

Setiap middleware adalah fungsi yang menerima permintaan keluar dan handler berikutnya. Panggil call_next(request) untuk meneruskan permintaan ke sisa rantai (atau langsung ke inti SDK jika ini adalah middleware terakhir), lalu kembalikan responsnya. Apa pun sebelum panggilan tersebut berjalan saat permintaan keluar; apa pun setelahnya berjalan saat respons kembali.

def logging_middleware(request: APIRequest, call_next: CallNext) -> APIResponse[Any]:
    # Sebelum permintaan
    print(f"-> {request.method} {request.url}")

    # Teruskan permintaan ke sisa rantai
    response = call_next(request)

    # Setelah permintaan
    print(f"<- {response.status_code}")

    return response


client = Anthropic(middleware=[logging_middleware])

Urutan middleware

Ketika Anda mendaftarkan beberapa middleware, middleware tersebut diterapkan sesuai urutan yang diberikan: kode "sebelum" dari middleware pertama dijalankan paling awal, dan kode "setelah"-nya dijalankan paling akhir. Middleware yang didaftarkan pada klien dijalankan sebelum middleware yang diteruskan sebagai opsi per permintaan.

Di SDK Go, pemanggilan option.WithMiddleware yang berulang akan digabungkan (klien terlebih dahulu, lalu metode). Di SDK lainnya, teruskan sebuah array; entri yang lebih akhir membungkus bagian dalam.

Mengganti klien HTTP

SDK juga menerima klien HTTP kustom (untuk konfigurasi proxy, TLS kustom, atau "connection pooling" (pengumpulan koneksi)). Hanya satu klien HTTP yang digunakan per klien SDK; mengaturnya akan menggantikan klien default. Klien HTTP kustom menerima permintaan setelah semua middleware selesai berjalan.

Middleware bawaan

SDK menyertakan middleware refusal-fallback yang secara otomatis mencoba ulang permintaan yang ditolak Claude (stop_reason: "refusal") pada model fallback. Penolakan dan fallback mencantumkan model-model yang pengklasifikasi keamanannya dapat menolak permintaan, dan Mendeteksi dan mencoba ulang pada model fallback membahas penyiapan serta contoh untuk setiap bahasa.

Was this page helpful?