Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozhraní API jazykového modelu omezují vaše využití 2 způsoby najednou: kolik požadavků odesíláte za minutu (RPM) a kolik tokenů použijete za minutu (TPM). Můžete zůstat hluboko pod limitem požadavků a přesto vám může být omezen přístup, protože několik dlouhých promptů vyčerpalo váš tokenový rozpočet. Když dosáhnete některého z limitů, rozhraní API odpoví pomocí 429 Too Many Requests a vaše aplikace musí počkat.
Jak OpenAI, Azure OpenAI a Anthropic počítají
| Provider | Co je omezeno | Co byste měli vědět |
|---|---|---|
| OpenAI | RPM, požadavky za den, TPM, tokeny za den a další, na organizaci a projekt, na model | Narazíte na ten limit, na který narazíte jako první. V případě limitu tokenů se požadavek počítá podle vyšší z hodnot max_tokens a odhadu na základě počtu znaků. Počet neúspěšných požadavků také. |
| Azure OpenAI | TPM, který přiřadíte každému nasazení, a limit RPM nastavený v poměru k němu | RpM se kontroluje přes okna 1 nebo 10 sekund, takže krátká špička dostane 429, i když je celkový počet za minutu v pořádku. Odhad tokenu zahrnuje max_tokens. |
| Anthropic | RPM, vstupní tokeny za minutu (ITPM) a výstupní tokeny za minutu (OTPM) na model | Kapacita se průběžně doplňuje a 60 RPM se může vynucovat jako 1 požadavek za sekundu. U většiny modelů se vstupní tokeny uložené v mezipaměti nezapočítávají do ITPM a max_tokens se nezapočítává do OTPM. |
Pokud nastavíte max_tokens hodnotu 4 000 a získáte zpět 200 tokenů, OpenAI a Azure OpenAI stále počítají 4 000 do vašeho limitu. Takto můžete dostávat chyby 429, zatímco metriky využití vypadají výrazně pod vaší kvótou.
Co znamená 429 u jednotlivých poskytovatelů
Ne každá chyba 429 zmizí, pokud čekáte.
| Provider | Počkejte a zkuste to znovu | Zastavte se a řekněte někomu |
|---|---|---|
| OpenAI | 429 pro požadavky nebo tokeny, 429 slow_down (objem vašich požadavků narostl příliš rychle, i v rámci vašich limitů) a 503 server_is_overloaded. Počkejte na Retry-After, když je k dispozici. |
429 s credit_balance_exhausted, organization_spend_limit_exceeded, project_spend_limit_exceedednebo organization_usage_limit_exceeded v error.code. Opakováním se neobnoví přístup. |
| Azure OpenAI | 429 pro TPM nebo RPM nasazení, pro systémovou kapacitu nebo pro dočasné snížení limitu požadavků. Počkejte na retry-after-ms. |
Opakované chyby 429 v produkčním prostředí, zatímco jste pod schválenou kvótou. Zkontrolujte přidělení čipu TPM nasazení a otevřete žádost o podporu. |
| Anthropic | 429 rate_limit_error s hlavičkou retry-after, včetně limitů akcelerace po prudkém nárůstu využití, a 529 overloaded_error. |
429 pro měsíční limit útraty. Nemá žádné retry-after záhlaví, je enforced_spend_limit_reacheda stále selhává, error.details.error_code dokud se přístup neobnoví. |
Zpracování limitů přenosové rychlosti LLM
- Zkontrolujte, kterou chybu 429 jste obdrželi. Chyby fakturace, útraty a kvóty vyžadují osobu, nikoli opakovaný pokus.
- Počkejte tak dlouho, jak rozhraní API vyžaduje. OpenAI a Anthropic odesílají
retry-afterv sekundách. Azure OpenAI odesíláretry-after-msv milisekundách. Bez nápovědy se exponenciálně vypněte s náhodným zpožděním a zapněte počet pokusů i celkový čas. - Zjistěte, co vaše sada SDK už dělá.
OpenAI a Anthropic Python SDK ve výchozím nastavení 2krát opakují pokusy při chybách připojení a odpovědích
408,409,429a 5xx. Pokud přidáte vlastní smyčku opakování, vypněte opakování sady SDK, napříkladmax_retries=0v Python, jak Azure OpenAI doporučuje nebo se pokusy násobí. - Zmenšete to, na čem záleží. U OpenAI a Azure OpenAI nastavte
max_tokensblízko očekávané velikosti odpovědi. Na Anthropic ukládáte do mezipaměti opakovaný obsah, jako jsou systémové instrukce. - Postupně zvyšujte. Prudký nárůst provozu spustí limity akcelerace OpenAI
slow_downa Anthropicu, a to i v rámci vašich limitů. OpenAI naznačuje, že jakmile dosáhnete 1 milionu vstupních tokenů za minutu, zvýšíte se o ne více než 50 % každých 15 minut. - Nepřehrávejte stream, který jste už přehráli. Chyba po spuštění datového proudu může dorazit jako událost datového proudu a OpenAI nedoporučuje po spotřebovaném výstupu automaticky opakovat požadavek.
- Řekněte uživateli, když se požadavek zasekne kvůli chybě 429, místo zobrazení indikátoru načítání.
Jak otestovat, že aplikace zpracovává limity počtu požadavků LLM
| Approach | Co najdete | Co vám chybí |
|---|---|---|
| Mockujte klienta SDK ve svých testech nebo nechte svého programovacího agenta napsat mock | Zda se spustí vaše chybová větev | Skutečné stavové kódy, kódy chyb a hlavičky poskytovatele a vlastní opakované pokusy sady SDK. Vaše aplikace také potřebuje testovací přepínač pro přístup k mocku. |
| Volejte skutečné rozhraní API, dokud vás nezačne omezovat | Reálné chování | Platíte za každý token a nemůžete na požádání vyvolat slow_down, přetížení ani limit útraty. |
| Zachyťte skutečný provoz vaší aplikace a vraťte chyby poskytovatele nebo omezte na základě tokenů, které vaše aplikace používá | Skutečné adresy URL, zásady opakovaných pokusů vaší sady SDK a těla chybových odpovědí poskytovatele s limitem, který zvolíte | Váš kód samostatně. Na to si nechte jednotkové testy. |
Vyzkoušejte si ji ve své aplikaci
Dev Proxy zachycuje požadavky vaší aplikace na rozhraní API jazykového modelu a vrací vlastní chyby poskytovatele, zatímco vaše aplikace pořád volá skutečnou adresu URL. V případě OpenAI si stáhněte předvolbu a spusťte s ní Dev Proxy:
devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"
openai-throttling Předvolba selže u 90 % požadavků na https://api.openai.com/* s náhodnou chybou: rate_limit_exceeded pro TPM nebo RPM, slow_down, credit_balance_exhausted nebo 503 server_is_overloaded. Předvolba anthropic-throttling dělá totéž pro https://api.anthropic.com/* s RPM, vstupními tokeny, výstupními tokeny a akceleračními 429 a 529 overloaded_error. Obě přednastavení zahrnují RetryAfterPlugin, který vám řekne, kdy aplikace znovu volá rozhraní API, než vyprší doba retry-after u odpovědi 429. Nekontroluje odpovědi 503 a 529.
Pro omezení rychlosti podle tokenů, které vaše aplikace skutečně používá, použijte LanguageModelRateLimitingPlugin. Spočítá tokeny výzvy a dokončení, které každá odpověď hlásí, a vrací 429 s retry-after, když vaše aplikace překročí nastavené limity. Funguje s rozhraními API kompatibilními s OpenAI, včetně Azure OpenAI a místních modelů:
{
"$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
}
}
Plugin nereprodukuje odhad max_tokens. Jeho výchozí text odpovědi 429 používá kód insufficient_quota. Pokud chcete vrátit text chyby, kterou vaše aplikace očekává při omezení rychlosti, nastavte whenLimitExceeded na Custom a namiřte customResponseFile na vlastní odpověď. Pokud chcete nainstalovat Dev Proxy, přečtěte si téma Nastavení Dev Proxy.