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.
Konfigurationsbeispiel
{
"$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"
}
}
Konfigurationseigenschaften
| 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/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"
}
}
}
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. - Erzwingen von Grenzwerten: Verwaltet die Gesamtanzahl der verbrauchten Token innerhalb des konfigurierten Zeitfensters.
- 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:
-
Abschlussanforderungen: Anforderungen mit einer
promptEigenschaft -
Chat-Abschlussanforderungen: Anforderungen mit einer
messagesEigenschaft
Tokenverfolgung
Die Tokennutzung wird separat nachverfolgt für:
- Eingabeaufforderungstoken: Von der Anforderung verbrauchte Eingabetoken
- Abschlusstoken: Ausgabetoken, die von der Antwort generiert wurden
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
Anwendungsfälle
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
- Resilienztests: Überprüfen Sie, ob Ihre Anwendung Tokengrenzfehler ordnungsgemäß verarbeitet und geeignete Wiederholungslogik implementiert.
- Lokale LLM-Tests: Testen von Tokenbeschränkungsszenarien mit lokalen Sprachmodellen (z. B. Ollama), die ihre eigenen Grenzwerte nicht erzwingen
Beispielszenarien
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.