SDK Anthropic menyediakan hook "middleware" (perangkat lunak perantara), atau interceptor, yang memungkinkan Anda menjalankan kode sebelum permintaan dikirim dan setelah respons diterima. Gunakan middleware untuk kebutuhan lintas-fungsi seperti logging, retry kustom, anotasi permintaan, dan penanganan fallback penolakan.
Setiap middleware dapat memeriksa atau mengganti permintaan sebelum memanggil next(), dan respons setelah next() mengembalikan hasil.
Setiap middleware adalah fungsi yang menerima permintaan keluar dan sebuah callable next. Panggil next untuk meneruskan permintaan ke sisa rantai (atau langsung ke inti SDK jika ini adalah middleware terakhir), dan kembalikan responsnya. Apa pun sebelum pemanggilan next 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])Ketika Anda mendaftarkan beberapa middleware, middleware tersebut diterapkan sesuai urutan yang diberikan: kode "before" dari middleware pertama berjalan lebih dulu, dan kode "after"-nya berjalan terakhir. Middleware yang didaftarkan pada klien berjalan sebelum middleware yang diberikan sebagai opsi per-permintaan.
Di SDK Go, pemanggilan option.WithMiddleware yang berulang akan digabungkan (klien lebih dulu, kemudian metode). Di SDK lainnya, berikan sebuah array; entri yang lebih akhir membungkus yang lebih dalam.
Setiap SDK juga menerima klien HTTP kustom (untuk konfigurasi proxy, TLS kustom, atau connection pooling). Hanya satu klien HTTP yang digunakan per klien SDK; mengaturnya akan menggantikan yang default. Klien HTTP kustom menerima permintaan setelah semua middleware selesai berjalan.
SDK menyertakan middleware refusal-fallback yang secara otomatis mencoba ulang permintaan yang ditolak oleh Claude Fable 5 pada model fallback. Lihat Mendeteksi dan mencoba ulang pada model fallback untuk penyiapan dan contoh per bahasa.
Was this page helpful?