Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Definition av plugin-instans
{
"name": "LanguageModelRateLimitingPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "languageModelRateLimitingPlugin",
"urlsToWatch": [
"https://api.openai.com/*",
"http://localhost:11434/*"
]
}
Configuration example
{
"languageModelRateLimitingPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/languagemodelratelimitingplugin.schema.json",
"promptTokenLimit": 5000,
"completionTokenLimit": 5000,
"resetTimeWindowSeconds": 60,
"whenLimitExceeded": "Throttle",
"headerRetryAfter": "retry-after"
}
}
Configuration properties
| 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/v1.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 - Enforcing limits: Maintains running totals of consumed tokens within the configured time window
- 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:
-
Completion requests: Requests with a
promptproperty -
Förfrågningar om chattens slutförande: Begäranden med en
messagesegenskap
Token tracking
Tokenförbrukning spåras separat för:
- Prompt tokens: Input tokens consumed by the request
- Completion tokens: Output tokens generated by the response
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
Use cases
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
- Resilience testing: Verify that your application properly handles token limit errors and implements appropriate retry logic
- Lokal LLM-testning: Testa tokenbegränsningsscenarier med lokala språkmodeller (till exempel Ollama) som inte tillämpar sina egna gränser
Example scenarios
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.