Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Simuliert die tokenbasierte Ratelimitierung für Sprachmodell-APIs, indem der Eingabeaufforderungs- und Abschlusstokenverbrauch innerhalb von konfigurierbaren Zeitfenstern nachverfolgt wird.
Definition der Plug-In-Instanz
{
"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 |
Maximale Anzahl der im Zeitfenster zulässigen Eingabeaufforderungstoken. | 5000 |
completionTokenLimit |
Maximale Anzahl der innerhalb des Zeitfensters zulässigen Abschlusstoken. | 5000 |
resetTimeWindowSeconds |
Zeitfenster in Sekunden, nach denen tokenlimits zurückgesetzt werden. | 60 |
whenLimitExceeded |
Antwortverhalten, wenn Tokengrenzwerte überschritten werden. Kann Throttle oder Custom sein. |
Throttle |
headerRetryAfter |
Name des HTTP-Headers, der Wiederholungsinformationen enthält. | retry-after |
customResponseFile |
Pfad zur Datei, die benutzerdefinierte Antwort enthält, wenn whenLimitExceeded auf Custom. |
token-limit-response.json |
Benutzerdefinierte Antwortkonfiguration
Wenn
{
"$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"
}
}
}
Benutzerdefinierte Antworteigenschaften
| Property | Description |
|---|---|
statusCode |
HTTP-Statuscode, der zurückgegeben werden soll, wenn der Tokengrenzwert überschritten wird. |
headers |
Array von HTTP-Headern, die in die Antwort eingeschlossen werden sollen. Wird zum Erneuten Wiederholen verwendet @dynamic , um Sekunden bis zum Zurücksetzen automatisch zu berechnen. |
body |
Antworttextobjekt, das in JSON serialisiert wird. |
Funktionsweise
Das LanguageModelRateLimitingPlugin funktioniert von:
- Abfangen von OpenAI-API-Anforderungen: Überwacht POST-Anforderungen auf konfigurierte URLs, die OpenAI-kompatible Anforderungstexte enthalten
-
Nachverfolgen der Tokennutzung: Analysiert Antworten zum Extrahieren
prompt_tokensundcompletion_tokensaus dem Verwendungsabschnitt. - Enforcing limits: Maintains running totals of consumed tokens within the configured time window
- Bereitstellen von Einschränkungsantworten: Wenn Grenzwerte überschritten werden, werden entweder Standardeinschränkungsantworten oder benutzerdefinierte Antworten zurückgegeben.
Unterstützte Anforderungstypen
Das Plug-In unterstützt sowohl OpenAI-Abschluss- als auch Chatabschlussanforderungen:
-
Completion requests: Requests with a
promptproperty -
Chat-Abschlussanforderungen: Anforderungen mit einer
messagesEigenschaft
Token tracking
Die Tokennutzung wird separat nachverfolgt für:
- Prompt tokens: Input tokens consumed by the request
- Completion tokens: Output tokens generated by the response
Wenn beide Grenzwerte überschritten werden, werden nachfolgende Anforderungen gedrosselt, bis das Zeitfenster zurückgesetzt wird.
Verhalten des Zeitfensters
- Tokenbeschränkungen werden nach der konfigurierten Konfiguration zurückgesetzt
resetTimeWindowSeconds - Der Zeitgeber zum Zurücksetzen beginnt, wenn die erste Anforderung verarbeitet wird.
- Wenn ein Zeitfenster abläuft, werden sowohl Eingabeaufforderungs- als auch Abschlusstokenzähler auf ihre konfigurierten Grenzwerte zurückgesetzt.
Standardeinschränkungsantwort
Wenn whenLimitExceeded das Plug-In auf Throttle festgelegt ist, wird eine standardmäßige OpenAI-kompatible Fehlerantwort zurückgegeben:
{
"error": {
"message": "You exceeded your current quota, please check your plan and billing details.",
"type": "insufficient_quota",
"param": null,
"code": "insufficient_quota"
}
}
Die Antwort umfasst:
- HTTP-Statuscode:
429 Too Many Requests -
retry-afterHeader mit Sekunden, bis Tokenbeschränkungen zurückgesetzt werden - CORS-Header, wenn die ursprüngliche Anforderung einen
OriginHeader enthält
Use cases
Das LanguageModelRateLimitingPlugin ist nützlich für:
- Testen der tokenbasierten Ratenbegrenzung: Simulieren, wie sich Ihre Anwendung verhält, wenn Sprachmodellanbieter Tokenkontingente erzwingen
- Simulation von Entwicklungskosten: Grundlegendes zu Tokenverbrauchsmustern während der Entwicklung, bevor echte API-Grenzwerte erreicht werden
- Resilience testing: Verify that your application properly handles token limit errors and implements appropriate retry logic
- Lokale LLM-Tests: Testen von Tokenbeschränkungsszenarien mit lokalen Sprachmodellen (z. B. Ollama), die ihre eigenen Grenzwerte nicht erzwingen
Example scenarios
Szenario 1: Grundlegendes Tokenlimiting
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 1000,
"completionTokenLimit": 500,
"resetTimeWindowSeconds": 300
}
}
Diese Konfiguration ermöglicht bis zu 1.000 Eingabeaufforderungstoken und 500 Abschlusstoken innerhalb eines fünfminütigen Fensters.
Szenario 2: Benutzerdefinierte Fehlerantworten
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 2000,
"completionTokenLimit": 1000,
"resetTimeWindowSeconds": 60,
"whenLimitExceeded": "Custom",
"customResponseFile": "custom-token-error.json"
}
}
Diese Konfiguration verwendet eine benutzerdefinierte Antwortdatei, um spezielle Fehlermeldungen bereitzustellen, wenn Tokengrenzwerte überschritten werden.