Kesalahan OpenAI 'Rate limit reached': apa artinya dan cara menanganinya

OPENAI API mengembalikan 429 dengan "Batas laju tercapai" saat organisasi Anda mengirim lebih banyak permintaan atau lebih banyak token per menit daripada batas yang diizinkan. Batasan berlaku untuk organisasi Anda, bukan untuk setiap pengguna. Kesalahan ini bersifat sementara. Jika Anda menunggu dan mengirim permintaan lagi, biasanya berhasil. Beberapa kesalahan lain 429 dari OpenAI adalah tentang penagihan, dan kesalahan tersebut tidak akan hilang hanya dengan menunggu. Untuk informasi selengkapnya, lihat Kode kesalahan.

Seperti apa tampilan error rate limit OpenAI

Status Error Apa artinya Coba lagi?
429 rate_limit_exceeded, permintaan per menit (RPM) Anda mengirim terlalu banyak permintaan dalam satu menit. Ya, setelah Retry-After
429 rate_limit_exceeded, token per menit (TPM) Permintaan Anda menggunakan terlalu banyak token dalam satu menit. Pesan menunjukkan batas Anda, berapa banyak token yang Anda gunakan, dan berapa banyak token yang diminta oleh permintaan. Ya, setelah Retry-After. Permintaan yang lebih kecil membantu.
429 slow_down (jenis rate_limit_error) Lalu lintas Anda tumbuh terlalu cepat, meskipun Anda berada dalam batas RPM dan TPM Anda. Ya, dengan tarif lebih rendah
503 server_is_overloaded (jenis service_unavailable_error) Server milik OpenAI sedang sibuk. Ya, dengan jeda yang semakin lama setiap kali
429 credit_balance_exhausted, kesalahan batas pengeluaran atau batas penggunaan (jenis insufficient_quota) Anda kehabisan kredit atau melebihi batas. No. Lihat insufficient_quota dan credit_balance_exhausted OpenAI.

Sebagian besar kesalahan ini memiliki status 429 yang sama, sehingga Anda tidak dapat membedakannya berdasarkan status saja. Baca error.code dalam isi respons.

Cara menangani error rate limit OpenAI

  1. Periksa error.code dulu. Jika itu adalah kode penagihan seperti credit_balance_exhausted, hentikan percobaan ulang dan beri tahu pengguna. Mencoba lagi setelah terjadi kesalahan penagihan tidak akan memulihkan akses.
  2. Ikuti Retry-After saat tersedia. Jika hilang, gunakan backoff eksponensial dengan jitter, dan batasi jumlah percobaan ulang.
  3. Perlambat setelah slow_down. Kurangi laju permintaan Anda, lalu naikkan kembali secara bertahap. Patokan umum OpenAI untuk TPM input di atas 1M adalah meningkatkan traffic tidak lebih dari 50% setiap 15 menit.
  4. Kirim lebih sedikit token setelah kesalahan TPM. Perintah dan respons yang lebih pendek memungkinkan lebih banyak permintaan dapat ditangani setiap menit.
  5. Mundur lebih jauh setelah sebuah 503. Tingkatkan penundaan antara percobaan ulang, dan periksa halaman status OpenAI.
  6. Beri tahu pengguna apa yang terjadi. "Sibuk, mencoba lagi dalam 5 detik" lebih baik daripada indikator loading yang tak kunjung selesai.

OpenAI Python SDK mencoba kembali kesalahan koneksi dan 408, , 409, 429dan 5xx respons 2 kali secara default, dengan backoff eksponensial singkat. Anda dapat mengubahnya dengan max_retries. Ketika percobaan ulang habis, SDK memunculkan RateLimitError untuk 429 dan InternalServerError untuk 503, sehingga kode Anda masih memerlukan rencana:

import openai
from openai import OpenAI

client = OpenAI(max_retries=3)

BILLING_CODES = {
    "credit_balance_exhausted",
    "organization_spend_limit_exceeded",
    "project_spend_limit_exceeded",
    "organization_usage_limit_exceeded",
}


def summarize(text: str) -> str | None:
    try:
        response = client.responses.create(model="gpt-4.1", input=text)
        return response.output_text
    except openai.RateLimitError as error:
        if error.code in BILLING_CODES:
            raise  # Retrying won't help: alert and tell the user
        return None  # Still throttled after retries: show "busy, try again"
    except openai.InternalServerError:
        return None

Cara menguji bahwa aplikasi Anda menangani pembatasan laju OpenAI

Anda jarang mencapai batas permintaan OpenAI saat Anda mengembangkan. Anda satu-satunya pengguna, dan prompt Anda pendek. Jadi cara Anda menguji penanganan rate limit memutuskan apakah Anda menemukan bug sebelum pengguna Anda melakukannya.

Approach Apa yang Anda temukan Yang Anda lewatkan
Tunggu hingga siap produksi Kegagalan yang sebenarnya Semuanya, sampai pengguna mengkliknya
Mock API dalam pengujian Anda, atau biarkan agen coding Anda menulis mock Apakah cabang percobaan ulang Anda berjalan Respons error dan kode error asli OpenAI, serta kebijakan percobaan ulang SDK Anda. Aplikasi Anda juga memerlukan sakelar khusus pengujian untuk mengakses mock.
Panggil API nyata sampai membatasi laju permintaan Anda Perilaku riil Anda tidak dapat memicu kesalahan tertentu sesuai permintaan, dan setiap permintaan memerlukan token
Mencegat lalu lintas nyata aplikasi Anda dan mengembalikan kesalahan OpenAI sesuai permintaan URL nyata, SDK nyata Anda dan kebijakan percobaan ulang, dan format kesalahan OpenAI sendiri Tidak ada yang berubah pada aplikasi Anda, sehingga tidak menguji kode Anda secara terisolasi. Gunakan pengujian unit untuk itu.

Coba ini di aplikasi Anda

Dev Proxy mencegat permintaan aplikasi Anda ke api.openai.com dan mengembalikan kesalahan OpenAI, sementara aplikasi Anda terus memanggil URL nyata. Prasetel openai-throttling menyebabkan sebagian besar permintaan gagal dengan pilihan acak error TPM dan RPM rate_limit_exceeded, slow_down, credit_balance_exhausted, dan 503server_is_overloaded, dalam format OpenAI sendiri. 429 Respons pembatasan laju menyertakan header Retry-After, dan jika aplikasi Anda mencoba kembali sebelum waktu tersebut habis, Dev Proxy melaporkannya.

Unduh preset, dan mulai Dev Proxy dengannya:

devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"

Kemudian jalankan aplikasi Anda seperti biasa dan tonton apa yang dilakukannya. Untuk menginstal Dev Proxy, lihat Menyiapkan Dev Proxy.

Untuk menguji bagaimana aplikasi Anda berperilaku saat kehabisan token per menit, berdasarkan token prompt dan token completion yang digunakan permintaan Anda, lihat Menguji batas token model bahasa.

Langkah berikutnya

Baca juga