Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack šŸŽ‰ Learn more
LibreChat

Tokengebruik

Dit behandelt hoe je tokengebruik in LibreChat kunt bijhouden en beheren. Je leert hoe je context en kosten bekijkt, transacties configureert, gebruikerssaldi inschakelt en credits toevoegt aan een account.

Intro

Vanaf v0.6.0 houdt LibreChat nauwkeurig het tokengebruik bij voor ondersteunde endpoints. Alle transacties met tokens worden opgeslagen in de "Transactions" collectie in uw database. Huidige releases tonen ook real-time contextgebruik en kosten in de gespreks-UI wanneer dit is ingeschakeld.

Momenteel kun je het tokengebruik van gebruikers beperken door gebruikerssaldi in te schakelen. In plaats van token-kredietlimieten te configureren via omgevingsvariabelen, stel je deze opties nu in je librechat.yaml bestand in onder de balance sectie. Kostenwaarden zijn standaard verborgen en moeten worden ingeschakeld met interface.contextCost.

Contextgebruik en kosten bekijken

LibreChat toont een contextmeter terwijl een gesprek gaande is. De meter wordt bijgewerkt op basis van gebruiksgebeurtenissen tijdens het streamen en kan het volgende tonen:

  • Huidig gebruik van prompt/context ten opzichte van het contextvenster van het model
  • Een hover-samenvatting voor snelle token- en kostendetails
  • Een doorklikoverzicht voor prompt-, voltooiings-, gecachte token-gebruik, vertakkingstotalen en gesprekstotalen

Gebruiksgegevens worden opgeslagen bij berichten en gesprekken. Heropende chats behouden de details van vertakkingen en het totale gebruik/de kosten, in plaats van alleen te vertrouwen op de actieve streamingsessie.

Wanneer samenvatting een lang gesprek comprimeert, legt LibreChat de gecomprimeerde samenvattingsbasislijn vast en telt voor de contextmeter alleen de beurten na de samenvatting die daarop volgen. De totalen voor gebruik en kosten bevatten nog steeds de volledige uitgaven van de vertakking.

Admins kunnen deze weergaven beheren in librechat.yaml:

interface:
  contextUsage: true
  contextCost: true
  currency:
    code: EUR
    rate: 0.92
  • contextUsage bepaalt of gebruikers de contextvenster- en tokengebruiksindicator zien.
  • contextCost bepaalt of gebruikers kostenwaarden zien in de gebruiksdetails. De standaardwaarde is false; zet deze op true om kosten weer te geven.
  • currency converteert weergegeven USD-kosten met behulp van een statische vermenigvuldiger wanneer kostenweergave is ingeschakeld. Transacties worden nog steeds geregistreerd met behulp van de token-kredietboekhouding van LibreChat.

Aangepaste Endpoint Token Config

Voor custom endpoints definieert u modelspecifieke contextvensters en tarieven per miljoen tokens met 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 en context zijn vereist voor elk model-item. cacheRead en cacheWrite kunnen worden toegevoegd voor providers die het gebruik van gecachte invoer rapporteren. Voor Agents die meerdere endpoints gebruiken, gebruikt LibreChat de bijbehorende endpoint/model token-configuratie bij het registreren van gebruik en kosten.

De opgehaalde tokenconfiguratie wordt in de cache opgeslagen met gebruikersbereik wanneer endpoint-modellen, sleutels, URL's of headers per verzoekcontext kunnen variëren, zodat geïsoleerde aangepaste endpoint-prijzen en contextvensters gescheiden blijven.

Transactieconfiguratie

Het transactiesysteem bepaalt of records van tokengebruik worden opgeslagen in de database. Dit kan afzonderlijk van het balancesysteem worden geconfigureerd.

Transactie-instellingen

version: 1.2.9

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

Belangrijk: Wanneer balance.enabled is ingesteld op true, wordt het vastleggen van transacties automatisch ingeschakeld, ongeacht de instelling van transactions.enabled. Dit zorgt ervoor dat het bijhouden van het saldo correct functioneert door een volledig overzicht van al het tokengebruik bij te houden.

Bekijk de Transactions Configuration pagina voor meer details.

Balansconfiguratie

Het balanssysteem in LibreChat stelt beheerders in staat om te configureren hoe token-kredietsaldi voor gebruikers worden beheerd. Alle balansinstellingen worden nu beheerd in uw YAML-configuratie onder het balance object.

Let op: Dit vervangt de voorgaande omgevingsvariabelen (CHECK_BALANCE en START_BALANCE) en biedt een meer gestructureerde manier om gebruikerssaldi te beheren.

Volledige balansinstellingen

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

Uitleg over balansinstellingen

  • enabled: Activeert het bijhouden van token-tegoeden en balansbeheer voor gebruikers. Wanneer ingesteld op true, zal het systeem het tokengebruik bijhouden en balanslimieten afdwingen.

  • startBalance: Specificeert het initiĆ«le aantal tokens dat bij registratie aan een gebruiker wordt toegekend. Dit is het startsaldo voor alle nieuwe gebruikers.

  • autoRefillEnabled: Bepaalt of het automatisch aanvullen van token-credits is ingeschakeld. Wanneer dit is ingesteld op true, zal het systeem automatisch credits toevoegen aan gebruikerssaldi op basis van het interval voor aanvulling.

  • refillIntervalValue: Specificeert de numerieke waarde voor het interval waarna token-credits automatisch worden aangevuld. Werkt in combinatie met refillIntervalUnit.

  • refillIntervalUnit: Specificeert de tijdseenheid voor het bijvulinterval. Ondersteunde waarden zijn onder andere "seconds", "minutes", "hours", "days", "weeks" en "months".

  • refillAmount: Specificeert het aantal tokens dat tijdens elke automatische aanvulling aan het saldo van de gebruiker wordt toegevoegd.

Bekijk de Balance Configuration pagina voor meer details.

Hoe Auto-Refill werkt

Wanneer het saldo van een gebruiker wordt bijgehouden en autoRefill is ingeschakeld, voegt het systeem alleen automatisch credits toe aan het saldo wanneer het opgegeven tijdsinterval is verstreken sinds de laatste aanvulling. Dit wordt bereikt door de huidige datum te vergelijken met de lastRefill datum plus het opgegeven interval.

Auto-Refill Proces

  1. Wanneer een gebruiker tokens probeert te verbruiken, controleert het systeem of het huidige saldo toereikend is.
  2. Als het saldo na de transactie tot nul of lager zou dalen, controleert het systeem of automatisch aanvullen is ingeschakeld
  3. Als auto-refill is ingeschakeld, controleert het systeem of het tijdsinterval sinds de laatste refill is verstreken:
    • Het systeem vergelijkt de huidige datum met lastRefill + refillInterval
    • Als het interval is verstreken, worden er tokens toegevoegd aan het saldo van de gebruiker
    • De lastRefill datum wordt bijgewerkt naar de huidige datum
  4. De transactie gaat door als het saldo voldoende is (hetzij oorspronkelijk, hetzij na opwaardering)

Ondersteunde tijdseenheden

De refillIntervalUnit kan worden ingesteld op een van de volgende waarden:

  • seconden
  • minuten
  • uren
  • dagen
  • weken
  • maanden

Bijvoorbeeld, als refillIntervalValue is ingesteld op 30 en refillIntervalUnit is days, zal het systeem alleen refillAmount tokens toevoegen aan het saldo van de gebruiker als er 30 dagen zijn verstreken sinds de laatste aanvulling.

Balanssynchronisatie

Wanneer een gebruiker inlogt, synchroniseert het systeem automatisch hun balansinstellingen met de huidige globale balansconfiguratie. Dit zorgt ervoor dat eventuele wijzigingen in de balansconfiguratie worden toegepast op alle gebruikers.

Het synchronisatieproces:

  1. Controleert of de gebruiker een saldorecord heeft
  2. Als er geen record bestaat, wordt er een aangemaakt met de huidige startBalance
  3. Werkt de instellingen voor automatisch aanvullen van de gebruiker bij zodat deze overeenkomen met de globale configuratie
  4. Zorgt ervoor dat het navulinterval en het bedrag van de gebruiker overeenkomen met de globale instellingen

Token-saldi beheren

Je kunt gebruikerssaldi handmatig toevoegen of instellen. Dit is vooral nuttig tijdens de ontwikkeling of als je van plan bent om in de toekomst een volledig systeem voor het opbouwen van saldo te bouwen (bijvoorbeeld via een beheerdersdashboard).

Saldi toevoegen

# 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"

Saldi instellen

Daarnaast kun je een saldo instellen voor een gebruiker. Een bestaand saldo wordt overschreven door het nieuwe saldo.

# 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"

Overzicht van saldi

# 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"

Dit werkt goed om je eigen verbruik voor persoonlijk gebruik bij te houden; 1000 credits = $0,001 (1 mill USD)

Opmerkingen over tokengebruik en saldo

  • Wanneer samenvatten is ingeschakeld, wordt u geblokkeerd voor het maken van een API-verzoek als de kosten van de inhoud die u moet samenvatten + uw berichten-payload het huidige saldo overschrijden.
  • Het gebruik van het subagent child-run model wordt geregistreerd bij de bovenliggende transactie, zodat de runs van de bovenliggende agent het gedelegeerde gebruik in hun totalen opnemen.
  • Het tellen van prompt-tokens is zeer nauwkeurig voor OpenAI-aanroepen, maar niet 100% voor plugins (vanwege function calling). Het is erg accuraat en conservatief, wat betekent dat de telling 2-5 tokens hoger kan uitvallen.
  • Het systeem staat tekorten toe die worden veroorzaakt door de completion tokens. Het controleert alleen of je genoeg hebt voor de prompt tokens, en is vrij coulant met de completion. De onderstaande grafiek geeft de logica in detail weer.
  • Dat gezegd hebbende, worden plugins bij elke generatiestap gecontroleerd, aangezien het proces met meerdere API-aanroepen werkt. Alles wat de LLM sinds de initiĆ«le gebruikersprompt heeft gegenereerd, wordt gedeeld met de gebruiker in het foutbericht, zoals hieronder te zien is.
  • Er is een buffer van 150 tokens voor het titelen, aangezien dit een proces in 2 stappen is, wat gemiddeld neerkomt op ongeveer 200 tokens in totaal. In het geval van onvoldoende saldo wordt het titelen geannuleerd voordat er kosten worden gemaakt en wordt er geen foutmelding gegeven.

image

Meer details

bron: LibreChat/discussions/1640

"rawAmount": -000, // wat is dit?

Ruw aantal tokens zoals geteld volgens het tokenizer-algoritme.

"tokenValue": -00000, // wat is dit?

Token credits waarde. 1000 credits = $0.001 (1 mill USD)

"rate": 00, // wat is dit?

De snelheid waarmee tokens als credits in rekening worden gebracht.

Bijvoorbeeld, gpt-3.5-turbo-1106 heeft een ratio van 1 voor de gebruikersprompt (input) en 2 voor de voltooiing (output)

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

Gezien het verstrekte voorbeeld:

    "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

En om het werkelijke bedrag aan USD-uitgaven te krijgen op basis van Token Value:

\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}

Voor custom endpoints heeft endpoints.custom[].tokenConfig in librechat.yaml de voorkeur voor tarieven en contextvensters per model.

Voorbeeld

image

image

Aanvullende opmerkingen

  • Wanneer summarization is ingeschakeld, worden API-verzoeken geblokkeerd als de kosten van de inhoud plus de messages payload het huidige saldo overschrijden.
  • Het systeem is soepel met completion tokens en richt zich voor balanscontroles primair op prompt tokens.
  • Er wordt een buffer toegevoegd voor het titelen (ongeveer 150 tokens) om rekening te houden met het proces in twee stappen.
  • Token-credits vertalen zich naar een geldelijke waarde (bijv. 1000 credits = $0,001 USD).

Voor meer details en aanpassingen, raadpleeg de LibreChat Documentation.

Hoe is deze gids?