Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Token-Nutzung

Dies behandelt, wie man die Token-Nutzung in LibreChat verfolgt und steuert. Sie erfahren, wie Sie Kontext und Kosten einsehen, Transaktionen konfigurieren, Benutzerguthaben aktivieren und einem Konto Credits hinzufügen.

Einführung

Ab v0.6.0 verfolgt LibreChat die Token-Nutzung für unterstützte endpoints präzise. Alle Token-Transaktionen werden in der "Transactions"-Sammlung in Ihrer Datenbank gespeichert. Aktuelle Releases zeigen zudem die Echtzeit-Kontextnutzung und die Kosten in der Konversations-UI an, sofern diese aktiviert sind.

Derzeit können Sie die Token-Nutzung von Benutzern durch die Aktivierung von Benutzerguthaben (User Balances) begrenzen. Anstatt Token-Guthabenlimits über Umgebungsvariablen zu konfigurieren, legen Sie diese Optionen jetzt in Ihrer librechat.yaml Datei im Abschnitt balance fest. Kostenwerte sind standardmäßig ausgeblendet und müssen mit interface.contextCost aktiviert werden.

Anzeigen von Kontextnutzung und Kosten

LibreChat zeigt eine Kontextanzeige an, während eine Konversation läuft. Die Anzeige aktualisiert sich durch Nutzungsereignisse während des Streamings und kann Folgendes anzeigen:

  • Aktuelle Prompt-/Kontextnutzung im Vergleich zum Kontextfenster des Modells
  • Eine Hover-Zusammenfassung für schnelle Token- und Kostendetails
  • Eine Aufschlüsselung per Klick für die Nutzung von Prompt-, Completion- und zwischengespeicherten (cached) Token sowie für Zweig- und Konversationssummen

Nutzungsaufschlüsselungen werden zusammen mit Nachrichten und Unterhaltungen gespeichert. Wieder geöffnete Chats behalten ihre Verzweigungs- sowie Gesamt-Nutzungs-/Kostendetails bei, anstatt sich nur auf die aktive Streaming-Sitzung zu verlassen.

Wenn die Zusammenfassung ein langes Gespräch komprimiert, speichert LibreChat die komprimierte Zusammenfassungsbasis und zählt für die Kontextanzeige nur die Interaktionen nach der Zusammenfassung. Die Nutzungs- und Gesamtkosten beinhalten weiterhin die Ausgaben für den gesamten Verlauf.

Admins können diese Anzeigen in librechat.yaml steuern:

interface:
  contextUsage: true
  contextCost: true
  currency:
    code: EUR
    rate: 0.92
  • contextUsage steuert, ob Benutzer das Kontextfenster und die Anzeige für die Token-Nutzung sehen.
  • contextCost steuert, ob Benutzer Kostenwerte in den Nutzungsdetails sehen. Der Standardwert ist false; setzen Sie ihn auf true, um Kosten anzuzeigen.
  • currency konvertiert angezeigte USD-Kosten mithilfe eines statischen Multiplikators, wenn die Kostenanzeige aktiviert ist. Transaktionen werden weiterhin unter Verwendung der Token-Guthabenabrechnung von LibreChat aufgezeichnet.

Benutzerdefinierte Endpoint-Token-Konfiguration

Für benutzerdefinierte endpoints definieren Sie modellspezifische Kontextfenster und Raten pro Million Token mit endpoints.custom[].tokenConfig:

endpoints:
  custom:
    - name: 'Mistral'
      apiKey: '${MISTRAL_API_KEY}'
      baseURL: 'https://api.mistral.ai/v1'
      models:
        default: ['mistral-large-latest']
      tokenConfig:
        mistral-large-latest:
          prompt: 2
          completion: 6
          context: 128000

prompt, completion und context sind für jeden Modelleintrag erforderlich. cacheRead und cacheWrite können für Anbieter hinzugefügt werden, die die Nutzung von zwischengespeicherten Eingaben (cached input) melden. Für Agents, die mehrere endpoints verwenden, nutzt LibreChat die passende endpoint/Modell-Token-Konfiguration bei der Erfassung von Nutzung und Kosten.

Die abgerufene Token-Konfiguration wird mit Benutzer-Scope zwischengespeichert, wenn sich endpoint-Modelle, Schlüssel, URLs oder Header je nach Anfragekontext unterscheiden können, sodass isolierte benutzerdefinierte endpoint-Preise und Kontextfenster getrennt bleiben.

Transaktionskonfiguration

Das Transaktionssystem steuert, ob Token-Nutzungsdatensätze in der Datenbank gespeichert werden. Dies kann separat vom Guthabensystem konfiguriert werden.

Transaktionseinstellungen

version: 1.2.9

# Transaction settings
# Controls whether to save transaction records to the database
# Default is true (enabled)
transactions:
  enabled: false

Wichtig: Wenn balance.enabled auf true gesetzt ist, wird die Transaktionsaufzeichnung unabhängig von der Einstellung transactions.enabled automatisch aktiviert. Dies stellt sicher, dass die Guthabenverfolgung korrekt funktioniert, indem eine vollständige Aufzeichnung der gesamten Token-Nutzung beibehalten wird.

Weitere Details finden Sie auf der Seite Transactions Configuration.

Guthaben-Konfiguration

Das Guthabensystem in LibreChat ermöglicht es Administratoren zu konfigurieren, wie Token-Guthaben für Benutzer verwaltet werden. Alle Guthaben-Einstellungen werden nun in Ihrer YAML-Konfiguration unter dem balance Objekt verwaltet.

Hinweis: Dies ersetzt die vorherigen Umgebungsvariablen (CHECK_BALANCE und START_BALANCE) und bietet eine strukturiertere Möglichkeit zur Verwaltung von Benutzerguthaben.

Vollständige Kontostand-Einstellungen

version: 1.3.5

# Balance settings
balance:
  enabled: true # Enable token credit balances for users
  startBalance: 20000 # Initial tokens credited upon registration
  autoRefillEnabled: false # Enable automatic token refills
  refillIntervalValue: 30 # Numerical value for refill interval
  refillIntervalUnit: 'days' # Time unit for refill interval (days, hours, etc.)
  refillAmount: 10000 # Tokens added during each refill

Erläuterung der Balance-Einstellungen

  • enabled: Aktiviert die Token-Guthabenverfolgung und das Guthabenmanagement für Benutzer. Wenn auf true gesetzt, verfolgt das System den Token-Verbrauch und erzwingt Guthabenlimits.

  • startBalance: Legt die anfängliche Anzahl an Token fest, die einem Benutzer bei der Registrierung gutgeschrieben werden. Dies ist das Startguthaben für alle neuen Benutzer.

  • autoRefillEnabled: Bestimmt, ob das automatische Auffüllen von Token-Guthaben aktiviert ist. Wenn dies auf true gesetzt ist, fügt das System den Benutzerguthaben basierend auf dem Auffüllintervall automatisch Credits hinzu.

  • refillIntervalValue: Gibt den numerischen Wert für das Intervall an, in dem Token-Credits automatisch aufgefüllt werden. Funktioniert in Verbindung mit refillIntervalUnit.

  • refillIntervalUnit: Legt die Zeiteinheit für das Auffüllintervall fest. Unterstützte Werte sind "seconds", "minutes", "hours", "days", "weeks" und "months".

  • refillAmount: Gibt die Anzahl der Token an, die dem Guthaben des Benutzers bei jeder automatischen Auffüllung hinzugefügt werden.

Weitere Details finden Sie auf der Seite Balance Configuration.

Funktionsweise von Auto-Refill

Wenn das Guthaben eines Benutzers nachverfolgt wird und autoRefill aktiviert ist, fügt das System dem Guthaben nur dann automatisch Credits hinzu, wenn das festgelegte Zeitintervall seit der letzten Auffüllung verstrichen ist. Dies wird erreicht, indem das aktuelle Datum mit dem lastRefill-Datum zuzüglich des angegebenen Intervalls verglichen wird.

Auto-Refill-Prozess

  1. Wenn ein Benutzer versucht, Token auszugeben, prüft das System, ob das aktuelle Guthaben ausreicht.
  2. Wenn das Guthaben nach der Transaktion auf null oder darunter fallen würde, prüft das System, ob die automatische Aufladung aktiviert ist.
  3. Wenn auto-refill aktiviert ist, prüft das System, ob das Zeitintervall seit der letzten Auffüllung verstrichen ist:
    • Das System vergleicht das aktuelle Datum mit lastRefill + refillInterval
    • Wenn das Intervall abgelaufen ist, werden dem Guthaben des Benutzers Token hinzugefügt.
    • Das lastRefill-Datum wird auf das aktuelle Datum aktualisiert
  4. Die Transaktion wird fortgesetzt, wenn das Guthaben ausreicht (entweder ursprünglich oder nach einer Aufladung).

Unterstützte Zeiteinheiten

refillIntervalUnit kann auf einen der folgenden Werte gesetzt werden:

  • Sekunden
  • Minuten
  • Stunden
  • Tage
  • Wochen
  • Monate

Wenn zum Beispiel refillIntervalValue auf 30 und refillIntervalUnit auf days gesetzt ist, fügt das System dem Guthaben des Benutzers nur dann refillAmount Token hinzu, wenn seit der letzten Auffüllung 30 Tage vergangen sind.

Guthabensynchronisierung

Wenn sich ein Benutzer anmeldet, synchronisiert das System automatisch seine Guthaben-Einstellungen mit der aktuellen globalen Guthaben-Konfiguration. Dies stellt sicher, dass alle Änderungen an der Guthaben-Konfiguration auf alle Benutzer angewendet werden.

Der Synchronisationsprozess:

  1. Überprüft, ob der Benutzer einen Kontostandsdatensatz hat
  2. Falls kein Datensatz existiert, wird einer mit dem aktuellen startBalance erstellt.
  3. Aktualisiert die automatischen Auffüllungseinstellungen des Benutzers, um sie an die globale Konfiguration anzupassen
  4. Stellt sicher, dass das Auffüllintervall und der Betrag des Benutzers mit den globalen Einstellungen übereinstimmen

Verwalten von Token-Guthaben

Sie können Benutzerguthaben manuell hinzufügen oder festlegen. Dies ist besonders nützlich während der Entwicklung oder wenn Sie planen, in Zukunft ein vollständiges System zur Guthabenansammlung aufzubauen (zum Beispiel über ein Admin-Dashboard).

Guthaben hinzufügen

# Local Development
npm run add-balance

# Docker (default setup)
docker compose exec api npm run add-balance

# Docker (deployment setup)
docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run add-balance"
# Local Development
npm run add-balance [email protected] 1000

# Docker (default setup)
docker compose exec api npm run add-balance [email protected] 1000

# Docker (deployment setup)
docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run add-balance [email protected] 1000"

Guthaben festlegen

Zusätzlich können Sie ein Guthaben für einen Benutzer festlegen. Ein bestehendes Guthaben wird durch das neue Guthaben überschrieben.

# Local Development
npm run set-balance

# Docker (default setup)
docker compose exec api npm run set-balance

# Docker (deployment setup)
docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run set-balance"
# Local Development
npm run set-balance [email protected] 1000

# Docker (default setup)
docker compose exec api npm run set-balance [email protected] 1000

# Docker (deployment setup)
docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run set-balance [email protected] 1000"

Auflistung der Guthaben

# Local Development
npm run list-balances

# Docker (default setup)
docker compose exec api npm run list-balances

# Docker (deployment setup)
docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run list-balances"

Dies funktioniert gut, um die eigene Nutzung für den persönlichen Gebrauch zu verfolgen; 1000 Credits = $0,001 (1 Mill USD)

Hinweise zur Token-Nutzung und zum Guthaben

  • Wenn die Zusammenfassung aktiviert ist, wird Ihnen das Senden einer API-Anfrage verwehrt, falls die Kosten für den zu zusammenfassenden Inhalt zuzüglich Ihres Nachrichten-Payloads das aktuelle Guthaben übersteigen.
  • Die Nutzung des Subagent-Child-Run-Modells wird der übergeordneten Transaktion zugerechnet, sodass die Ausführungen des übergeordneten Agenten die delegierte Nutzung in ihren Gesamtwerten enthalten.
  • Das Zählen von Prompt-Tokens ist für OpenAI-Aufrufe sehr genau, für Plugins jedoch nicht zu 100 % (aufgrund von Function Calling). Es ist sehr nah dran und konservativ, was bedeutet, dass die Zählung um 2-5 Tokens höher ausfallen kann.
  • Das System erlaubt Defizite, die durch die Completion-Tokens entstehen. Es prüft lediglich, ob Sie über genügend Guthaben für die Prompt-Tokens verfügen, und ist bei der Completion recht nachsichtig. Die untenstehende Grafik erläutert die Logik.
  • Davon abgesehen werden Plugins bei jedem Generierungsschritt überprüft, da der Prozess mit mehreren API-Aufrufen arbeitet. Alles, was das LLM seit der ursprünglichen Benutzeranfrage generiert hat, wird dem Benutzer in der Fehlermeldung wie unten dargestellt mitgeteilt.
  • Es gibt einen 150-Token-Puffer für die Titelvergabe, da dies ein zweistufiger Prozess ist, was durchschnittlich etwa 200 Tokens insgesamt ergibt. Bei unzureichendem Guthaben wird die Titelvergabe abgebrochen, bevor Kosten entstehen, und es wird kein Fehler ausgegeben.

image

Weitere Details

Quelle: LibreChat/discussions/1640

"rawAmount": -000, // was ist das?

Rohanzahl der Token, wie sie vom Tokenizer-Algorithmus gezählt werden.

"tokenValue": -00000, // was ist das?

Wert der Token-Credits. 1000 Credits = $0,001 (1 Mill. USD)

"rate": 00, // was ist das?

Die Rate, mit der Token als Credits berechnet werden.

Zum Beispiel hat gpt-3.5-turbo-1106 eine Rate von 1 für Benutzer-Prompts (Eingabe) und 2 für Vervollständigungen (Ausgabe)

ModellEingabeAusgabe
gpt-3.5-turbo-1106$0.0010 / 1K tokens$0.0020 / 1K tokens

Angesichts des bereitgestellten Beispiels:

    "rawAmount": -137
    "tokenValue": -205.5
    "rate": 1.5
\text{Token Value} = (\text{Raw Amount of Tokens}) \times (\text{Rate})
137 \times 1.5 = 205.5

Und um den tatsächlichen USD-Betrag basierend auf dem Token-Wert zu erhalten:

\frac{\text{Token Value}}{1,000,000} = \left(\frac{\text{Raw Amount of Tokens} \times \text{Rate}}{1,000,000}\right)
\frac{205.5}{1,000,000} = \$0.0002055 \text{ USD}

Für benutzerdefinierte endpoints bevorzugen Sie endpoints.custom[].tokenConfig in librechat.yaml für modellbezogene Raten und Kontextfenster.

Vorschau

image

image

Zusätzliche Hinweise

  • Wenn die Zusammenfassung aktiviert ist, werden API-Anfragen blockiert, wenn die Kosten für den Inhalt zuzüglich der Nachrichten-Payload das aktuelle Guthaben übersteigen.
  • Das System ist bei Completion-Tokens nachsichtig und konzentriert sich für die Ausgleichsprüfungen primär auf Prompt-Tokens.
  • Ein Puffer für die Titelbildung (ca. 150 Token) wird hinzugefügt, um den zweistufigen Prozess zu berücksichtigen.
  • Token-Credits entsprechen einem Geldwert (z. B. 1000 Credits = 0,001 USD).

Für weitere Details und Anpassungen lesen Sie bitte die LibreChat Documentation.

Wie finden Sie diese Anleitung?