Anthropic 529 overloaded_error: apa artinya dan cara menanganinya

CLAUDE API mengembalikan 529 dengan jenis kesalahan overloaded_error saat API kelebihan beban sementara. Menurut Anthropic, itu dapat terjadi ketika API mengalami lalu lintas tinggi di antara semua pengguna. Permintaan Anda valid. API sibuk, jadi permintaan ditolak. Ketika organisasi Anda melewati batas lajunya sendiri, Anda mendapatkan 429 sebagai gantinya. Isi respons memiliki bentuk yang sama dengan setiap kesalahan Claude API lainnya: type tingkat atas dari error, objek error dengan type dan message, dan request_id yang dapat Anda berikan kepada dukungan Anthropic. Untuk informasi selengkapnya, lihat Kesalahan CLAUDE API.

529, 429, atau batas pengeluaran: cara membedakannya

Claude API menggunakan pesan error yang mirip untuk masalah yang sangat berbeda. Beberapa akan hilang jika Anda menunggu. Itu tidak akan hilang sampai bulan depan.

Jawaban error.type retry-after Apa artinya Apa yang harus dilakukan
529 overloaded_error Gunakan jika tersedia API mengalami kelebihan beban untuk semua pengguna Mundur dan coba lagi beberapa kali
429 rate_limit_error Yes Organisasi Anda melampaui batas permintaan, token input, atau token output per menit, atau meningkat terlalu cepat dan mencapai batas akselerasi Tunggu selama yang ditentukan retry-after
429 rate_limit_error, dengan error.details.error_code diatur ke enforced_spend_limit_reached No Organisasi Anda mencapai batas pengeluaran bulanan tingkat penggunaan Jangan coba lagi. Penggunaan dijeda hingga pukul 00.00 UTC pada hari pertama bulan berikutnya, atau hingga Anda pindah ke tingkat yang lebih tinggi.
400 invalid_request_error No Penggunaan mencapai batas pengeluaran yang Anda tetapkan di organisasi atau ruang kerja Anda Naikkan atau hapus batas

Error 429 spend-cap memiliki jenis kesalahan yang sama dengan batas laju, sehingga kode yang dikonfigurasi untuk mencoba lagi setiap rate_limit_error terus gagal. Anthropic mencatat bahwa percobaan ulang gagal hingga akses kembali tersedia, termasuk percobaan ulang otomatis SDK. Untuk detail selengkapnya, lihat Mencapai batas belanja Anda.

Cara menangani kode 529

  1. Periksa kode status sebelum Anda mencoba kembali. 529 dan 429 memerlukan waktu tunggu yang berbeda, dan 429 tanpa retry-after tidak perlu mencoba lagi sama sekali.
  2. Batalkan pada kode 529. Coba lagi dengan backoff eksponensial dan jitter acak, dan berhenti setelah beberapa upaya. Jika respons memiliki retry-after header, tunggu selama itu.
  3. Biarkan SDK melakukan percobaan ulang awal. SDK resmi Anthropic mencoba ulang saat terjadi kesalahan koneksi, batas laju, dan kesalahan 5xx dua kali secara default, dengan backoff eksponensial, dan mematuhi retry-after jika tersedia. Anda dapat mengubah hitungan dengan max_retries (maxRetries dalam TypeScript). Saat SDK kehabisan percobaan ulang, kode Anda akan mendapatkan kesalahan.
  4. Berhenti mencoba lagi saat batas pengeluaran tercapai. Jika 429 tidak memiliki header retry-after, beri tahu pengguna dan beri tahu diri Anda sendiri.
  5. Pastikan pengguna tetap mendapat informasi. Antrekan pekerjaan dan coba lagi nanti, atau tampilkan pesan "sibuk, coba lagi dalam satu menit" alih-alih kesalahan umum.

Dalam SDK Python, 429 memunculkan anthropic.RateLimitError dan status 500 atau lebih tinggi, termasuk 529, memunculkan anthropic.InternalServerError:

import anthropic

client = anthropic.Anthropic(max_retries=4)


def summarize(text: str) -> str | None:
    try:
        message = client.messages.create(
            model="claude-sonnet-5",
            max_tokens=1024,
            messages=[{"role": "user", "content": f"Summarize:\n\n{text}"}],
        )
    except anthropic.RateLimitError as e:
        if "retry-after" not in e.response.headers:
            # Spend cap: every retry fails until access resumes
            alert_admin(e)
            return None
        raise
    except anthropic.InternalServerError as e:
        if e.status_code == 529:
            # Overloaded after all SDK retries: queue the job for later
            queue_for_later(text)
            return None
        raise
    return next(block.text for block in message.content if block.type == "text")

Cara menguji bahwa aplikasi Anda menangani 529

Anda jarang melihat 529 saat melakukan pengembangan. Ini tergantung pada lalu lintas dari setiap pengguna Claude API, sehingga Anda tidak dapat memicunya. Cara Anda menguji menentukan apakah Anda menemukan bug sebelum pengguna Anda menemukannya.

Approach Apa yang Anda temukan Yang Anda lewatkan
Tunggu hingga produksi selesai Overload aktual Semuanya, sampai pengguna mengkliknya
Mock API dalam pengujian Anda, atau biarkan agen pengkodean Anda menulis mock Apakah cabang error Anda berjalan Kode status asli Anthropic dan isi error, serta kebijakan coba lagi SDK Anda. Aplikasi Anda juga memerlukan opsi khusus pengujian untuk mengakses mock.
Panggil API nyata hingga API tersebut gagal Perilaku sebenarnya Anda tidak dapat memunculkan error 529 sesuai permintaan, dan Anda tidak dapat menerapkan batas pengeluaran dengan aman sama sekali
Mencegat lalu lintas nyata aplikasi Anda dan mengembalikan 529 dan 429 saat diperlukan URL nyata, SDK nyata Anda dan kebijakan percobaan ulang, dan format kesalahan Anthropic sendiri Tidak ada perubahan dalam aplikasi Anda, sehingga aplikasi Anda tidak menguji kode Anda secara terisolasi. Simpan pengujian unit Anda untuk itu.

Cobalah di aplikasi Anda

Dev Proxy mencegat permintaan aplikasi Anda ke https://api.anthropic.com dan mengembalikan kesalahan dalam format kesalahan Anthropic, sementara aplikasi Anda terus memanggil URL yang sebenarnya. Unduh preset, dan mulai Dev Proxy dengannya:

devproxy config get anthropic-throttling
devproxy --config-file "~dataFolder/configs/anthropic-throttling/.devproxy/devproxyrc.json"
Preset Apa yang dikembalikannya
anthropic-throttling Secara acak, 1 dari 4.429 rate_limit_error respons (permintaan, token input, token output, dan batas akselerasi) atau sebuah 529 overloaded_error. Pada 429, Dev Proxy mengatur retry-after dan memberi tahu Anda saat aplikasi Memanggil API lagi terlalu dini.
anthropic-random-errors Satu kesalahan dipilih secara acak dari daftar kesalahan API Claude, termasuk 400, 401, 402, 403, 404, 409, 413, 429, 500, 504, dan 529, untuk 50% permintaan

Tidak satu pun dari kedua prasetel mencakup batas pengeluaran 429. Untuk menguji jalur tersebut, tambahkan respons tanpa retry-after header ke file prasetel anthropic-errors.json :

{
  "statusCode": 429,
  "headers": [
    { "name": "content-type", "value": "application/json" }
  ],
  "body": {
    "type": "error",
    "error": {
      "type": "rate_limit_error",
      "message": "You have reached your API usage limits.",
      "details": { "error_code": "enforced_spend_limit_reached" }
    }
  }
}

Untuk membuat setiap permintaan gagal, sehingga Anda melihat apa yang terjadi ketika SDK kehabisan percobaan ulang, mulai Dev Proxy dengan --failure-rate 100. Untuk informasi selengkapnya, lihat Tingkat kegagalan permintaan perubahan. Untuk menginstal Dev Proxy, lihat Menyiapkan Dev Proxy.

Langkah berikutnya

Baca juga