Utilizzo dei token
Questa sezione spiega come monitorare e controllare l'utilizzo dei token in LibreChat. Imparerai a visualizzare il contesto e i costi, configurare le transazioni, abilitare i saldi utente e aggiungere crediti a un account.
Intro
A partire dalla v0.6.0, LibreChat traccia accuratamente l'utilizzo dei token per gli endpoint supportati. Tutte le transazioni di token vengono memorizzate nella collezione "Transactions" nel tuo database. Le versioni attuali mostrano anche l'utilizzo del contesto in tempo reale e il costo nell'interfaccia utente della conversazione, quando abilitato.
Attualmente, è possibile limitare l'utilizzo dei token da parte degli utenti abilitando i saldi utente. Invece di configurare i limiti di credito dei token tramite variabili d'ambiente, ora è possibile impostare queste opzioni nel file librechat.yaml sotto la sezione balance. I valori dei costi sono nascosti per impostazione predefinita e devono essere abilitati con interface.contextCost.
Visualizzazione dell'utilizzo del contesto e dei costi
LibreChat mostra un indicatore di contesto mentre una conversazione è in corso. L'indicatore si aggiorna in base agli eventi di utilizzo durante lo streaming e può mostrare:
- Utilizzo attuale del prompt/contesto rispetto alla finestra di contesto del modello
- Un riepilogo al passaggio del mouse per dettagli rapidi su token e costi
- Una suddivisione cliccabile per l'utilizzo dei token di prompt, completamento, cache, totali di ramo e totali di conversazione
I dettagli sull'utilizzo vengono salvati insieme ai messaggi e alle conversazioni. Le chat riaperte conservano i dettagli sul ramo e sull'utilizzo/costo totale invece di basarsi solo sulla sessione di streaming attiva.
Quando la riassunzione compatta una lunga conversazione, LibreChat registra la baseline del riassunto compattato e conta solo i turni successivi al riassunto per il misuratore del contesto. I totali di utilizzo e costo includono comunque la spesa totale del ramo.
Gli amministratori possono controllare queste visualizzazioni in librechat.yaml:
interface:
contextUsage: true
contextCost: true
currency:
code: EUR
rate: 0.92contextUsagecontrolla se gli utenti visualizzano la finestra di contesto e l'indicatore di utilizzo dei token.contextCostcontrolla se gli utenti visualizzano i valori di costo nei dettagli di utilizzo. Il valore predefinito èfalse; impostalo sutrueper mostrare i costi.currencyconverte i costi visualizzati in USD utilizzando un moltiplicatore statico quando la visualizzazione dei costi è abilitata. Le transazioni vengono comunque registrate utilizzando la contabilità dei crediti token di LibreChat.
Configurazione Token per Endpoint Personalizzati
Per gli endpoint personalizzati, definisci le finestre di contesto specifiche per il modello e le tariffe per milione di token con 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: 128000prompt, completion e context sono obbligatori per ogni voce di modello. cacheRead e cacheWrite possono essere aggiunti per i provider che riportano l'utilizzo dell'input memorizzato nella cache. Per gli Agent che utilizzano più endpoint, LibreChat utilizza la configurazione dei token dell'endpoint/modello corrispondente durante la registrazione dell'utilizzo e dei costi.
La configurazione del token recuperata viene memorizzata nella cache con ambito utente quando i modelli, le chiavi, gli URL o le intestazioni degli endpoint possono variare in base al contesto della richiesta, in modo che i prezzi e le finestre di contesto degli endpoint personalizzati isolati rimangano separati.
Configurazione delle transazioni
Il sistema di transazioni controlla se i record di utilizzo dei token vengono salvati nel database. Questo può essere configurato separatamente dal sistema di bilancio.
Impostazioni transazione
version: 1.2.9
# Transaction settings
# Controls whether to save transaction records to the database
# Default is true (enabled)
transactions:
enabled: falseImportante: Quando balance.enabled è impostato su true, la registrazione delle transazioni viene abilitata automaticamente indipendentemente dall'impostazione transactions.enabled. Ciò garantisce che il monitoraggio del saldo funzioni correttamente mantenendo un registro completo di tutto l'utilizzo dei token.
Consulta la pagina Transactions Configuration per maggiori dettagli.
Configurazione del bilanciamento
Il sistema di bilancio in LibreChat consente agli amministratori di configurare come vengono gestiti i saldi dei crediti dei token per gli utenti. Tutte le impostazioni del bilancio sono ora gestite nella configurazione YAML sotto l'oggetto balance.
Nota: Questo sostituisce le precedenti variabili d'ambiente (CHECK_BALANCE e START_BALANCE) e fornisce un modo più strutturato per gestire i saldi degli utenti.
Impostazioni complete del saldo
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 refillSpiegazione delle impostazioni del bilanciamento
-
enabled: Attiva il monitoraggio dei crediti dei token e la gestione del saldo per gli utenti. Quando impostato su
true, il sistema terrà traccia dell'utilizzo dei token e applicherà i limiti di saldo. -
startBalance: Specifica il numero iniziale di token accreditati a un utente al momento della registrazione. Questo è il saldo iniziale per tutti i nuovi utenti.
-
autoRefillEnabled: Determina se il ripristino automatico dei crediti token è abilitato. Quando impostato su
true, il sistema aggiungerà automaticamente crediti ai saldi degli utenti in base all'intervallo di ripristino. -
refillIntervalValue: Specifica il valore numerico per l'intervallo in cui i crediti di token vengono ricaricati automaticamente. Funziona insieme a
refillIntervalUnit. -
refillIntervalUnit: Specifica l'unità di tempo per l'intervallo di ricarica. I valori supportati includono "seconds", "minutes", "hours", "days", "weeks" e "months".
-
refillAmount: Specifica il numero di token da aggiungere al saldo dell'utente durante ogni ricarica automatica.
Consulta la pagina Balance Configuration per ulteriori dettagli.
Come funziona il riempimento automatico (Auto-Refill)
Quando il saldo di un utente viene monitorato e autoRefill è abilitato, il sistema aggiungerà automaticamente crediti al saldo solo quando è trascorso l'intervallo di tempo specificato dall'ultimo rifornimento. Ciò si ottiene confrontando la data corrente con la data lastRefill più l'intervallo specificato.
Processo di Auto-Ricarica
- Quando un utente tenta di consumare token, il sistema verifica se il saldo attuale è sufficiente
- Se il saldo dovesse scendere a zero o al di sotto dopo la transazione, il sistema controlla se il ricaricamento automatico è abilitato
- Se l'auto-refill è abilitato, il sistema controlla se l'intervallo di tempo dall'ultimo refill è trascorso:
- Il sistema confronta la data corrente con
lastRefill + refillInterval - Se l'intervallo è trascorso, i token vengono aggiunti al saldo dell'utente
- La data
lastRefillviene aggiornata alla data corrente
- Il sistema confronta la data corrente con
- La transazione procede se il saldo è sufficiente (sia inizialmente che dopo una ricarica)
Unità di tempo supportate
Il refillIntervalUnit può essere impostato su uno dei seguenti valori:
- secondi
- minuti
- ore
- giorni
- settimane
- mesi
Ad esempio, se refillIntervalValue è impostato su 30 e refillIntervalUnit è days, il sistema aggiungerà refillAmount token al saldo dell'utente solo se sono trascorsi 30 giorni dall'ultimo rifornimento.
Sincronizzazione del saldo
Quando un utente effettua l'accesso, il sistema sincronizza automaticamente le sue impostazioni di saldo con la configurazione globale del saldo corrente. Ciò garantisce che qualsiasi modifica alla configurazione del saldo venga applicata a tutti gli utenti.
Il processo di sincronizzazione:
- Controlla se l'utente ha un record del saldo
- Se non esiste alcun record, ne crea uno con il
startBalancecorrente - Aggiorna le impostazioni di ricarica automatica dell'utente per farle corrispondere alla configurazione globale
- Assicura che l'intervallo di ricarica e l'importo dell'utente corrispondano alle impostazioni globali
Gestione dei saldi dei token
Puoi aggiungere o impostare manualmente i saldi degli utenti. Questo è particolarmente utile durante lo sviluppo o se prevedi di costruire un sistema completo di accumulo del saldo in futuro (ad esempio, tramite una dashboard di amministrazione).
Aggiunta di saldi
# 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"Impostazione dei saldi
Inoltre, è possibile impostare un saldo per un utente. Un saldo esistente verrà sovrascritto dal nuovo 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"Elenco dei 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"Questo funziona bene per monitorare il proprio utilizzo per uso personale; 1000 crediti = $0,001 (1 mill di USD)
Note sull'utilizzo dei token e sul saldo
- Con la funzione di riepilogo abilitata, ti verrà impedito di effettuare una richiesta API se il costo del contenuto che devi riassumere + il payload dei tuoi messaggi supera il saldo corrente.
- L'utilizzo del modello durante l'esecuzione di un subagent viene registrato nella transazione principale, in modo che le esecuzioni dell'agente principale includano l'utilizzo delegato nei loro totali.
- Il conteggio dei token dei prompt è molto accurato per le chiamate OpenAI, ma non al 100% per i plugin (a causa delle chiamate a funzione). È comunque molto vicino e conservativo, il che significa che il conteggio potrebbe essere superiore di 2-5 token.
- Il sistema consente i deficit maturati dai token di completamento. Verifica solo se si dispone di una quantità sufficiente per i token del prompt ed è piuttosto permissivo con il completamento. Il grafico sottostante illustra la logica.
- Detto questo, i plugin vengono controllati a ogni passaggio di generazione, poiché il processo funziona con chiamate API multiple. Tutto ciò che l'LLM ha generato dal prompt iniziale dell'utente viene condiviso con l'utente nel messaggio di errore, come mostrato di seguito.
- C'è un buffer di 150 token per la titolazione, dato che si tratta di un processo in 2 passaggi, che ammonta a circa 200 token totali. In caso di fondi insufficienti, la titolazione viene annullata prima che avvenga qualsiasi spesa e non viene generato alcun errore.
Ulteriori dettagli
fonte: LibreChat/discussions/1640
"rawAmount": -000, // cos'è questo?
Quantità grezza di token calcolata secondo l'algoritmo del tokenizer.
"tokenValue": -00000, // cos'è questo?
Valore dei crediti token. 1000 crediti = $0.001 (1 mill USD)
"rate": 00, // cos'è questo?
La velocità con cui i token vengono addebitati come crediti.
Ad esempio, gpt-3.5-turbo-1106 ha un tasso di 1 per il prompt dell'utente (input) e di 2 per il completamento (output)
| Modello | Input | Output |
|---|---|---|
| gpt-3.5-turbo-1106 | $0.0010 / 1K token | $0.0020 / 1K token |
Dato l'esempio fornito:
"rawAmount": -137
"tokenValue": -205.5
"rate": 1.5\text{Token Value} = (\text{Raw Amount of Tokens}) \times (\text{Rate})137 \times 1.5 = 205.5E per ottenere l'importo reale della spesa in USD basato sul Valore del Token:
\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}Per gli endpoint personalizzati, preferisci endpoints.custom[].tokenConfig in librechat.yaml per le tariffe e le finestre di contesto specifiche per ogni modello.
Anteprima
Note aggiuntive
- Con la funzione di riepilogo (summarization) abilitata, le richieste API vengono bloccate se il costo del contenuto più il payload dei messaggi supera il saldo corrente.
- Il sistema è tollerante con i token di completamento, concentrandosi principalmente sui token di prompt per le verifiche del saldo.
- Viene aggiunto un buffer per la titolazione (circa 150 token) per tenere conto del processo in due fasi.
- I crediti token si traducono in valore monetario (ad esempio, 1000 crediti = $0,001 USD).
Per ulteriori dettagli e personalizzazioni, fare riferimento alla Documentazione di LibreChat.
Com’è questa guida?
Banner
Mostra annunci e avvisi ai tuoi utenti
API RAG
Configura l'API di Retrieval-Augmented Generation (RAG) per l'indicizzazione e il recupero dei documenti utilizzando Langchain e FastAPI. Questa API si integra con LibreChat per fornire risposte basate sul contesto a partire dai file caricati dall'utente.