Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Simulerar tokenbaserad hastighetsbegränsning för språkmodell-API:er genom att spåra förbrukning av prompt- och slutförandetoken inom konfigurerbara tidsfönster.
Konfigurationsexempel
{
"$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"
}
}
Konfigurationsegenskaper
| Property | Description | Default |
|---|---|---|
promptTokenLimit |
Maximalt antal tillåtna prompttoken inom tidsfönstret. | 5000 |
completionTokenLimit |
Maximalt antal slutförandetoken som tillåts inom tidsfönstret. | 5000 |
resetTimeWindowSeconds |
Tidsfönster i sekunder varefter token begränsar återställningen. | 60 |
whenLimitExceeded |
Svarsbeteende när tokengränserna överskrids. Det kan vara Throttle eller Custom. |
Throttle |
headerRetryAfter |
Namnet på HTTP-huvudet för att inkludera återförsöksinformation. | retry-after |
customResponseFile |
Sökväg till en fil som innehåller anpassat svar när whenLimitExceeded är inställt på Custom. |
token-limit-response.json |
Anpassad svarskonfiguration
När whenLimitExceeded är inställt på Customkan du definiera ett anpassat svar i en separat JSON-fil:
{
"$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"
}
}
}
Anpassade svarsegenskaper
| Property | Description |
|---|---|
statusCode |
HTTP-statuskod som returneras när tokengränsen överskrids. |
headers |
Matris med HTTP-huvuden som ska inkluderas i svaret. Använd @dynamic för återförsök efter för att automatiskt beräkna sekunder tills återställningen har återställts. |
body |
Svarstextobjekt som serialiseras till JSON. |
Så här fungerar det
LanguageModelRateLimitingPlugin fungerar genom att:
- Fånga upp OpenAI API-begäranden: Övervakar POST-begäranden till konfigurerade URL:er som innehåller OpenAI-kompatibla begärandeorgan
-
Förbrukning av spårningstoken: Parsar svar för att extrahera
prompt_tokensochcompletion_tokensfrån användningsavsnittet - Framtvinga gränser: Underhåller löpande summor av förbrukade token inom det konfigurerade tidsfönstret
- Tillhandahålla begränsningssvar: När gränserna överskrids returnerar antingen standardbegränsningssvar eller anpassade svar
Typer av begäranden som stöds
Plugin-programmet stöder både begäranden om slutförande av OpenAI och chatt:
-
Slutförandebegäranden: Begäranden med en
promptegenskap -
Förfrågningar om chattens slutförande: Begäranden med en
messagesegenskap
Tokenspårning
Tokenförbrukning spåras separat för:
- Fråga efter token: Indatatoken som förbrukas av begäran
- Slutförandetoken: Utdatatoken som genereras av svaret
När någon av gränserna överskrids begränsas efterföljande begäranden tills tidsfönstret återställs.
Beteende för tidsfönster
- Återställning av tokengränser efter den konfigurerade
resetTimeWindowSeconds - Återställningstimern startar när den första begäran bearbetas
- När ett tidsfönster upphör att gälla återställs räknare för både prompt- och slutförandetoken till sina konfigurerade gränser
Standardbegränsningssvar
När whenLimitExceeded är inställt på Throttlereturnerar plugin-programmet ett Standard OpenAI-kompatibelt felsvar:
{
"error": {
"message": "You exceeded your current quota, please check your plan and billing details.",
"type": "insufficient_quota",
"param": null,
"code": "insufficient_quota"
}
}
Svaret innehåller:
- HTTP-statuskod:
429 Too Many Requests -
retry-aftersidhuvud med sekunder tills tokenbegränsningar återställs - CORS-huvuden när den ursprungliga begäran innehåller ett
Originhuvud
Användningsfall
LanguageModelRateLimitingPlugin är användbart för:
- Testa tokenbaserad hastighetsbegränsning: Simulera hur ditt program beter sig när språkmodellprovidrar tillämpar tokenkvoter
- Utvecklingskostnadssimulering: Förstå mönster för tokenförbrukning under utveckling innan du når verkliga API-gränser
- Motståndskraftstestning: Kontrollera att programmet hanterar tokengränsfel korrekt och implementerar lämplig logik för återförsök
- Lokal LLM-testning: Testa tokenbegränsningsscenarier med lokala språkmodeller (till exempel Ollama) som inte tillämpar sina egna gränser
Exempelscenarier
Scenario 1: Grundläggande tokenbegränsning
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 1000,
"completionTokenLimit": 500,
"resetTimeWindowSeconds": 300
}
}
Den här konfigurationen tillåter upp till 1 000 prompttoken och 500 slutförandetoken inom ett 5-minutersfönster.
Scenario 2: Anpassade felsvar
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 2000,
"completionTokenLimit": 1000,
"resetTimeWindowSeconds": 60,
"whenLimitExceeded": "Custom",
"customResponseFile": "custom-token-error.json"
}
}
Den här konfigurationen använder en anpassad svarsfil för att tillhandahålla specialiserade felmeddelanden när tokengränserna överskrids.