OpenAI 'Hız sınırına ulaşıldı' hataları: ne anlama geldikleri ve bunlarla nasıl başa çıkılacağı

Kuruluşunuz dakika başına sınırların izin verdiğinden daha fazla istek veya daha fazla belirteç gönderdiğinde OpenAI API'sinde "Hız sınırına ulaşıldı" ifadesi döndürülüyor 429 . Sınırlar kuruluşunuz için geçerlidir, her kullanıcı için geçerli değildir. Bu hatalar geçicidir. Bekler ve isteği yeniden gönderirseniz, istek genellikle başarıyla tamamlanır. OpenAI'nin diğer 429 bazı hataları faturalamayla ilgilidir ve beklediğiniz zaman bunlar kaybolmaz. Daha fazla bilgi için bkz. Hata kodları.

OpenAI'nin oran sınırı hataları nasıl görünür?

Statü Error Ne anlama gelir? Yeniden denensin mi?
429 rate_limit_exceeded, dakika başına istek sayısı (RPM) Bir dakikada çok fazla istek gönderdiniz. Evet, Retry-After sonrasında
429 rate_limit_exceeded, dakika başına belirteçler (TPM) İstekleriniz bir dakikada çok fazla token kullandı. İleti, sınırınızı, kaç belirteç kullandığınızı ve isteğin kaç belirteç talep ettiğini gösterir. Evet, Retry-After'dan sonra. Daha küçük istekler daha iyidir.
429 slow_down (yazın rate_limit_error) RPM ve TPM sınırlarınızda olmanıza rağmen trafiğiniz çok hızlı büyüdü. Evet, daha düşük bir oranda
503 server_is_overloaded (yazın service_unavailable_error) OpenAI'nin sunucuları meşgul. Evet, her seferinde daha uzun gecikmelerle
429 credit_balance_exhausted, harcama sınırı veya kullanım sınırı hataları (insufficient_quota yazın) Krediniz bitti veya limiti aştınız. No. Bkz. OpenAI insufficient_quota ve credit_balance_exhausted.

Bu hataların çoğu aynı 429 durumu paylaşır, bu nedenle bunları yalnızca duruma bakarak ayırt edemezsiniz. Yanıt gövdesinde error.code ifadesini okuyun.

OpenAI hız sınırı hataları nasıl ele alınır

  1. Önce kontrol edin error.code . Eğer credit_balance_exhausted gibi bir faturalama koduysa, yeniden denemeyi durdurun ve kullanıcıya bildirin. Faturalama hatasını yeniden denemek erişimi geri yüklemez.
  2. Retry-After mevcut olduğunda takip edin. Eksikse, jitter ile üstel backoff'u kullanın ve yeniden deneme sayısını sınırlayın.
  3. slow_down sonrasında yavaşlayın. İstek oranınızı düşürün, ardından kademeli olarak artırın. OpenAI'nin 1M giriş TPM üzeri için genel kuralı, trafiği 15 dakikada bir en fazla %50 artırmaktır.
  4. TPM hatasının ardından daha az token gönderin. Daha kısa istemler ve yanıtlar, her dakika daha fazla isteğin sığmasına olanak sağlar.
  5. bir 503 sonrasında biraz daha geri çekilin. Yeniden denemeler arasındaki gecikmeyi artırın ve OpenAI durum sayfasını denetleyin.
  6. Kullanıcıya neler olduğunu anlatın. "Meşgul, 5 saniye içinde yeniden denenecek" ifadesi, hiç bitmeyen bir yükleme göstergesinden daha iyidir.

OpenAI Python SDK, bağlantı hatalarını ve 408, 409, 429 ve 5xx yanıtlarını varsayılan olarak 2 kez kısa bir üstel geri çekilmeyle yeniden dener. Bunu max_retries ile değiştirebilirsiniz. Yeniden denemeler tükendiğinde SDK, 429 için InternalServerError ve 503 için RateLimitError yükseltir; bu nedenle kodunuzun yine de bir plana ihtiyacı vardır:

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

Uygulamanızın OpenAI hız sınırlarını nasıl ele aldığını test etme

Geliştirme sırasında openAI hız sınırına nadiren rastlarsınız. Tek kullanıcı sizsiniz ve istemleriniz kısadır. Dolayısıyla oran sınırı işlemeyi test etme yönteminiz, hataları kullanıcılarınızdan önce bulup bulmayacağınız konusunda karar verir.

Approach Bulduklarınız Kaçırdıklarınız
Üretimi bekleyin Gerçek başarısızlıklar Bir kullanıcı ona tıklayana kadar her şey
Testlerinizde API'yi taklit edin veya kod aracınızın mock’u yazmasına izin verin Yeniden deneme dalınızın çalışması OpenAI'nin gerçek hata gövdeleri ve kodları ile SDK'nızın yeniden deneme ilkesi. Uygulamanızın mock ortama erişmek için ayrıca yalnızca test amaçlı bir geçişe ihtiyacı vardır.
Sizi kısıtlayana kadar gerçek API'yi çağırın Fiili davranış İsteğe bağlı olarak belirli bir hatayı tetikleyemezsiniz ve her istek token tüketir
Uygulamanızın gerçek trafiğini yakalayın ve isteğe bağlı olarak OpenAI hataları döndürün Gerçek URL'ler, gerçek SDK'nız ve yeniden deneme ilkeniz ve OpenAI'nin kendi hata biçimi Uygulamanızda hiçbir şey değişmez, bu yüzden kodunuzu yalıtılmış olarak test etmez. Bunun için birim testlerinizi kullanın.

Uygulamanızda deneyin

Dev Proxy uygulamanızın api.openai.com isteklerini engeller ve OpenAI hatalarını döndürürken uygulamanız gerçek URL'leri çağırmaya devam eder. Ön ayar, OpenAI'nin kendi biçiminde TPM ve RPM rate_limit_exceeded, slow_down, credit_balance_exhausted ve 503server_is_overloaded hatalarından rastgele biriyle isteklerin openai-throttling çoğunu başarısız kılar. Oran 429 sınırı yanıtları bir Retry-After üst bilgi içerir ve uygulamanız bu sürenin sonundan önce yeniden denerse Dev Proxy bunu bildirir.

Ön ayarı indirin ve Dev Proxy'yi bununla başlatın:

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

Ardından uygulamanızı her zamanki gibi çalıştırın ve ne yaptığını izleyin. Geliştirme Proxy'sini yüklemek için bkz. Dev Proxy'yi ayarlama.

İsteklerinizin kullandığı istem ve tamamlama belirteçlerine göre uygulamanızın dakika başına belirteçleri bittiğinde nasıl davrandığını test etmek için bkz. Dil modeli belirteci sınırlarını test etme.

Sonraki Adımlar

Ayrıca bkz.