Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Simuleert snelheidsbeperking op basis van tokens voor taalmodel-API's door het bijhouden van prompt- en voltooiingstokenverbruik binnen configureerbare tijdvensters.
Definitie van invoegtoepassingexemplaren
{
"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 |
Maximum aantal prompttokens dat is toegestaan binnen het tijdvenster. | 5000 |
completionTokenLimit |
Maximum aantal voltooiingstokens dat is toegestaan binnen het tijdvenster. | 5000 |
resetTimeWindowSeconds |
Tijdvenster in seconden waarna tokenlimieten opnieuw worden ingesteld. | 60 |
whenLimitExceeded |
Reactiegedrag wanneer tokenlimieten worden overschreden. Deze waarde kan Throttle of Custom zijn. |
Throttle |
headerRetryAfter |
De naam van de HTTP-header voor het opnieuw proberen van gegevens. | retry-after |
customResponseFile |
Pad naar bestand met aangepaste respons wanneer whenLimitExceeded deze is ingesteld op Custom. |
token-limit-response.json |
Aangepaste antwoordconfiguratie
Wanneer whenLimitExceeded dit is ingesteld Custom, kunt u een aangepast antwoord definiƫren in een afzonderlijk JSON-bestand:
{
"$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"
}
}
}
Aangepaste antwoordeigenschappen
| Property | Description |
|---|---|
statusCode |
HTTP-statuscode die moet worden geretourneerd wanneer de tokenlimiet wordt overschreden. |
headers |
Matrix van HTTP-headers die moeten worden opgenomen in het antwoord. Gebruik @dynamic deze functie voor opnieuw proberen na het automatisch berekenen van seconden totdat deze opnieuw is ingesteld. |
body |
Antwoordtekstobject dat is geserialiseerd naar JSON. |
Hoe het werkt
LanguageModelRateLimitingPlugin werkt door:
- OpenAI API-aanvragen onderscheppen: POST-aanvragen controleren op geconfigureerde URL's die openAI-compatibele aanvraagbody's bevatten
-
Tokenverbruik bijhouden: parseert antwoorden om te extraheren
prompt_tokensencompletion_tokensuit de gebruikssectie - Enforcing limits: Maintains running totals of consumed tokens within the configured time window
- Beperkingsreacties verleent: Wanneer limieten worden overschreden, retourneert u standaardbeperkingsreacties of aangepaste antwoorden
Ondersteunde aanvraagtypen
De invoegtoepassing ondersteunt zowel OpenAI-voltooiings- als chat-voltooiingsaanvragen:
-
Completion requests: Requests with a
promptproperty -
Aanvragen voor chatvoltooiing: aanvragen met een
messageseigenschap
Token tracking
Tokenverbruik wordt afzonderlijk bijgehouden voor:
- Prompt tokens: Input tokens consumed by the request
- Completion tokens: Output tokens generated by the response
Wanneer een van beide limieten wordt overschreden, worden de volgende aanvragen beperkt totdat het tijdvenster opnieuw wordt ingesteld.
Gedrag van tijdvensters
- Tokenlimieten opnieuw instellen na de geconfigureerde
resetTimeWindowSeconds - De timer voor opnieuw instellen wordt gestart wanneer de eerste aanvraag wordt verwerkt
- Wanneer een tijdvenster verloopt, worden prompt- en voltooiingstokentellers opnieuw ingesteld op de geconfigureerde limieten
Standaardbeperkingsreactie
Wanneer whenLimitExceeded deze is ingesteld Throttleop, retourneert de invoegtoepassing een standaard openAI-compatibel foutantwoord:
{
"error": {
"message": "You exceeded your current quota, please check your plan and billing details.",
"type": "insufficient_quota",
"param": null,
"code": "insufficient_quota"
}
}
Het antwoord bevat:
- HTTP-statuscode:
429 Too Many Requests -
retry-afterheader met seconden totdat tokenlimieten opnieuw worden ingesteld - CORS-headers wanneer de oorspronkelijke aanvraag een
Originheader bevat
Use cases
LanguageModelRateLimitingPlugin is handig voor:
- Snelheidsbeperking op basis van tokens testen: Simuleren hoe uw toepassing zich gedraagt wanneer taalmodelproviders tokenquota afdwingen
- Simulatie van ontwikkelingskosten: Inzicht in gebruikspatronen voor tokens tijdens de ontwikkeling voordat u echte API-limieten bereikt
- Resilience testing: Verify that your application properly handles token limit errors and implements appropriate retry logic
- Lokale LLM-tests: Token beperken van scenario's met lokale taalmodellen (zoals Ollama) die hun eigen limieten niet afdwingen
Example scenarios
Scenario 1: Beperking van basistoken
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 1000,
"completionTokenLimit": 500,
"resetTimeWindowSeconds": 300
}
}
Met deze configuratie kunnen maximaal 1000 prompttokens en 500 voltooiingstokens binnen een venster van 5 minuten worden voltooid.
Scenario 2: Aangepaste foutreacties
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 2000,
"completionTokenLimit": 1000,
"resetTimeWindowSeconds": 60,
"whenLimitExceeded": "Custom",
"customResponseFile": "custom-token-error.json"
}
}
Deze configuratie maakt gebruik van een aangepast antwoordbestand om gespecialiseerde foutberichten te bieden wanneer tokenlimieten worden overschreden.