LLM hız sınırları: Dakika başına belirteçler, dakika başına istekler ve bunlara bastığınızda ne olur?

Dil modeli API'leri trafiğinizi bir kerede 2 şekilde sınırlar: dakikada kaç istek gönderdiğiniz (RPM) ve dakikada kaç belirteç kullandığınız (TPM). belirteç bütçenizi birkaç uzun istem kullandığından istek sınırınızın altında kalabilir ve yine de kısıtlanabilirsiniz. İki sınırdan herhangi birine ulaştığınızda API 429 Too Many Requests ile yanıt verir ve uygulamanızın beklemesi gerekir.

OpenAI, Azure OpenAI ve Anthropic nasıl sayılır

Provider Sınırlamalar Bilmeniz gerekenler
OpenAI RPM, günlük istek sayısı, TPM, günlük token sayısı ve daha fazlası, kuruluş ve proje başına, model başına Önce dolan limite ulaşırsınız. Belirteç sınırı için bir istek, max_tokens ile karakterlerine dayalı bir tahmin arasından yüksek olan olarak sayılır. Başarısız isteklerin sayısı da.
Azure OpenAI Her dağıtıma atadığınız TPM ve buna orantılı olarak ayarlanmış bir RPM sınırı RPM, 1 veya 10 saniyelik pencereler üzerinde denetlenir, bu nedenle dakika başına toplam değer iyi olduğunda bile ani istek artışı 429 alır. max_tokens belirteç tahminine dahildir.
Anthropic RPM, dakika başına giriş belirteçleri (ITPM) ve dakika başına çıkış belirteçleri (OTPM), model başına Kapasite sürekli olarak yenilenir ve 60 RPM, saniyede 1 istek olarak uygulanabilir. Çoğu modelde önbelleğe alınan giriş belirteçleri ITPM'ye doğru sayılmaz ve max_tokens OTPM'ye doğru sayılmaz.

max_tokens değerini 4.000 olarak ayarlayıp 200 belirteç geri alırsanız, OpenAI ve Azure OpenAI yine de 4.000'i limitinize dahil eder. Kullanım ölçümleriniz kotanızın çok altında görünürken 429'ları bu şekilde alabilirsiniz.

429 her sağlayıcı için ne anlama gelir?

Her 429 hatası bekleyince düzelmez.

Provider Bekleyin ve yeniden deneyin Dur ve birine söyle
OpenAI istekler veya belirteçler için 429 hatası, 429 slow_down (trafiğiniz sınırlarınız dahilinde bile çok hızlı arttı) ve 503 server_is_overloaded. Mevcut olduğunda Retry-After için bekleyin. organization_spend_limit_exceeded içinde project_spend_limit_exceeded, organization_usage_limit_exceeded, error.code veya credit_balance_exhausted ile 429 Tekrar denemek erişimi geri getirmez.
Azure OpenAI Dağıtımınızın TPM veya RPM değeri, sistem kapasitesi ya da hız sınırınızın geçici olarak düşürülmesi nedeniyle 429. retry-after-ms için bekleyin. Onaylı kotanızın altındayken üretimde sürekli 429 hataları alındı. Dağıtımın TPM ayırmasını denetleyin ve ardından bir destek isteği açın.
Anthropic 429 rate_limit_error, overloaded_error üst bilgisiyle birlikte, kullanımdaki keskin bir artışın ardından uygulanan hız sınırlamaları dahil olmak üzere, ve 529 retry-after. Aylık harcama üst sınırı için 429 hatası. error.details.error_code üst bilgisi yoktur, enforced_spend_limit_reachedretry-after durumundadır ve erişim yeniden sağlanana kadar başarısız olmaya devam eder.

LLM hız sınırları nasıl ele alınır

  1. Aldığınız 429'un hangisi olduğunu kontrol edin. Faturalama, harcama ve kota hataları için yeniden deneme değil bir kişi gerekir.
  2. API istediği sürece bekleyin. OpenAI ve Anthropic, retry-after saniyeler içinde gönderir. Azure OpenAI retry-after-ms milisaniyeler içinde gönderir. İpucu olmadan rastgele değişimle üstel olarak geri çekilin ve hem deneme sayısını hem de toplam süreyi sınırlandırın.
  3. SDK'nızın zaten ne yaptığını bilin. OpenAI ve Anthropic Python SDK'ları, bağlantı hatalarını ve 408, 409, 429 ve 5xx yanıtlarını varsayılan olarak 2 kez yeniden dener. Kendi yeniden deneme döngünüzü eklerseniz, denemeleri kapatın; örneğin Python'da kullanarak, max_retries=0; aksi takdirde deneme sayısı artar.
  4. Önemli olanı küçültün. OpenAI ve Azure OpenAI'de, max_tokens beklediğiniz yanıt boyutuna yakın bir değer ayarlayın. Anthropic sistem yönergeleri gibi yinelenen içeriği önbelleğe alın.
  5. Kademeli olarak artırın. Trafikteki keskin artış, sınırlarınız dahilinde bile OpenAI'nin slow_down ve Anthropic'in hızlanma limitlerini tetikler. OpenAI, dakikada 1 milyon giriş belirtecine ulaştığınızda her 15 dakikada bir en fazla %50 büyümeniz gerektiğini belirtir.
  6. Zaten tüketmiş olduğunuz bir akışı yeniden oynatmayın. Akış başladıktan sonra bir hata akış olayı olarak gelebilir ve OpenAI, çıkışı kullandıktan sonra isteğin otomatik olarak yeniden oynatılmamasını önerir.
  7. Bir istek 429'da dururken bir yükleme göstergesi göstermek yerine kullanıcıya bildirin.

Uygulamanızın LLM hız sınırlarını nasıl işlediği nasıl test edilir

Approach Bulduklarınız Kaçırdıklarınız
Testlerinizde SDK istemcisini mock’layın veya kod aracınızın mock’u yazmasına izin verin Hata dalınız çalışıyor mu Sağlayıcının gerçek durum kodları, hata kodları ve üst bilgileri ile SDK'nızın kendi yeniden denemeleri. Uygulamanızın mock ortama erişmek için ayrıca yalnızca test amaçlı bir geçişe de ihtiyacı vardır.
Sizi kısıtlayana kadar gerçek API'yi çağırın Gerçek davranış Her belirteç için ödeme yaparsınız ve istediğiniz zaman bir aşırı yükleme veya harcama üst sınırı tetikleyemezsiniz slow_down
Uygulamanızın gerçek trafiğini yakalayın ve sağlayıcının hatalarını döndürün veya uygulamanızın kullandığı belirteçlere göre hız sınırlaması uygulayın Gerçek URL'ler, SDK'nızın yeniden deneme ilkesi ve sağlayıcının hata gövdeleri; üstelik sınırı siz belirlersiniz Kodunuz izole durumda. Bunun için birim testlerinizi kullanın.

Uygulamanızda deneyin

Dev Proxy uygulamanızın dil modeli API'sine yönelik isteklerini yakalayıp, uygulamanız gerçek URL'yi çağırmaya devam ederken sağlayıcının kendi hatalarını döndürür. OpenAI için ö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"

openai-throttling ön ayarı, https://api.openai.com/* isteklerinin %90'ında rastgele bir hatayla başarısız olur: TPM veya RPM için rate_limit_exceeded, slow_down, credit_balance_exhausted veya 503 server_is_overloaded. anthropic-throttling ön ayarı, RPM, giriş belirteci, çıkış belirteci ve hızlandırma 429'ları ile 529 https://api.anthropic.com/* için de overloaded_error aynısını yapar. Her iki ön ayar da RetryAfterPlugin'i içerir. Bu ayar, uygulamanız 429 için belirtilen bekleme süresi dolmadan önce retry-after API'yi yeniden çağırdığında bunu size ne zaman bildirir. 503 ve 529 yanıtlarını denetlemez.

Uygulamanızın gerçekten kullandığı belirteçlere göre hız sınırlaması uygulamak için LanguageModelRateLimitingPlugin kullanın. Her yanıtın bildirdiği istem ve tamamlama belirteçlerini sayar ve uygulamanız belirlediğiniz sınırları aştığında 429’u retry-after ile döndürür. Azure OpenAI ve yerel modeller de dahil olmak üzere OpenAI uyumlu API'lerle çalışır:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.3.1/rc.schema.json",
  "plugins": [
    {
      "name": "LanguageModelRateLimitingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "languageModelRateLimitingPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.openai.com/*",
    "https://*.openai.azure.com/openai/deployments/*/chat/completions*"
  ],
  "languageModelRateLimitingPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.3.1/languagemodelratelimitingplugin.schema.json",
    "promptTokenLimit": 1000,
    "completionTokenLimit": 500,
    "resetTimeWindowSeconds": 60
  }
}

Eklenti, tahmini yeniden oluşturmaz max_tokens . Varsayılan 429 gövdesi insufficient_quota kodunu kullanır. Uygulamanızın hız sınırı için beklediği hata gövdesini döndürmek için Custom öğesini whenLimitExceeded olarak ayarlayın ve customResponseFile öğesini kendi yanıtınıza yönlendirin. Geliştirme Proxy'sini yüklemek için bkz. Dev Proxy'yi ayarlama.

Sonraki Adımlar

Ayrıca bkz.