Zum Hauptinhalt springen
  1. Erfindungen/

TokenLimiter

2025.1 14. Februar 2025

Diese Bibliothek ermöglicht es Ihnen, die Nutzung von Tokens pro Minute über mehrere Goroutinen hinweg zu begrenzen, mit Unterstützung für optionales Verzögern bis zum Einpassen.

Problemstellung

In Anwendungen, die intensiv Tokens wie API-Schlüssel mit Ratengrenzwerten verwenden, ist es entscheidend, die Nutzung von Tokens zu begrenzen, um diese Limits nicht zu überschreiten. Dieses Problem wird komplexer, wenn mehrere Goroutinen beteiligt sind, die jeweils potenziell unabhängig Tokens verbrauchen.

Lösung

Ich habe eine Lösung geschaffen, die über mehrere Goroutinen hinweg funktioniert und die Möglichkeit bietet, entweder einen Fehler zurückzugeben oder zu verzögern, bis die Nutzung innerhalb des Limits liegt, wenn das Limit überschritten wird.

Typische Anwendungsfälle

  • Ratenbegrenzung von API-Aufrufen über konkurrierende Prozesse hinweg
  • Steuerung des Ressourcenverbrauchs in verteilten Systemen
  • Verwaltung der Token-Nutzung für Drittanbieter-API-Integrationen
  • Sicherstellung der Einhaltung von API-Ratengrenzwerten in Hochdurchsatz-Anwendungen

Verwendet von

  • LinkResearchTools
  • Eine große KI-Marke

Versionsgeschichte

2025.1
14. Februar 2025
Überprüfung und Aktualisierung auf neueste Bibliotheken
Changes:
  • Überprüfung und Aktualisierung auf neueste Bibliotheken
  • Kompatibilitätsprobleme mit älteren Systemen behoben
2024.1
10. Januar 2024
Überprüfung und Aktualisierung auf neueste Bibliotheken
Changes:
  • Überprüfung und Aktualisierung auf neueste Bibliotheken
2023.1
5. Mai 2023
Initiale Lösung bereitgestellt

Lizenzbedingungen

Individuelle Nutzungslizenzen nach Vereinbarung
Funktionen>

Funktionen #

  • Threadsichere Token-Begrenzung über mehrere Goroutinen hinweg
  • Option zur Verzögerung bis zum Einpassen: Wenn aktiviert und das Token-Nutzungslimit überschritten wird, wartet der Aufruf, bis genügend Tokens vergangen sind, damit die Nutzung innerhalb des Limits liegt
  • Fehler bei Limitüberschreitung: Wenn die Verzögerung bis zum Einpassen nicht aktiviert ist, gibt der Aufruf einen Fehler zurück, wenn das Token-Nutzungslimit überschritten wird
  • Verfolgung der durchschnittlichen Nutzung: Verfolgen der durchschnittlichen Token-Nutzung über eine Reihe von Punkten (z.B. die letzten 100 Nutzungen)
  • Letzte Minute abrufen: Methode zum Abrufen der letzten Minute, die zum Hinzufügen von Tokens verwendet wurde
Einschränkungen>

Einschränkungen #

Dieser TokenLimiter funktioniert nur auf einer einzelnen Maschine. Bei Ausführung auf mehreren Knoten eines Clusters könnte das Token-Limit überschritten werden. Eine Behelfslösung wäre, jedem Knoten einen Teil des Token-Pro-Minute-Kontingents (TPM) zuzuweisen. Dies würde funktionieren, wenn ich weiß, dass jeder Knoten eine ähnliche Auslastung haben wird. Wenn jedoch eine Maschine weniger Anfragen bearbeitet und nicht betriebsbereit ist, würde ihr Kontingent ungenutzt bleiben, was die Cluster-Leistung beeinträchtigt. Die richtige Lösung wäre die Implementierung eines Clusters von TokenLimiters, der die Verteilung von Token-Limits pro Maschine dynamisch verwaltet.

Wie unterscheidet sich dies von Rate Limiters>

Wie unterscheidet sich dies von Rate Limiters #

Während Rate Limiters und mein TokenLimiter beide die Nutzung von Ressourcen in gewisser Weise begrenzen, gibt es wichtige Unterschiede. Rate Limiters begrenzen typischerweise die Anzahl der Anfragen, die in einem bestimmten Zeitraum gestellt werden können, und behandeln Nebenläufigkeit oft isoliert. Mein TokenLimiter ist speziell für token-basierte Systeme (z.B. API-Tokens) konzipiert, bei denen jede Aktion unterschiedliche Mengen an Tokens verbrauchen kann, und bietet eine threadsichere Verwaltung über gleichzeitige Operationen hinweg.



Christoph C. Cemper
Autor
Christoph C. Cemper
Waking up every, thinking about Links, SEO and AI.