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.
Simuluje omezování rychlosti založené na tokenech pro rozhraní API jazykového modelu sledováním spotřeby tokenů výzvy a dokončení v rámci konfigurovatelných časových intervalů.
Příklad konfigurace
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
"plugins": [
{
"name": "LanguageModelRateLimitingPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "languageModelRateLimitingPlugin"
}
],
"urlsToWatch": [
"https://api.openai.com/*",
"http://localhost:11434/*"
],
"languageModelRateLimitingPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelratelimitingplugin.schema.json",
"promptTokenLimit": 5000,
"completionTokenLimit": 5000,
"resetTimeWindowSeconds": 60,
"whenLimitExceeded": "Throttle",
"headerRetryAfter": "retry-after"
}
}
Vlastnosti konfigurace
| Property | Description | Default |
|---|---|---|
promptTokenLimit |
Maximální počet tokenů výzvy povolených v časovém intervalu | 5000 |
completionTokenLimit |
Maximální počet tokenů dokončení povolených v časovém intervalu | 5000 |
resetTimeWindowSeconds |
Časové období v sekundách, po kterém se resetuje omezení tokenu. | 60 |
whenLimitExceeded |
Chování odpovědi při překročení limitů tokenů Může být Throttle nebo Custom. |
Throttle |
headerRetryAfter |
Název hlavičky HTTP, která bude obsahovat informace o opakování. | retry-after |
customResponseFile |
Cesta k souboru obsahujícímu vlastní odpověď, pokud whenLimitExceeded je nastavena na Customhodnotu . |
token-limit-response.json |
Vlastní konfigurace odpovědi
Pokud whenLimitExceeded je tato možnost nastavená Custom, můžete definovat vlastní odpověď v samostatném souboru JSON:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelratelimitingplugin.customresponsefile.schema.json",
"statusCode": 429,
"headers": [
{
"name": "retry-after",
"value": "@dynamic"
},
{
"name": "content-type",
"value": "application/json"
}
],
"body": {
"error": {
"message": "You have exceeded your token quota. Please wait before making additional requests.",
"type": "insufficient_quota",
"code": "token_quota_exceeded"
}
}
}
Vlastní vlastnosti odpovědi
| Property | Description |
|---|---|
statusCode |
Stavový kód HTTP, který se vrátí při překročení limitu tokenu. |
headers |
Pole hlaviček HTTP, které se mají zahrnout do odpovědi. Slouží @dynamic k automatickému výpočtu sekund do resetování po opakování. |
body |
Základní objekt odpovědi serializovaný do formátu JSON. |
Jak to funguje
LanguageModelRateLimitingPlugin funguje následovně:
- Zachycení požadavků rozhraní OpenAI API: Monitoruje požadavky POST na nakonfigurované adresy URL, které obsahují subjekty žádostí kompatibilní s OpenAI.
-
Sledování spotřeby tokenů: Analyzuje odpovědi pro extrakci
prompt_tokensacompletion_tokensz oddílu využití. - Vynucení limitů: Udržuje průběžné součty spotřebovaných tokenů v rámci nakonfigurovaného časového intervalu.
- Poskytnutí odpovědí na omezování: Když dojde k překročení limitů, vrátí standardní odpovědi na omezování nebo vlastní odpovědi.
Podporované typy žádostí
Modul plug-in podporuje dokončování OpenAI i žádosti o dokončení chatu:
-
Žádosti o dokončení: Požadavky s
promptvlastností -
Žádosti o dokončení chatu
messages: Žádosti o vlastnost
Sledování tokenů
Spotřeba tokenů se sleduje samostatně pro:
- Vyzvání tokenů: Vstupní tokeny spotřebované požadavkem
- Tokeny dokončení: Výstupní tokeny vygenerované odpovědí
Když dojde k překročení některého limitu, další požadavky se omezí, dokud se časový interval resetuje.
Chování časového intervalu
- Omezení tokenů se resetuje po nakonfigurování
resetTimeWindowSeconds - Časovač resetování se spustí při zpracování prvního požadavku.
- Po vypršení časového intervalu se čítače tokenů výzvy i dokončení resetují na nakonfigurované limity.
Výchozí odpověď na omezování
Pokud whenLimitExceeded je nastavená hodnota Throttle, modul plug-in vrátí standardní chybovou odpověď kompatibilní s OpenAI:
{
"error": {
"message": "You exceeded your current quota, please check your plan and billing details.",
"type": "insufficient_quota",
"param": null,
"code": "insufficient_quota"
}
}
Odpověď zahrnuje:
- Stavový kód HTTP:
429 Too Many Requests -
retry-afterheader with seconds until token limits reset - Hlavičky CORS, pokud původní požadavek obsahuje hlavičku
Origin
Případy použití
LanguageModelRateLimitingPlugin je užitečný pro:
- Testování omezování rychlosti na základě tokenů: Simulace chování aplikace, když poskytovatelé jazykového modelu vynucují kvóty tokenů
- Simulace nákladů na vývoj: Pochopení vzorů spotřeby tokenů během vývoje před dosažením skutečných limitů rozhraní API
- Testování odolnosti: Ověřte, že vaše aplikace správně zpracovává chyby omezení tokenů a implementuje odpovídající logiku opakování.
- Místní testování LLM: Scénáře omezování tokenů pomocí místních jazykových modelů (jako je Ollama), které nevynucují vlastní limity
Ukázkové scénáře
Scénář 1: Omezení základního tokenu
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 1000,
"completionTokenLimit": 500,
"resetTimeWindowSeconds": 300
}
}
Tato konfigurace umožňuje do 5 minut až 1 000 výzev a 500 tokenů dokončení.
Scénář 2: Vlastní odpovědi na chyby
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 2000,
"completionTokenLimit": 1000,
"resetTimeWindowSeconds": 60,
"whenLimitExceeded": "Custom",
"customResponseFile": "custom-token-error.json"
}
}
Tato konfigurace používá vlastní soubor odpovědí k poskytování specializovaných chybových zpráv při překročení limitů tokenů.