Uso de tokens
Esto cubre cómo realizar un seguimiento y controlar el uso de tokens en LibreChat. Aprenderá a ver el contexto y el costo, configurar transacciones, habilitar saldos de usuario y agregar créditos a una cuenta.
Introducción
A partir de v0.6.0, LibreChat rastrea con precisión el uso de tokens para los endpoint compatibles. Todas las transacciones de tokens se almacenan en la colección "Transactions" de su base de datos. Las versiones actuales también muestran el uso de contexto en tiempo real y el costo en la interfaz de usuario de la conversación cuando está habilitado.
Actualmente, puede limitar el uso de tokens por parte del usuario habilitando los saldos de usuario. En lugar de configurar los límites de crédito de tokens mediante variables de entorno, ahora debe establecer estas opciones en su archivo librechat.yaml bajo la sección balance. Los valores de costo están ocultos de forma predeterminada y deben habilitarse con interface.contextCost.
Visualización del uso de contexto y costos
LibreChat muestra un medidor de contexto mientras se ejecuta una conversación. El medidor se actualiza a partir de los eventos de uso durante el streaming y puede mostrar:
- Uso actual de prompt/contexto frente a la ventana de contexto del modelo
- Un resumen al pasar el cursor para obtener detalles rápidos de tokens y costos
- Un desglose detallado mediante clics para el uso de tokens de prompt, finalización y caché, totales de ramas y totales de conversación
Los desgloses de uso se guardan junto con los mensajes y las conversaciones. Los chats reabiertos conservan los detalles de la rama y el uso/costo total en lugar de depender únicamente de la sesión de streaming activa.
Cuando la función de resumen compacta una conversación larga, LibreChat registra la línea base del resumen compactado y cuenta únicamente los turnos posteriores al resumen sobre esta para el medidor de contexto. Los totales de uso y costo aún incluyen el gasto total de la rama completa.
Los administradores pueden controlar estas visualizaciones en librechat.yaml:
interface:
contextUsage: true
contextCost: true
currency:
code: EUR
rate: 0.92contextUsagecontrola si los usuarios ven la ventana de contexto y el medidor de uso de tokens.contextCostcontrola si los usuarios ven los valores de costo en los detalles de uso. Su valor predeterminado esfalse; establézcalo entruepara mostrar los costos.currencyconvierte los costos en USD mostrados utilizando un multiplicador estático cuando la visualización de costos está habilitada. Las transacciones se siguen registrando utilizando la contabilidad de créditos de tokens de LibreChat.
Configuración de Token para Endpoint Personalizado
Para endpoints personalizados, defina las ventanas de contexto específicas del modelo y las tarifas por millón de tokens 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 y context son obligatorios para cada entrada de modelo. cacheRead y cacheWrite pueden añadirse para proveedores que reportan el uso de entrada en caché. Para los Agentes que utilizan múltiples endpoints, LibreChat utiliza la configuración de tokens del endpoint/modelo correspondiente al registrar el uso y el costo.
La configuración de token obtenida se almacena en caché con ámbito de usuario cuando los modelos, claves, URLs o encabezados de endpoint pueden variar según el contexto de la solicitud, de modo que los precios y las ventanas de contexto de los endpoints personalizados aislados permanezcan separados.
Configuración de transacciones
El sistema de transacciones controla si los registros de uso de tokens se guardan en la base de datos. Esto se puede configurar por separado del sistema de saldo.
Configuración de transacciones
version: 1.2.9
# Transaction settings
# Controls whether to save transaction records to the database
# Default is true (enabled)
transactions:
enabled: falseImportante: Cuando balance.enabled está configurado en true, el registro de transacciones se habilita automáticamente independientemente de la configuración de transactions.enabled. Esto garantiza que el seguimiento del saldo funcione correctamente al mantener un registro completo de todo el uso de tokens.
Consulta la página de Configuración de transacciones para obtener más detalles.
Configuración de Balance
El sistema de balance en LibreChat permite a los administradores configurar cómo se gestionan los saldos de crédito de tokens para los usuarios. Todos los ajustes de balance se gestionan ahora en su configuración YAML bajo el objeto balance.
Nota: Esto reemplaza las variables de entorno anteriores (CHECK_BALANCE y START_BALANCE) y proporciona una forma más estructurada de gestionar los saldos de los usuarios.
Configuración completa del balance
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 refillExplicación de los ajustes de balance
-
enabled: Activa el seguimiento de créditos de tokens y la gestión de saldo para los usuarios. Cuando se establece en
true, el sistema realizará un seguimiento del uso de tokens y aplicará límites de saldo. -
startBalance: Especifica el número inicial de tokens acreditados a un usuario tras su registro. Este es el saldo inicial para todos los nuevos usuarios.
-
autoRefillEnabled: Determina si la recarga automática de créditos de tokens está habilitada. Cuando se establece en
true, el sistema añadirá automáticamente créditos a los saldos de los usuarios según el intervalo de recarga. -
refillIntervalValue: Especifica el valor numérico para el intervalo en el que los créditos de tokens se recargan automáticamente. Funciona en conjunto con
refillIntervalUnit. -
refillIntervalUnit: Especifica la unidad de tiempo para el intervalo de recarga. Los valores admitidos incluyen "seconds", "minutes", "hours", "days", "weeks" y "months".
-
refillAmount: Especifica la cantidad de tokens que se añadirán al saldo del usuario durante cada recarga automática.
Consulta la página de Balance Configuration para obtener más detalles.
Cómo funciona el Auto-Refill
Cuando se realiza un seguimiento del saldo de un usuario y autoRefill está habilitado, el sistema añadirá automáticamente créditos al saldo solo cuando haya transcurrido el intervalo de tiempo especificado desde la última recarga. Esto se logra comparando la fecha actual con la fecha de lastRefill más el intervalo especificado.
Proceso de autorrelleno
- Cuando un usuario intenta gastar tokens, el sistema verifica si el saldo actual es suficiente
- Si el saldo cayera a cero o menos después de la transacción, el sistema verifica si la recarga automática está habilitada
- Si auto-refill está habilitado, el sistema verifica si ha transcurrido el intervalo de tiempo desde la última recarga:
- El sistema compara la fecha actual con
lastRefill + refillInterval - Si el intervalo ha pasado, se añaden tokens al saldo del usuario
- La fecha
lastRefillse actualiza a la fecha actual
- El sistema compara la fecha actual con
- La transacción procede si el saldo es suficiente (ya sea originalmente o después de una recarga)
Unidades de tiempo admitidas
refillIntervalUnit se puede establecer en cualquiera de los siguientes valores:
- segundos
- minutos
- horas
- días
- semanas
- meses
Por ejemplo, si refillIntervalValue se establece en 30 y refillIntervalUnit es days, el sistema añadirá refillAmount tokens al saldo del usuario solo si han pasado 30 días desde la última recarga.
Sincronización de saldo
Cuando un usuario inicia sesión, el sistema sincroniza automáticamente su configuración de saldo con la configuración de saldo global actual. Esto garantiza que cualquier cambio en la configuración de saldo se aplique a todos los usuarios.
El proceso de sincronización:
- Comprueba si el usuario tiene un registro de saldo
- Si no existe ningún registro, crea uno con el
startBalanceactual - Actualiza la configuración de autorrelleno del usuario para que coincida con la configuración global
- Asegura que el intervalo de recarga y la cantidad del usuario coincidan con la configuración global
Gestión de saldos de tokens
Puede agregar o establecer manualmente los saldos de los usuarios. Esto es especialmente útil durante el desarrollo o si planea construir un sistema completo de acumulación de saldos en el futuro (por ejemplo, a través de un panel de administración).
Agregar saldos
# 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"Configuración de saldos
Además, puedes establecer un saldo para un usuario. Un saldo existente será sobrescrito por el nuevo 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"Listado de saldos
# 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"Esto funciona bien para realizar un seguimiento de su propio uso para uso personal; 1000 créditos = $0.001 (1 mil USD)
Notas sobre el uso de tokens y el saldo
- Con la función de resumen habilitada, se le impedirá realizar una solicitud a la API si el costo del contenido que necesita resumir + la carga útil de sus mensajes excede el saldo actual.
- El uso del modelo de ejecución secundaria de un subagente se registra en la transacción principal, por lo que las ejecuciones del agente principal incluyen el uso delegado en sus totales.
- El conteo de tokens de Prompt es muy preciso para las llamadas a OpenAI, pero no al 100% para los plugins (debido a la llamada de funciones). Es muy cercano y conservador, lo que significa que su conteo puede ser entre 2 y 5 tokens más alto.
- El sistema permite déficits incurridos por los tokens de finalización. Solo verifica si tienes suficientes para los tokens del prompt, y es bastante permisivo con la finalización. El siguiente gráfico detalla la lógica
- Dicho esto, los plugins se verifican en cada paso de generación, ya que el proceso funciona con múltiples llamadas a la API. Todo lo que el LLM haya generado desde el prompt inicial del usuario se comparte con el usuario en el mensaje de error, como se muestra a continuación.
- Existe un búfer de 150 tokens para la creación de títulos, ya que este es un proceso de 2 pasos, lo que promedia alrededor de 200 tokens en total. En caso de fondos insuficientes, la creación del título se cancela antes de que se produzca cualquier gasto y no se genera ningún error.
Más detalles
fuente: LibreChat/discussions/1640
"rawAmount": -000, // ¿qué es esto?
Cantidad bruta de tokens según lo contado por el algoritmo del tokenizador.
"tokenValue": -00000, // ¿qué es esto?
Valor de los créditos de token. 1000 créditos = $0.001 (1 mil USD)
"rate": 00, // ¿qué es esto?
La tasa a la que se cobran los tokens como créditos.
Por ejemplo, gpt-3.5-turbo-1106 tiene una tasa de 1 para el prompt del usuario (entrada) y de 2 para la finalización (salida)
| Modelo | Entrada | Salida |
|---|---|---|
| gpt-3.5-turbo-1106 | $0.0010 / 1K tokens | $0.0020 / 1K tokens |
Dado el ejemplo proporcionado:
"rawAmount": -137
"tokenValue": -205.5
"rate": 1.5\text{Token Value} = (\text{Raw Amount of Tokens}) \times (\text{Rate})137 \times 1.5 = 205.5Y para obtener la cantidad real de gasto en USD basada en el 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}Para endpoints personalizados, prefiera endpoints.custom[].tokenConfig en librechat.yaml para tasas y ventanas de contexto por modelo.
Vista previa
Notas adicionales
- Con la función de resumen habilitada, las solicitudes a la API se bloquean si el costo del contenido más la carga útil de los mensajes supera el saldo actual.
- El sistema es flexible con los tokens de finalización, centrándose principalmente en los tokens de prompt para las comprobaciones de saldo.
- Se añade un búfer para la titulación (aproximadamente 150 tokens) para tener en cuenta el proceso de dos pasos.
- Los créditos de tokens se traducen a valor monetario (por ejemplo, 1000 créditos = $0.001 USD).
Para más detalles y personalizaciones, por favor consulte la Documentación de LibreChat.
¿Qué te parece esta guía?
Banner
Muestra anuncios y avisos a tus usuarios
API de RAG
Configure la API de Generación Aumentada por Recuperación (RAG) para la indexación y recuperación de documentos utilizando Langchain y FastAPI. Esta API se integra con LibreChat para proporcionar respuestas basadas en el contexto a partir de archivos cargados por el usuario.