Uji bagaimana aplikasi Anda menangani batas laju OpenAI

Sekilas
Tujuan: Menguji bagaimana aplikasi Anda menangani batas laju OpenAI dan kesalahan kelebihan beban
Waktu: 10 menit
Plugins:GenericRandomErrorPlugin, RetryAfterPlugin
Prasyarat:Menyiapkan Proksi Dev

Aplikasi Anda berfungsi dalam pengembangan, lalu gagal dalam produksi dengan 429 Too Many Requests. Batas laju OpenAI bergantung pada tingkat penggunaan organisasi Anda, model Anda, dan semua orang yang menggunakan organisasi yang sama, sehingga Anda tidak dapat sengaja mencapainya. Dev Proxy mengembalikan kesalahan yang sama dengan yang dikembalikan OpenAI API, sehingga Anda dapat melihat apa yang dilakukan aplikasi Anda sebelum pengguna Anda melakukannya.

Ketahui apa yang dikembalikan OpenAI

Tidak setiap kesalahan OpenAI berarti "coba lagi". Aplikasi Anda perlu membedakannya.

Status error.code Apa artinya Apa yang harus dilakukan aplikasi Anda
429 rate_limit_exceeded Anda mencapai batas permintaan per menit (RPM) atau token per menit (TPM). Tunggu hingga waktu yang ditampilkan di header Retry-After, lalu coba lagi.
429 slow_down Laju permintaan Anda meningkat terlalu cepat, bahkan jika Anda berada dalam batas Anda. Tunggu beberapa saat, kurangi tingkat permintaan Anda, dan tingkatkan secara bertahap.
429 credit_balance_exhausted Organisasi Anda tidak memiliki kredit prabayar yang tersisa. Jangan coba lagi. Mencoba kembali tidak akan memulihkan akses. Beri tahu pengguna atau beri tahu admin.
503 server_is_overloaded Model tidak memiliki kapasitas yang cukup saat ini. Tunggu Retry-After jika ada, lalu coba lagi dengan jeda yang makin lama.

Untuk daftar lengkapnya, lihat Kode kesalahan dalam dokumentasi OpenAI.

Important

Semua 3 kesalahan pada 429 baris menggunakan kode status yang sama. Jika aplikasi Anda mencoba kembali setiap kali menerima error 429, aplikasi akan terus mencoba kembali error penagihan yang tidak akan pernah pulih sendiri. Periksa error.code untuk memutuskan apa yang harus dilakukan.

Ketahui apa yang dilakukan OpenAI SDK untuk Anda

SDK OpenAI resmi untuk Python dan JavaScript mencoba kembali respons 408, 409, 429, dan 5xx, dan kesalahan koneksi, 2 kali secara default dengan backoff eksponensial. Anda dapat mengubah ini dengan max_retries opsi di Python dan maxRetries di JavaScript.

Percobaan ulang SDK menangani lonjakan singkat. Aplikasi Anda masih perlu memutuskan apa yang terjadi saat percobaan ulang habis, dan cara menangani kesalahan yang tidak dapat diperbaiki dengan percobaan ulang. Dalam Python, 429 menaikkan RateLimitError dan 503 menaikkan InternalServerError, jadi tangani keduanya.

Tip

Untuk melihat dengan tepat apa yang diterima kode penanganan kesalahan Anda, atur max_retries=0 (Python) atau maxRetries: 0 (JavaScript) saat Anda menguji. Aktifkan kembali percobaan ulang SDK setelahnya.

Menyimulasikan batas laju OpenAI

Proksi Dev memiliki prasetel untuk kesalahan OpenAI dalam tabel. Unduh:

devproxy config get openai-throttling

Mulai Proksi Dev dengan preset:

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

Prasetel gagal pada 90% permintaan ke https://api.openai.com/* dengan kesalahan acak dari tabel. Untuk respons throttling, ia mengatur header Retry-After dan menggunakan RetryAfterPlugin untuk memeriksa apakah aplikasi Anda menunggu selama itu sebelum memanggil API lagi.

Pastikan aplikasi Anda mengirim permintaan melalui Dev Proxy dan memercayai sertifikat Dev Proxy. Untuk Node.js, lihat Menggunakan Dev Proxy dengan aplikasi Node.js. Untuk runtime lain, lihat Memecahkan Masalah Dev Proxy.

Jalankan aplikasi Anda dan periksa apakah:

  • Setelah kesalahan rate_limit_exceeded atau slow_down, aplikasi Anda menunggu selama Retry-After. Jika aplikasi memanggil API terlalu dini, Dev Proxy melaporkannya dan membatasi permintaan.
  • Setelah kesalahan credit_balance_exhausted , aplikasi Anda berhenti memanggil API dan menampilkan pesan yang jelas.
  • Setelah kesalahan server_is_overloaded, aplikasi Anda mencoba kembali dengan penundaan dan, saat upaya percobaan ulang habis, beralih ke mekanisme cadangan atau menampilkan pesan yang jelas alih-alih pelacakan tumpukan.
  • Aplikasi Anda tidak akan membuat pekerjaan Anda hilang. Misalnya, seperti percakapan panjang atau tugas batch tetap berlanjut setelah terjadi kesalahan.

Untuk mengubah seberapa sering permintaan gagal, gunakan --failure-rate opsi . Misalnya, untuk membuat setiap permintaan gagal:

devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json" --failure-rate 100

Menyimulasikan batas token untuk Azure OpenAI dan penyedia lainnya

Prasetel mengembalikan kesalahan secara acak, terlepas dari berapa banyak token yang digunakan aplikasi Anda. Untuk membatasi permintaan berdasarkan penggunaan token aktual, misalnya untuk melihat apa yang terjadi ketika percakapan panjang melewati batas TPM Anda, gunakan LanguageModelRateLimitingPlugin. Ini berfungsi dengan API yang kompatibel dengan OpenAI, termasuk Azure OpenAI dan model lokal. Untuk informasi selengkapnya, lihat Menguji batas token model bahasa.

Langkah selanjutnya

Pelajari cara mensimulasikan batas berbasis token.

Baca juga