const { CacheKeys } = require('librechat-data-provider'); const { loadDefaultModels, loadConfigModels } = require('~/server/services/Config'); const { getLogStores } = require('~/cache'); const { logger } = require('~/config'); /** * @param {ServerRequest} req */ const getModelsConfig = async (req) => { const cache = getLogStores(CacheKeys.CONFIG_STORE); let modelsConfig = await cache.get(CacheKeys.MODELS_CONFIG); if (!modelsConfig) { modelsConfig = await loadModels(req); } return modelsConfig; }; /** * Loads the models from the config. * @param {ServerRequest} req - The Express request object. * @returns {Promise} The models config. */ async function loadModels(req) { const cache = getLogStores(CacheKeys.CONFIG_STORE); const cachedModelsConfig = await cache.get(CacheKeys.MODELS_CONFIG); if (cachedModelsConfig) { return cachedModelsConfig; } const defaultModelsConfig = await loadDefaultModels(req); const customModelsConfig = await loadConfigModels(req); const modelConfig = { ...defaultModelsConfig, ...customModelsConfig }; await cache.set(CacheKeys.MODELS_CONFIG, modelConfig); return modelConfig; } async function modelController(req, res) { try { const modelConfig = await loadModels(req); res.send(modelConfig); } catch (error) { logger.error('Error fetching models:', error); res.status(500).send({ error: error.message }); } } module.exports = { modelController, loadModels, getModelsConfig };