| const { logger } = require('@librechat/data-schemas'); |
| const { CacheKeys } = require('librechat-data-provider'); |
| const { loadDefaultModels, loadConfigModels } = require('~/server/services/Config'); |
| const { getLogStores } = require('~/cache'); |
|
|
| |
| |
| |
| |
| 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; |
| }; |
|
|
| |
| |
| |
| |
| |
| 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 }; |
|
|