Uygulamanızın OpenAI hız sınırlarını nasıl işlediğini test edin

Bir bakışta
Hedef: Uygulamanızın OpenAI hız sınırı ve aşırı yükleme hatalarını nasıl işlediğini test edin
Süre: 10 dakika
Eklentiler:GenericRandomErrorPlugin, RetryAfterPlugin
Önkoşullar:Geliştirme Ara Sunucusunu Ayarlama

Uygulamanız geliştirme aşamasında çalışıyor, ardından ile 429 Too Many Requestsüretimde başarısız oluyor. OpenAI hız sınırları, kuruluşunuzun kullanım katmanına, modelinize ve aynı kuruluşu kullanan diğer herkese bağlıdır, bu nedenle bunlara bilerek güvenilir bir şekilde ulaşamazsınız. Geliştirme Proxy'si, OpenAI API'sinin döndürdüğü hataları döndürür, böylece kullanıcılarınızdan önce uygulamanızın ne yaptığını görebilirsiniz.

OpenAI'nin ne döndürdüğüne bakın

Her OpenAI hatası "yeniden deneyin" anlamına gelmez. Uygulamanızın bunları birbirinden ayırt etmesi gerekir.

Statü error.code Ne anlama gelir? Uygulamanızın yapması gerekenler
429 rate_limit_exceeded Dakika başına istek (RPM) veya dakika başına belirteç (TPM) sınırınıza ulaştınız. Üst bilgide gösterilen süre dolunca yeniden deneyin.
429 slow_down Sınırlarınız dahilinde olsanız bile istek oranınız çok hızlı arttı. Retry-After için bekleyin, istek oranınızı azaltın ve aşamalı olarak artırın.
429 credit_balance_exhausted Kuruluşunuzun ön ödemeli kredisi kalmadı. Yeniden denemeyin. Yeniden denemek erişimi geri yüklemez. Kullanıcıya bildirin veya bir yöneticiyi uyarın.
503 server_is_overloaded Model şu anda yeterli kapasiteye sahip değil. Varsa Retry-After bekleyin, ardından artan gecikmelerle yeniden deneyin.

Listenin tamamı için OpenAI belgelerindeki Hata kodları bölümüne bakın.

Important

429 satırdaki 3 hatanın tümü aynı durum kodunu kullanır. Uygulamanız her 429'da bir yeniden denerse, asla düzelmeyen faturalama hatalarını yeniden denemeye devam eder. Ne yapacağınıza karar vermek için error.code öğesini kontrol edin.

OpenAI SDK'sının sizin için ne yaptığını öğrenin

Python ve JavaScript için resmi OpenAI SDK'ları üstel geri alma ile varsayılan olarak 2 kez 408, 409, 429 ve 5xx yanıtlarını ve bağlantı hatalarını yeniden dener. Bunu Python ve maxRetries JavaScript'teki seçeneğiyle max_retries değiştirebilirsiniz.

SDK yeniden denemeleri kısa süreli ani artışları kapsar. Uygulamanızın yine de yeniden denemeler bittiğinde ne olacağına ve yeniden denemenin düzeltmediği hataların nasıl işleneceğini belirlemesi gerekir. Python'de 429 RateLimitError istisnasını oluşturur ve 503 InternalServerError istisnasını oluşturur, bu nedenle her ikisini de halledin.

Tip

Hata işleme kodunuzun tam olarak ne aldığını görmek için, test sırasında maxRetries: 0 (Python) veya max_retries=0 (JavaScript) ayarlayın. Ardından SDK yeniden denemelerini tekrar etkinleştirin.

OpenAI istek sınırlarını simüle etme

Dev Proxy, tablodaki OpenAI hatalarıyla ilgili bir ön ayara sahiptir. İndirin:

devproxy config get openai-throttling

Dev Proxy'yi hazır ayarla başlatın:

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

Ön ayar, https://api.openai.com/* adresine yapılan isteklerin %90'ında tablodan rastgele bir hatayla başarısız olur. Hız sınırlama yanıtları için Retry-After üst bilgisini ayarlar ve uygulamanızın API'yi yeniden çağırmadan önce bu kadar uzun süre bekleyip beklemediğini denetlemek için RetryAfterPlugin'i kullanır.

Uygulamanızın isteklerini Dev Proxy aracılığıyla gönderdiğinden ve Dev Proxy sertifikasına güvendiğinden emin olun. Node.js için bkz. Node.js uygulamalarıyla Geliştirme Proxy'si kullanma. Diğer çalışma zamanları için bkz. Dev Proxy sorunlarını giderme.

Uygulamanızı çalıştırın ve aşağıdakileri denetleyin:

  • Bir rate_limit_exceeded veya slow_down hatasından sonra uygulamanız Retry-After süresini bekler. API'yi çok erken çağırırsa Dev Proxy bunu bildirir ve isteği kısıtlar.
  • Bir credit_balance_exhausted hatadan sonra uygulamanız API'yi çağırmayı durdurur ve net bir ileti gösterir.
  • Bir server_is_overloaded hatadan sonra uygulamanız gecikmeli olarak yeniden dener ve yeniden denemeler bittiğinde geri döner veya yığın izlemesi yerine net bir ileti gösterir.
  • Uygulamanız yaptığınız işi kaybetmez. Örneğin, uzun bir sohbet veya toplu işlem, hata oluştuktan sonra da devam eder.

İsteklerin ne sıklıkta başarısız olduğunu değiştirmek için --failure-rate seçeneğini kullanın. Örneğin, her isteği başarısız kılmak için:

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

Azure OpenAI ve diğer sağlayıcılar için belirteç sınırlarının simülasyonunu gerçekleştirme

Ön ayar, uygulamanızın kaç belirteç kullandığından bağımsız olarak rastgele hatalar döndürür. İstekleri gerçek belirteç kullanımına göre kısıtlamak, örneğin uzun bir konuşma TPM sınırınızı aştığında ne olduğunu görmek için LanguageModelRateLimitingPlugin kullanın. Azure OpenAI ve yerel modeller de dahil olmak üzere OpenAI uyumlu tüm API'lerle çalışır. Daha fazla bilgi için bkz. Dil modeli belirteci sınırlarını test etme.

Sonraki adım

Belirteç tabanlı sınırları nasıl simüle edeceğinizi öğrenin.

Ayrıca bkz.