feat: Implement Token Rates Configuration Loader and Update Config Types

This commit is contained in:
Ruben Talstra 2025-02-26 17:23:21 +01:00
parent e14df5956a
commit 7dfb386f5a
No known key found for this signature in database
GPG key ID: 2A5A7174A60F3BEA
3 changed files with 78 additions and 1 deletions

View file

@ -0,0 +1,27 @@
const { removeNullishValues } = require('librechat-data-provider');
const { logger } = require('~/config');
/**
* Loads custom token rates from the user's YAML config, merging with default token rates if available.
*
* @param {TCustomConfig | undefined} config - The loaded custom configuration.
* @param {TConfigDefaults} [configDefaults] - Optional default configuration values.
* @returns {TCustomConfig['tokenRates']} - The final token rates configuration.
*/
function loadTokenRatesConfig(config, configDefaults) {
const userTokenRates = removeNullishValues(config?.tokenRates ?? {});
if (!configDefaults?.tokenRates) {
logger.info(`User tokenRates configuration:\n${JSON.stringify(userTokenRates, null, 2)}`);
return userTokenRates;
}
/** @type {TCustomConfig['tokenRates']} */
const defaultTokenRates = removeNullishValues(configDefaults.tokenRates);
const merged = { ...defaultTokenRates, ...userTokenRates };
logger.info(`Merged tokenRates configuration:\n${JSON.stringify(merged, null, 2)}`);
return merged;
}
module.exports = { loadTokenRatesConfig };